插入SQLSERVER 数据库的问题?

qazzqazz 2011-09-04 06:51:10
想往用友的凭证表插入凭证, 我取最大凭证号+1作为凭证号往数据表里面插入凭证,如何避免我插入凭证的时候与别人手工录入正好保存的时候发生冲突?还有如果插入数据的时候出现错误能回滚吗?我没有使用过回滚, 我是VB新手,请各位老师多多指教,最好有Vb代码,万分感谢!
...全文
36 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qazzqazz 2011-09-05
  • 打赏
  • 举报
回复
非常感谢,我再看看,好好跟你学习
饮水需思源 2011-09-05
  • 打赏
  • 举报
回复
用友凭证表GL_Accvouch中还有很多必填字段,楼主需要研究一下
饮水需思源 2011-09-05
  • 打赏
  • 举报
回复
不好意思,写错了
conn.rollbacktrans
qazzqazz 2011-09-05
  • 打赏
  • 举报
回复
请问能把 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
饮水需思源 2011-09-04
  • 打赏
  • 举报
回复
'楼主如果是向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
贝隆 2011-09-04
  • 打赏
  • 举报
回复

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧