2010-11-29 133 views
0

我想有兩個味精盒是/否。第一個用於保存表格,第二個用於打印。雖然下面的代碼正在工作:DoCmd.OpenReport Frm,acViewNormal沒有在vbYes之後工作然後..爲什麼?

Private Sub CmdPrint_Click() 
    DoCmd.OpenReport Frm, acViewNormal 
End Sub 

它不是在一個是/否的MsgBox中工作,似乎信息不被解析。

我不是一個程序員,但我想了解它,probally這是不好的四面八方:d

Private Sub Form_BeforeUpdate(Cancel As Integer) 

    If MsgBox("Je staat op het punt de ingevoerde gegevens op te slaan." & vbCrLf & vbCrLf & "Weet je zeker dat je dit formulier wilt opslaan?", vbYesNo, "Gegevens opslaan") = vbYes Then 
    DoCmd.Save 
    Else 
    DoCmd.RunCommand acCmdUndo 
    End If 

    If IsNull(Me.WrkOrdr) = True Then 
    Me.WrkOrdr = Val(Nz(DMax("[WrkOrdrNr]", "WrkPlts"), "0")) + 1 
    ''# or Me.txt2BookNumber = CLng(Nz(DMax("[BookNumber]", "Participant"), "0")) + 1 
    End If 

    If MsgBox("Je staat op het punt dit formulier uit te printen." & vbCrLf & vbCrLf & "Weet je zeker dat je dit formulier wilt uitprinten?", vbYesNo, "Formulier printen") = vbYes Then 
    DoCmd.OpenReport Frm, acViewNormal 
    Else 
    Exit Sub 
    End If 
End Sub 

回答

1

你有沒有通過代碼加強 - 通過按下一行代碼,按F8鍵運行每一行F9設置斷點?當你這樣做時,frm有價值嗎?您可以通過將鼠標懸停在其上或通過在即時窗口中鍵入?frm進行檢查(按Ctrl + G以切換立即窗口)。它應該返回一個字符串,因爲報告名稱必須是一個字符串。我懷疑你的意思是frm.Name或Me.name,如果你還沒有說你的原始測試工作。

BTW此:

If IsNull(Me.WrkOrdr) = True Then 

爲什麼不使用這樣的:

If IsNull(Me.WrkOrdr) Then 

而且,我不會過分依賴:

DoCmd.Save 

和:

DoCmd.RunCommand acCmdUndo 

Access的默認設置是保存,並且有幾件事情會阻止您按照預期的方式工作。

+0

好的,謝謝,我是一個完整的白板vba,什麼會是一個更好的sollution。 – Chris 2010-11-29 19:32:46

0

你的代碼看起來正確。

嘗試增加

Dim ans As Integer 
ans = MsgBox("ja of nee?", vbYesNo) 
MsgBox ("ans=" & ans & " vbyes=" & vbYes & " vbno=" & vbNo) 

,看看結果是什麼

相關問題