DoCmd.OpenReport Frm, acViewNormal не работает после vbYes Тогда .. почему? - PullRequest
0 голосов
/ 29 ноября 2010

Я хотел бы иметь две коробки сообщений да / нет. Первый для сохранения формы и второй для печати. Хотя работает следующий код:

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

Это не работает в да / нет MsgBox, кажется, что информация не анализируется.

Я не программист, но мне нравится изучать его, вероятно, это плохо со всех сторон: 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

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Вы прошли через код - установите точку останова, нажав F9 на строке кода, нажмите F8 для запуска каждой строки?Когда у вас есть, есть ли у frm значение?Вы можете проверить, наведя курсор на него, или набрав? Frm в ближайшем окне (Ctrl + G для переключения немедленного окна).Он должен возвращать строку, потому что имя отчета должно быть строкой.Я подозреваю, что вы имеете в виду frm.Name или Me.name, если вы еще не сказали, что ваш оригинальный тест работает.

Кстати, для этого:

 If IsNull(Me.WrkOrdr) = True Then

Почему бы не использовать:

 If IsNull(Me.WrkOrdr) Then

Кроме того, я бы не стал слишком полагаться на:

DoCmd.Save

И:

DoCmd.RunCommand acCmdUndo

По умолчанию для Access это сохранение и естьпара вещей, которые не позволят вам работать так, как вы ожидаете.

0 голосов
/ 29 ноября 2010

Ваш код выглядит правильно.

Попробуйте добавить

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

и посмотрите, каков результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...