2010-11-29 5 views
0

私は2つのmsgボックスをはい/いいえしたいと思います。フォームを保存するための最初のものと、印刷のためのもの。次のコードは動作していますが:それは、はい/いいえのMsgBox内で作業していないDoCmd.OpenReport Frm、vBYesの後でacViewNormalが動作しないなぜ?

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

、情報が解析されていないようです。

私はプログラマではないんだけど、私はそれを学びたい、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

強化しているているものを見る - 各行を実行するために、コードの行にF9キーを押してF8キーを押し、ブレークポイントを設定しますか?あなたがそうするとき、frmは価値がありますか?ホバーするか、直接ウィンドウに?frmと入力することで確認できます(ctrl + Gを押すと直接ウィンドウが表示されます)。レポート名は文字列でなければならないため、文字列を返す必要があります。元のテストがうまくいったと言っていないなら、frm.NameかMe.nameのどちらかを意味すると思います。

DoCmd.Save 

そして:

DoCmd.RunCommand acCmdUndo 
また

If IsNull(Me.WrkOrdr) Then 

、私が上であまりにも多くを依存していないでしょう。これを使用しないのはなぜ

If IsNull(Me.WrkOrdr) = True Then 

:このためBTW

アクセスの既定値は保存されます。元に戻す操作が期待どおりに機能しないようにするには、いくつかのことがあります。

+0

ありがとう、私はvbaに完全なnoobですが、より良い解決策は何でしょうか。 – Chris

0

あなたのコードが右に見えます。

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

を追加

試してみて、結果はあなたがコードを

関連する問題