我的程序里,有个功能是一次要往6个表里添加数据,我是一个表一个表添加。可是这样出现了数据丢失的现象,也就是往6个表里添加数据时,有的表没有添加进去。对vb操作数据库我不是太懂,我想知道怎么才能避免这样的情况发生。

解决方案 »

  1.   

    conn.execute("insert into ....")如果插不入的,会出错,停止运行。
      

  2.   

    '用事务来处理:private sub command1_click()
    on error goto ErrHandle:
        cnn.begintrans    '开始事务
         cnn.execute "insert into 表1(...) values(...)"
        cnn.execute "insert into 表2(...) values(...)"
        cnn.execute "insert into 表3(...) values(...)"
        '...
        cnn.committrans   '提交事务
         msgbox "保存成功!",vbokonly,"提示"
        exit sub
    '错误处理
    ErrHandle:
        cnn.rollbacktrans  '出错,回滚事务
         msgbox "保存失败,错误原因为:" & err.description,vbexclamation,"提示"
        exit sub
    end sub
      

  3.   

    Call closeconn
    Call openconn
    sqlstr = "insert into b1 (t1,t2,t3) values ('" & Trim(Text1.Text) & "','" & Trim(Text2.Text) & "','" & Trim(Text3.Text) & "','" & Trim(Text4.Text)& "')"
    Call rs(sqlstr)
    Call closeconnCall openconn
    sqlstr = "insert into b2 (t1,t2) values ('" & Trim(Text2.Text) & "','" & vv & "')"
    Call rs(sqlstr)
    Call closeconn这是我代码,像这样一个6个表
      

  4.   

    事务中的SQL语句要不全部执行,要不全部不执行
      

  5.   


     adoCon.RollbackTrans   '出错,回滚事务
    执行到这句出错:对象关闭时不允许操作