怎么解决这个问题?

Generics 2010-07-21 01:26:46
我有个Form里有一个CheckBox, 这个值是绑定表里的一个Column的, 问题是这个值用户不能直接修改, 这个值需要根据其他的值的改变而改变, 现在问题来了, 下面是具体CODE,


Private Sub cboLeak_Class_Code_Change()
On Error GoTo Err_cboLeak_Class_Code_Change

UpdateIsLeak

Exit_cboLeak_Class_Code_Change:
Exit Sub

Err_cboLeak_Class_Code_Change:
Dim ErrMsg As String, ErrTitle As String
ErrMsg = "Error # " & Err.Number & " occurred in the cboLeak_Class_Code_Change event." _
& " The error is: " & Err.Description
ErrTitle = "Application Error"
MsgBox ErrMsg, vbCritical + vbOKOnly, ErrTitle
Resume Exit_cboLeak_Class_Code_Change

End Sub

Private Sub UpdateIsLeak()
If Me.Dirty Then
'Update Is_Leak

Me.RecordsetClone.FindFirst "[Leak_Id] = '" & Me.txtLeak_Id & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark
If IsNull(Me!cboLeak_Class_Code.Value) Or UCase(Me!cboLeak_Class_Code.Value) = "N" _
Or IsNull(Me!cboFclty_Type_Code.Value) Or UCase(Me!cboFclty_Type_Code.Value) = "S" _
Or IsNull(Me!cboAbove_Below_Grd_Flag.Value) Or UCase(Me!cboAbove_Below_Grd_Flag.Value) = "B" _
Or IsNull(Me.RecordsetClone.Date_Leak_Repair) _
Or IsNull(Me.RecordsetClone.Leak_Cause_Code) Or UCase(Me.RecordsetClone.Leak_Cause_Code) = "NT" Or UCase(Me.RecordsetClone.Leak_Cause_Code) = "HC" Then
chkIs_Leak_Flag.Value = 0
Else
chkIs_Leak_Flag.Value = 1
End If
End If
End Sub



代码每次运行到
chkIs_Leak_Flag.Value = 0
或者
chkIs_Leak_Flag.Value = 1

就出错,

Error # 3020 occurred in the cboLeak_Class_Code_Change event. The error is: Update or CancelUpdate without AddNew or Edit.

怎么解决这个问题?
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Generics 2010-08-11
  • 打赏
  • 举报
回复
谢谢大家, 问题已解决. 笨办法, 用UPDATE SQL语句.
skyskywind 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwb 的回复:]
1、用UPDATE SQL语句替换;
2、打开记录集,
RS.EDIT
RS("chkIs_Leak_Flag")=0
RS.UPDATE
[/Quote]

同上!~~
hahaxiaoa 2010-07-21
  • 打赏
  • 举报
回复
Private Sub UpdateIsLeak()
If Me.Dirty Then
'Update Is_Leak

Me.RecordsetClone.FindFirst "[Leak_Id] = '" & Me.txtLeak_Id & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark
If IsNull(Me!cboLeak_Class_Code.Value) Or UCase(Me!cboLeak_Class_Code.Value) = "N" _
Or IsNull(Me!cboFclty_Type_Code.Value) Or UCase(Me!cboFclty_Type_Code.Value) = "S" _
Or IsNull(Me!cboAbove_Below_Grd_Flag.Value) Or UCase(Me!cboAbove_Below_Grd_Flag.Value) = "B" _
Or IsNull(Me.RecordsetClone.Date_Leak_Repair) _
Or IsNull(Me.RecordsetClone.Leak_Cause_Code) Or UCase(Me.RecordsetClone.Leak_Cause_Code) = "NT" Or UCase(Me.RecordsetClone.Leak_Cause_Code) = "HC" Then
currentproject.connection.execute "update 表名 set chkIs_Leak_Flag.Value = 0 where [Leak_Id] = '" & Me.txtLeak_Id & "'"
Else
同上修改
End If
End If
End Sub


wwwwb 2010-07-21
  • 打赏
  • 举报
回复
1、用UPDATE SQL语句替换;
2、打开记录集,
RS.EDIT
RS("chkIs_Leak_Flag")=0
RS.UPDATE
Q724481678Q 2010-07-21
  • 打赏
  • 举报
回复
记录集不是添加或者编辑呀
ACMAIN_CHM 2010-07-21
  • 打赏
  • 举报
回复
你的窗体是如何绑定的?

建议上传一个测试用文件。

可以上传到 http://www.access911.net/csdn

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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