大虾请进(数据老是丢失,但不知什么原因)帮我解决了,要多少分给多少!

dragon_little 2003-09-21 09:20:59
开发环境是win2000,中文VB;打包是在英文VB上打包的,打包后的安装环境是win98。
一段数据入库的代码如下,因为入库过程中涉及到修改好几张表,所以使用了事务处理。用户使用过程中说老是会有数据丢失,特别是当跳出一个报告word erroe的对话框以后,刚刚录入的数据会丢失。但在录入过程中是没有问题的,就是重新进入系统后,发现原先录入的数据没了。

On Error GoTo err_proc
conn.BeginTrans '开始事务处理

'---------------------输入检查--------------------
If strSpbm = "" Or strSpmc = "" Or strSpph = "" Or strYxq = "" Or strJhrq = "" Or strJhjg = "" Or strFphm = "" Then
MsgBox "请检查商品编码,名称,批号,有效期,进货日期,单价,发票号码是否输入", vbOKOnly, "警告"
Exit Sub
End If

'进入进货表的同时,进入库存表
'----------------------插入进货信息-------------------------
strMaxIdJh = GetMaxId("SPLSH", "JHXX")
strSqlJh = "insert into JHXX values('" & strMaxIdJh & "','" & strSpbm & "','" & strSpmc & "','" _
& strSpgg & "','" & strSpph & "','" & strYxq & "','" & strJhrq & "'," & strJhjg & "," & strJhbj & "," & strJhsl & ",'" _
& strJldw & "','" & strSccj & "','" & strFphm & "','" & strSpfl & "','" & strCzry & "','" & strBzxx & "','1')"

conn.Execute strSqlJh

'----------------------插入基本信息------------------------
strSql = "select * from SPJBXX where SPBM='" & strSpbm & "'"
DatabaseQuery strSql, rsHave
If rsHave.EOF Then
rsHave.Close
strSqlJbxx = "insert into SPJBXX values('" & strSpbm & "','" & strSpmc & "','" & strSpgg & "')"
conn.Execute strSqlJbxx
Else
rsHave.Close
End If

'---------------------如果生产厂家表中没有该生产厂家,插入该厂家-------------
strSql = "select * from SCCJ where CJMC='" & strSccj & "'"
DatabaseQuery strSql, rsHave
If rsHave.EOF Then
rsHave.Close
strMaxIdSccj = GetMaxId("CJBM", "SCCJ")
strSqlSccj = "insert into SCCJ values('" & strMaxIdSccj & "','" & strSccj & "')"
conn.Execute strSqlSccj
Else
rsHave.Close
End If

'----------------------插入库存信息------------------------
strMaxIdKc = GetMaxId("SPLSH", "KCXX")
strSqlKc = "insert into KCXX values('" & strMaxIdKc & "','" & strSpbm & "','" & strSpmc & "','" _
& strSpgg & "','" & strSpph & "','" & strYxq & "','" & strJhrq & "'," & strJhjg & "," & strJhbj & "," & strJhsl & ",'" _
& strJldw & "','" & strSccj & "','" & strFphm & "','" & strSpfl & "','" & strBzxx & "','0')"

conn.Execute strSqlKc

'-----------------------插入操作日志---------------------------
strSqlRz = "insert into CZRZ values('" & strUser & "','插入入库记录','" & Date & "')"
conn.Execute strSqlRz

conn.CommitTrans '事务提交
dgJhxx.Enabled = True
FillInGrid '查询数据库如果插入了,显示在datagrid中
Exit Sub
err_proc: '出错处理
MsgBox ("数据库操作失败!")
conn.RollbackTrans '事务回滚
Exit Sub


运行了这段代码以后,我会让datagrid去数据库中查询刚刚插入的数据,如果有就显示出来。现在往往插入以后,datagrid中显示该数据已经插入了,但退出系统后,再进去,发现插入的数据又没了,往往伴随着会在退出系统时,弹出一个对话框,报告word error
...全文
177 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
coresky 2003-09-23
  • 打赏
  • 举报
回复
我一般不用insert语句,好象有时会未完成插入,但也没有提示,不保险。建议用记录集的
addnew方法。
dragon_little 2003-09-23
  • 打赏
  • 举报
回复
我觉得应该是回滚造成的,但如果是回滚造成的,那应该如何修改呢?
yoki 2003-09-22
  • 打赏
  • 举报
回复
'将你的事务改成这种形式看看如何
'conn.Execute "BEGIN TRANSACTION T1"
'...
'...
'...
'conn.Execute "COMMIT TRANSACTION T1"
'...
'Err_proc:
''conn.Execute "ROLLBACK TRANSACTION T1"
yoki 2003-09-22
  • 打赏
  • 举报
回复
可能再你退出系统是出了异常错误,然后又执行了事务回滚,检查退出系统是的错误处理程序
,另外看看是否有触发器将刚才的数据删除了
txlicenhe 2003-09-22
  • 打赏
  • 举报
回复
有没有触发器影响?
liufeng7600 2003-09-22
  • 打赏
  • 举报
回复
期盼。
yoki 2003-09-22
  • 打赏
  • 举报
回复
我的意思是说先看看把它去掉能否成功,找出错误原因,看是不是由于回滚造成的
dragon_little 2003-09-22
  • 打赏
  • 举报
回复
回滚是肯定要用的呀,不然的话,如果一个表插入出错,就会数据不一致了
yoki 2003-09-22
  • 打赏
  • 举报
回复
你将相关的事务回滚都注释掉看能否成功?
另外,你是否用了临时表??
dragon_little 2003-09-22
  • 打赏
  • 举报
回复
有没有可能是win98自身的问题呀?因为我在2000下开发的,始终没有报过word error这样的错误。
dragon_little 2003-09-22
  • 打赏
  • 举报
回复
我没有使用触发器呀。而且也不是每次都出错,是有时出错丢失,有时又正常的。
amongwang 2003-09-21
  • 打赏
  • 举报
回复
从未遇到过这种情况!

关注!
northwolves 2003-09-21
  • 打赏
  • 举报
回复
跳过试试:

err_proc: '出错处理
MsgBox ("数据库操作失败!")
'conn.RollbackTrans '事务回滚
dragon_little 2003-09-21
  • 打赏
  • 举报
回复
我想会不会是,所有这些数据如果插入以后,从语法上看都没错,所以程序的事务处理中没有发现错误,看上去是成功了,但并不是真正插入到数据库中了,而是在数据库的缓存中,等到数据库真正提交的时候,发现比如输入法什么的意外错误,然后直接在数据库中进行了回滚。如果是存在这种可能,有没有方法,让数据库每次插入后强行提交,不放在缓存中了
dragon_little 2003-09-21
  • 打赏
  • 举报
回复
我想如果是因为事务中出错,发生回滚了,那datagrid中应该不能显示这条数据呀,而且应该提醒数据库操作失败,但这些都没有发生。

1,216

社区成员

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

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