问题:我现在要给数据库的4个表中添加信息(在一个界面中),比如A,B,C,D表。我添加表的记录时(界面中用文本框和其他的控件输入数据),当我添加到C表的数据时出错,这时程序跳出,但是A表的B表的添加的信息却已生成。比方说text1输入A表的信息,text2输入B表的信息,当我输入text3(C表的信息)时由于数据类型出错跳出,但是text1,text2的数据已经在A,B表中生成。而C表没有。这个错误陷进该如何设置。我是这样设置的:Private Sub CmdAddNewClient_Click()
Dim i As Integer
Dim sql As String
On Error GoTo err1:
……'中间是向数据库添加记录的代码
……
……
err1:
MsgBox Err.Description, vbOKOnly + vbExclamation, "添加新记录失败"恳请各位高人帮帮我,怎样使只要出现错误,任何表中都不添加新记录!

解决方案 »

  1.   


    其实,你应该在添加数据的时候,先把Text1,Text2,Text3的类型做个判断。
    如果正确了才可以添加进入数据。
      

  2.   

    我试着设了判断数据类型的陷阱,但是不知该设在何处。
    private command1_click()
    Dim i As Integer 
    Dim sql As String 
    On Error GoTo err1: 
    ……'中间是向数据库添加记录的代码 
    …… 
    …… 
    dim st as integer
     On Error GoTo err2:
        i = Text3.Text
    ……
    ……‘做其他的处理
    Exit Sub 
    err2:
    MsgBox ("请输入一个整数")
    err1: 
    MsgBox Err.Description, vbOKOnly + vbExclamation, "添加新记录失败" 
    END
    结果数据类型不对程序就跳出来了,A,B的数据仍然录入了。
    请问这个陷进该在什么位置设置!
      

  3.   

    你goto太多了
    private command1_click() 
    Dim i As Integer  
    Dim sql As String  
    dim st as integer
    //判断数据都为非空的数字 ,一个例子而已
    for i = 0 to 3
       if trim(text1(i).text)="" or isnumeric(text1(i).text)=false then 
          MsgBox ("请输入一个数TEXT") & i+1
          exit sub
        end if
    next
    //这里数据都是正确的数据了,
    数据库操作
      

  4.   

    利用数据库的事务 transaction 处理就可以解决:Dim i As Integer 
    Dim sql As String 
      On Error Goto RollBack  'Begin the transaction
      cn.BeginTransaction……'中间是向数据库添加记录的代码 
    …… 
    ……  ' No errors ocurred, so commit the transaction & exit
      cn.CommitTrans             '数据库事务提交
      On Error Goto 0
      Exit Sub
     
    RollBack:
      MsgBox Err.Description, vbOKOnly + vbExclamation, "添加新记录失败"
      cn.RollBackTrans           '数据库事务回滚
      err.Clear