Office中国论坛/Access中国论坛

标题: [求助]按鈕要點兩次才能反應,請各位大哥指教 [打印本页]

作者: Airin    时间: 2003-8-1 17:50
标题: [求助]按鈕要點兩次才能反應,請各位大哥指教
這是一個關閉按鈕,代碼如下:
Private Sub Close_Click()
On Error GoTo Err_Close_Click

If Not IsNull(銷售商) Then
    If MsgBox("此數據尚未存儲,要存儲嗎?", 48 + vbYesNo, "系統提示") = vbNo Then
        DoCmd.Close
    Else
        Save_Click
        DoCmd.Close
    End If
Else
    DoCmd.Close
End If

Exit_Close_Click:
    Exit Sub

Err_Close_Click:
    MsgBox Err.Description
    Resume Exit_Close_Click

End Sub

點擊該按鈕后,會彈出上面的MSGBOX 然后選否,它不會產生反應,需再次點擊該按鈕才能生效,但它還會連帶把所有已打開的窗體關閉!小弟不知是什么原因,請各位大哥大姐指教!謝謝! 
[em00][em00][em00]

作者: 阿罗    时间: 2003-8-1 18:40
不知道你的save_click子程序是怎么执行的,问题可能就出在这里。我记得以前我是用:

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

来保存记录。

另外,我想有一个更好的方法,是用窗体的beforeUpdate事件,例如:

Private Sub Form_BeforeUpdate(Cancel As Integer)
'这段可作为标准程序
On Error GoTo err_formErr

    Dim response As Integer
    response = MsgBox("是否保存所作的改动?", vbYesNo)
    If response = vbNo Then
        Cancel = True
        Me.Undo    '撤销修改
    Else
        Exit Sub
    End If

err_formErr:
    Cancel = True
    Me.Undo
    Exit Sub
End Sub

这样,即使你关闭窗体,也会先触发这个事件。你不妨试试看。
作者: cloudsky    时间: 2003-8-1 18:50
这个方法比较全面一点,我认为
作者: Airin    时间: 2003-8-1 20:04
以下是引用阿罗在2003-8-1 10:40:28的发言:
不知道你的save_click子程序是怎么执行的,问题可能就出在这里。我记得以前我是用:........

我也不明白到底是怎到回事!

由于我的做法比較笨,就是在窗體中填的數據,不是直接的填在有資料來源的控件中,而是先把資料填入無資料來源的文本框內,再通過save_click進行賦值。

會不會這是問題的根源?如是,可為什么點否也會出現此類情況?

另,點是還會造成關閉整個系統。
請指教!
作者: Airin    时间: 2003-8-4 17:10
TO:阿羅
我利用你的方法,是做到了關閉前詢問,謝謝!
但有一點不好,如果我是新增記錄,那不是很麻煩?因為它會每次者進行詢問!
敢問還有沒有比這更好的良策?
當然不管怎樣,還是謝謝了!
作者: 阿罗    时间: 2003-8-4 17:44
我不是很清楚你的意思,你是说每次你输入一个字段,就要询问么?那就可能同你的其他代码有关系了。

一般情况下,例如绑定纪录到窗体,那么无论是你修改还是添加,只是等你要改变整条记录时,才会询问的。这不会麻烦阿。
作者: Airin    时间: 2003-8-4 19:05
我的意思是當我新增記錄時會詢問而不是改變字段時!

因為我想要的是只在點Close_click時才產生反應,而不是新增記錄也有。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3