想往用友的凭证表插入凭证, 我取最大凭证号+1作为凭证号往数据表里面插入凭证,如何避免我插入凭证的时候与别人手工录入正好保存的时候发生冲突?还有如果插入数据的时候出现错误能回滚吗?我没有使用过回滚, 我是VB新手,请各位老师多多指教,最好有Vb代码,万分感谢!

解决方案 »

  1.   

    '楼主如果是向U8凭证表写入记录,则可以参考:
    private sub command1_click()
        dim ar_tmp    as new adodb.recordset
        dim StrSql    as string
        dim lngNo_Id  as long    '当月凭证最大编号
    on error goto ErrHandle:
        '开始事务
        conn.begintrans   
        '根据凭证类别字与月份读取当月凭证最大编号
         strsql=" select max(ino_id) as ino_id from GL_Accvouch where csing='记' and iperiod=9"
        if ar_tmp.state<>adstatecloed then ar_tmp.close
        ar_tmp.open strsql,conn,adopenkeyset,adlockreadonly
        if ar_tmp.recordcount=0 then
            lngNo_Id=1
        else
            if not isnull(ar_tmp!ino_id) then
                lngNo_Id=ar_tmp!ino_id+1
            else
                lngNo_Id=1
            end if
        end if
        ar_tmp.close 
     
        '写入凭证借方记录
        conn.execute "insert into GL_Accvouch(csign,isignseq,iperiod,ino_id,inid,ccode,md,mc) values('记',1,9,"& lngNo_id &",1,'1001',100,0)"
         '写入凭证贷方记录
         conn.execute "insert into GL_Accvouch(csign,isignseq,iperiod,ino_id,inid,ccode,md,mc) values('记',1,9,"& lngNo_id &",2,'1002',0,100)"
        '提交事务
         conn.committrans
         msgbox "保存成功!",vbokonly,"提示"
        exit sub
    '错误处理
    ErrHandle:
        '出错,回滚事务
        conn.rollbakctrans
        msgbox "操作失败,错误原因为:" & err.description,"提示"
        exit sub
    end sub    
      

  2.   

    请问能把 conn 的链接代码写一下吗? 我运行提示实时错误 -2147217900   找不到rollbakctrans
    存储过程是什么原因? 谢谢!  我的conn 是这样的:不知道哪里不对?谢谢
    Public conn      As New adodb.Connection
      conn.Open "Provider=SQLOLEDB;Data Source=" & Pb.Server & ";USER ID=SA;" & _
                "PASSWORD='" & Pb.Password & "';INITIAL CATALOG=" & Tb.Ufdata_Db
                M_Ufdata.CursorLocation = adUseClient
      

  3.   

    不好意思,写错了
    conn.rollbacktrans
      

  4.   

    用友凭证表GL_Accvouch中还有很多必填字段,楼主需要研究一下