目前我的思路:   先   sql="select A,B,C from mainTable where id=0"   'id自动编号,当然这条记录是没有的
        rs.Open sql,conn.........       '打开一个 RecordSet 里面空的
 文本框录入后 ,  rs.addNew
                  rs("A")=Me.Text1.text
                  rs("B")=Me.Text2.text
                  rs("C")=Me.Text3.text  
                 '一条一条的写...如果这时字段很多怎么办? 
                 '当然 Text1(0) 编组只是一部分,窗体上还很多 ComboBox 单选按钮什么的
                 .......
                  Me.Text1.text=""  '清空文本框让用户录入下一条记录
                  
                 rs.addNew  '用户再往里加记录.. 我想让用户加入多条记录以后再 rs.Update
                 ......
                 rs.Update
  
   这样好像可以,但 rs.Upeate 的时候 VB 有详细的出错信息反回吗?
   就是说,当 rs 中某条记录中字段 "A" 的值与数据中现有字段重复时,无法写入数据库
   能返回是哪条记录吗?
   我怎么用  On Error ....  捕获并显示系统的出错信息?
   这种录入窗体大家平时怎么做的?能说说?

解决方案 »

  1.   

    大部分也都这样做,,呵呵,这个很容易呀,
    private function aa() as boolean
            on error goto err1        ............
            exit funcionerr1: 
            msgbox err.description,vbokonly,"系统提示"
            err.clear
    end function
      

  2.   

    如果想多写几条记录的话,你建议你还是一条条的加最好直接使用SQL语句,不要使用RS.addnew  然后,再 Rs.update等我的方法是 dim sql as string 
    dim myname as string 
    dim mydate as string myname =me.text1.text 
    mydate=me.text2.textsql =""
    sql =sql & " insert into 表名(字段1,字段2,字段3,字段4)"
    sql =sql & " values ('" & myname & "','" & mydate & "')" conn.exectute sql ,,adcmdtext
      

  3.   

    其实,你可以用一个 ListView1控件,,还是什么表格控件,,一个单独添加数据的窗体,上面还是全部都是 文本框text1 等每加一个次,都只把数据库写到表格控件中,一行行的,这样,用户也可以看清楚 ,然后,再去总的提交一次,,去循环表格控件里的数量,一条条的添加,用我上面的方法。
      

  4.   

    控件数组。
    on error goto PROC_ERR
    for i =0 to 10
    rs.fields(i).value = text1(i).text
    next i
      .
      .
      .PROC_ERR:
      Msgbox err.description
      err.clear
      

  5.   

    同意 flyingZFX,显示和添加是分开的。
    添加单独用一个窗体,这样方便程序的处理,也方便用户的使用。
      

  6.   

    我的数据库是远程 SQLServer 的,而且每次录入大量记录,不知用 SQL 语言插入或是一条一条更新是否会形响效率,
      

  7.   

    我同事测试说ADO的Addnew比Insert效率还要好,不过我没有做过测试.
    反正要一条条加,速度都差不了哪去.
    Addnew很好用,我以前就构造Insert,太忙烦了,出错还不容易调试,建意用Addnew.加上错误处理,可以得到数据库的返回信息,就在Err对象中.