求救 我用VB 删除信息 提示我对象打开时无法操作 马上要答辩了 谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:48:02
Private Sub Cmd_del_Click()
rtn = SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3) '运用API函数SetWindowPos,来实现取消窗体置前的功能
If Adodc1.Recordset.EOF = False Then
c = MsgBox("您确认要删除该记录吗?", 17, "删除提示信息")
If c = vbOK Then
Adodc1.Recordset.Delete '删除货品出库信息记录
Adodc1.Refresh

Call main

adoRs.Open "select * from tb_KCXX where KC_IDs='" + Text1(1).Text + "' ", adoCon, adOpenKeyset, adLockOptimistic
If adoRs.RecordCount > 0 Then
Dim SNum As Integer
'重新计算库存货品的数量
SNum = Val(adoRs.Fields("KC_Num")) + Val(Text1(2).Text)

在If adoRs.RecordCount > 0 Then 下面写
if adoRs.state=adstateopen then adoRs.close

Call TRefresh 下面也写

if adoRs.state=adstateopen then adoRs.close

就行了.

告诉你一点,你一次只能操作一个表,如果你操作完成了,你可以关闭该表,.close,特别是再更换界面进行操作的时候可以进行 Unload me 卸载,这样表也会关闭,你就可以再其他的地方再次进行操作了,而你也说了,只是打开一个的话就可以操作,哪么就说明,你打开两个的时候,而你对其中的一个进行了删除的操作。
上面的都是废话,不过就是代码太多,而且不全,不能办你看了!

用事务处理
Public Function RunTrans(ByVal tranSql As String, ByVal AdoConn As ADODB.Connection)
With AdoConn
.BeginTrans
.Execute tranSql
.CommitTrans
End With
End Function

调用
RunTrans "UPDATE tb_cksz SET ck_xk='" + Str(SNu) + "' where ck_id='" + Text1(4).Text + "' ",adoCon

支持一楼的