【提问】这个通讯录数据库怎么点击添加按钮老是报错呢?-综合问答论坛-aardio-阿甘软件

已解决这个通讯录数据库怎么点击添加按钮老是报错呢?

阿甘老师好!

这是一个通讯录小程序,借用了别人的代码修改的,想实现如下功能:1、点击添加按钮,能把输入的姓名、电话、日期保存到数据库,2、选择listview的任一行,点击删除按钮,就能把这一行从数据库里删除,3、在姓名、电话、日期的任一个文本框里,输入相应的数据,点击模糊查询,就能实现从数据库里查询到相应数据,并整行显示到listview里。

现在出现的问题是,点击添加按钮,就报错:

文件:[string”import win.ui;…”1
错误行号:#151
错误:table filea has no column named date
SQL错误或数据库不存在(SQLITE_ERROR)。

我是个新手小白,找不到原因,现贴上全部代码,敬请阿甘老师指点,叩谢了!

import win.ui;
import sqlite;
import win.ui.statusbar;
/*DSG{{*/
var winform = win.form(text="通信录";right=488;bottom=543;bgcolor=15780518;parent=...)
winform.add(
btnDelete={cls="button";text="删除";left=330;top=43;right=400;bottom=67;dr=1;dt=1;z=2};
btn_adddb={cls="button";text="添加";left=330;top=11;right=400;bottom=35;dr=1;dt=1;tabstop=1;z=7};
button={cls="button";text="模糊查询";left=409;top=11;right=479;bottom=35;dr=1;dt=1;z=8};
button2={cls="button";text="帮助";left=409;top=43;right=479;bottom=67;dr=1;dt=1;z=9};
ed_date={cls="edit";left=76;top=78;right=320;bottom=103;edge=1;z=11};
ed_name={cls="edit";left=75;top=11;right=325;bottom=35;dl=1;dr=1;dt=1;edge=1;tabstop=1;z=3};
ed_tel={cls="edit";left=75;top=44;right=325;bottom=68;dl=1;dr=1;dt=1;edge=1;tabstop=1;z=4};
listview={cls="listview";left=4;top=126;right=489;bottom=520;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;edge=1;fullRow=1;gridLines=1;msel=false;z=1};
static={cls="static";text="单位名称";left=9;top=14;right=68;bottom=31;dl=1;dt=1;font=LOGFONT(h=-14);transparent=1;z=5};
static2={cls="static";text="日期";left=11;top=79;right=59;bottom=106;transparent=1;z=10};
static4={cls="static";text="电话号码";left=9;top=48;right=68;bottom=64;dl=1;dt=1;font=LOGFONT(h=-14);transparent=1;z=6}
)
/*}}*/

winform.show() 
//设置TAB顺序便于键盘录入。
win.ui.statusbar( winform ).addItem("总数:", 150/*宽度*/)
winform.ed_name.wndproc = function(hwnd,message,wparam,lparam){
        if(message == 0x101/*_WM_KEYUP*/ && wparam == 0xD/*_VK_RETURN*/){            
           winform.ed_tel.setFocus()                     
        }
    }

winform.ed_date.wndproc = function(hwnd,message,wparam,lparam){
        if(message == 0x101/*_WM_KEYUP*/ && wparam == 0xD/*_VK_RETURN*/){            
           winform.ed_date.setFocus()                     
        }
    }   
  
winform.ed_tel.wndproc = function(hwnd,message,wparam,lparam){
        if(message == 0x101/*_WM_KEYUP*/ && wparam == 0xD/*_VK_RETURN*/){            
           winform.btn_adddb.oncommand()                    
        }
    }
winform.listview.insertColumn("序号",80,1)
winform.listview.insertColumn("单位名称或联系人",100,2)
winform.listview.insertColumn("电话",100,3)
winform.listview.insertColumn("日期",-1,4)
var sqlConnection = sqlite("\db.db") //连接数据库,如果不存在库则创建库。
if(not sqlConnection.existsTable("filea")){        //如果不存在表,则创建数据表        
        sqlConnection.exec("CREATE TABLE filea(id INTEGER PRIMARY KEY AUTOINCREMENT,name,tel,date);")                              
}else {
        var db=sqlConnection.getTable("SELECT * FROM filea");//查询全表数据
        //将查询到的数据显示于listview
        for(i=1;#db;1){winform.listview.addItem({tostring(db[ i ].id);db[ i ].name;db[ i ].tel;db[ i ].date});}        
}
//修改表中数据
winform.listview.onnotify = function(id,code,ptr){
    if(code==0xFFFFFF4B){// 滚动条 
        if(!winform.listview.editlable) return ; 
        edit = winform.listview.editlable;
        rc=winform.listview.getItemRect(edit.listViewNotifyMessage.iItem,edit.listViewNotifyMessage.iSubItem,,2/*_LVIR_LABEL*/);
        if(rc.top<rc.bottom-rc.top){//选中行向上滚动到了列标题及其以上的位置,不处理的话编辑框会覆盖掉列标题。
            rc.top-=math.abs(rc.bottom);rc.bottom=rc.top;
        }else {
            rc.right += 5; rc.bottom += 5;
        }
        edit.setRect(rc);
        winform.listview.redraw();//经测试,这行会引起滚动条位置变化时listview控件闪烁,如果在意这个问题,请主动给listview控件增加_WS_CLIPCHILDREN样式,可以省略掉这行。
    }
    if(code=0xFFFFFFFD/*_NM_DBLCLK*/ ){ 
        var notifyMessage = winform.listview.getNotifyMessage(code,ptr);
        if( ! notifyMessage.iItem && notifyMessage.iSubItem ) return ;         
        var edit = winform.listview.editlable
        if( ! edit ){
            winform.listview.addCtrl(
                editlable = { 
                    cls="edit";font = LOGFONT( h = 11 );left = 0;top = 0;
                    right = 50;bottom = 50;autoResize = false ;hide = 1;edge = 1;                    
                    wndproc = function( hwnd, message, wParam, lParam ){
                        if( ( message = 0x8/*_WM_KILLFOCUS*/) 
                            || message == 0x101/*_WM_KEYUP*/ && wParam == 0xD/*_VK_RETURN*/){
                            // 按下了回车键或失去焦点,更新listview数据
                            owner.parent.setItemText( owner.text, //格子内容
                                                      owner.listViewNotifyMessage.iItem, //行号
                                                      owner.listViewNotifyMessage.iSubItem );//列号                            
                            var focus=owner.listViewNotifyMessage.iItem
                            var id=winform.listview.getItemText(focus,1);//focus=第i行,第1列                           
                            var name=winform.listview.getItemText(focus,2);                            
                            var tel=winform.listview.getItemText(focus,3);  
                            var date=winform.listview.getItemText(focus,4);                           
                            //更新语句sqlConnection.exec("UPDATE 表名 SET 更新字段 = '更新值' WHERE 条件字段 = 条件值';");
                            sqlConnection.exec("UPDATE filea SET name='"+name+"',tel='"+tel+"',date='"+date+"' WHERE id ='"+id+"'");
                            owner.show(false);
                        }
                    }  
                }
            )            
            edit = winform.listview.editlable;            
        }
        edit.listViewNotifyMessage = notifyMessage; 
        edit.text=winform.listview.getItemText(notifyMessage.iItem,notifyMessage.iSubItem);
        var rc=winform.listview.getItemRect( notifyMessage.iItem,notifyMessage.iSubItem,,2/*_LVIR_LABEL*/ )
        rc.right += 5; rc.bottom += 5;
        edit.setRect(rc);
        edit.show();
        edit.setFocus();// 获取焦点        
    } 
}
//查询
winform.button.oncommand = function(id,event){
        winform.listview.clear()                        
        var db=sqlConnection.getTable("select * from filea where name like '%%"+winform.ed_name.text+"%%'"+"and tel like  '%%"+winform.ed_tel.text+"%%'"+"and date like  '%%"+winform.ed_date.text+"%%'");
        for(i=1;#db;1)winform.listview.addItem({tostring(db[ i ].id);db[ i ].name;db[ i ].tel;db[ i ].date}); 
        winform.ed_name.text=""
        winform.ed_tel.text=""
        winform.ed_date.text=""
        winform.statusbar.setText("总数:"+winform.listview.count,1)        
        winform.listview.setSelected(1)
        winform.listview.setFocus() 
}
//帮助
winform.button2.oncommand = function(id,event){
        var str = /*
        1、回车自动添加。
        2、双击编辑复制。
        3、模糊查询,查询空串则显示全部。
        4、全部清除可删数据库。
        */
        win.msgboxTimeout(str,"帮助",10000)        
}
//删除所选数据
winform.btnDelete.oncommand = function(){
        var id = winform.listview.getItemText(winform.listview.selIndex,1); 
        if(id!=""){
                winform.listview.delItem(winform.listview.selIndex)
                sqlConnection.exec("DELETE FROM filea WHERE id=='"+id+"'")        
                winform.statusbar.setText("总数:"+winform.listview.count,1)
                winform.listview.setFocus()
        }                        
}
//添加数据到db
winform.btn_adddb.oncommand = function(){        
        var name=winform.ed_name.text;        
        var tel=winform.ed_tel.text;
        var date=winform.ed_date.text;
        var tel_01;
        var num=sqlConnection.getTable("select tel from filea where tel='"+tel+"'");
        for(i=1;#num;1) tel_01=num[ i ].tel;                     
    if(tel_01!=null)    
       win.msgbox("该号码已经存在","系统提示")               
    else {            
          if(name!=""? tel!=""?date!=""){ 
                  //注意135行和138行不能相反,只有产生新ID号后才能在列表框中添加。                        
                  sqlConnection.exec("insert into filea (name,tel,date) values('"+name+"','"+tel+"','"+date+"')") 
                  var db=sqlConnection.getTable("SELECT * FROM filea"); 
                  winform.listview.addItem({tostring(db[#db].id);name;tel;date});             
                  winform.statusbar.setText("总数:"+winform.listview.count,1)
          }        
    }
winform.ed_name.text="";
winform.ed_tel.text="";
winform.ed_date.text="";
winform.ed_name.setFocus();    
}
winform.listview.setFocus();
winform.statusbar.setText("总数:"+winform.listview.count,1) 
win.loopMessage();
请登录后发表评论

    • 阿甘的头像-阿甘软件阿甘徽章-签到达人-阿甘软件等级-LV6-阿甘软件超级版主0
      • 热门评论
        rmajly的头像-阿甘软件rmajly徽章-22年人气达人-阿甘软件等级-LV3-阿甘软件作者1