Access 2010forWindowsで問題が発生しました。
- doCmd.OpenReportを使用してレポートを起動します
- レポートに関連付けられたイベントで「キャンセル=True」を設定します
- アクセスを閉じる
- アクセスは引き続き「ファントム」プロセスとして実行されるため、タスクマネージャーで強制終了する必要があります。このプロセスが強制終了されるまで、Accessは別のデータベースを開くことができません。タスクは最初にいくらかのCPU使用率を示しますが、0%まで静まります。
doCmd.OpenReportを使用してレポートを起動しているときにこれを発見しました。レポートは、Report_Openイベントでフォームを開きます。フォームはユーザーにレポートパラメータの入力を求め、「OK」を押してレポートを表示するか、「キャンセル」を押すことができます。「キャンセル」のクリック時イベントは「キャンセル=True」を設定します。
OpenReport ()がキャンセルに適切に応答していないようです。これはよく使われるテクニックのように思われるので、バグと呼ぶのをためらって、何か間違ったことをしているのではないかと思っています。実は...これを説明すればするほど、バグのように聞こえます。この時点で、誰かが回避策を持っているか、明らかな何かが欠けていることを望んでいます。
これは、問題を説明するために作成した単純化された例です。
形
Private Sub Form_Open(Cancel As Integer)
On Error GoTo errHandler
DoCmd.OpenReport "Test Report", acViewPreview, , , acDialog
Exit Sub
errHandler:
Select Case Err.Number
Case 2501 ' Cancelled by user, or by NoData event.
MsgBox "Report cancelled, or no matching data.", vbInformation, "Information"
Case Else
MsgBox "Error " & Err & ": " & Error$, vbInformation, "Form_Open()"
End Select
Resume Next
End Sub
報告する
Private Sub Report_Open(Cancel As Integer)
Cancel = True
End Sub