2010-11-29 130 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) 

,看看结果是什么

相关问题