2

各アプリケーションの情報を含むフォームを含む学生アプリケーション データベースがあります。

フォームからレポートを作成したいのですが (マクロとコマンド ボタンのどちらを使用するべきかわかりません)、クリックすると、現在のアプリケーションからの情報のみを含むレポートを作成する必要があります。フォームに表示されています。

次のようなレポートを作成しました。

ここに画像の説明を入力

マクロ (クリックすると印刷プレビュー モードでレポートが開きます) を作成するには、マクロ デザインの場所ボックスで次の基準を使用しました: [アプリケーション]![レコード ID]=[フォーム]![フォーム]![レコード ID]

ただし、フォームのマクロをクリックすると、レポートが表示されますが、レポートのフィールドにフォームのデータが入力されません。

私が尋ねている質問は、通常、フォームにボタンを作成して、一度クリックすると、そのフォームに含まれる情報 (複数のレコードではない) を含む印刷プレビューを表示する方法です。

ありがとう、

トム

4

2 に答える 2

2

これは、次のような単純なものにする必要があります(VBAでは、マクロではありません)。

If Me.NewRecord = False Then
    DoCmd.OpenReport "rptMyReportName", acViewPreview, , "[RecordID] = " & Me!RecordID
End If

補足として、テーブルを設計するときは、フィールド名にスペースや記号を使用しないことをお勧めします。RecordIDをRecordIDに変更します。

于 2012-05-02T11:41:07.910 に答える
2

マクロでこれを行う方法がわかりません。私はマクロを使用しません-マクロがvbaで行うすべてのことを実行できます-そして簡単にできます:

Private Sub ReportOpenButton_Click()
On Error GoTo Err_ReportOpenButton_Click

If Not Me.NewRecord Then
    DoCmd.OpenReport "My_Reportname", acPreview, , "[ID] = " & Me![ID]
Else
  If MsgBox("Save the new Record ?", vbQuestion & vbOKCancel, "Attention") = vbOK Then
    RunCommand acCmdSaveRecord
    DoCmd.OpenReport "Bericht1", acPreview, , "[ID] = " & Me.ID
  End If
End If

Exit_ReportOpenButton_Click:
    Exit Sub
Err_ReportOpenButton_Click:
    MsgBox Err.Description
    Resume Exit_ReportOpenButton_Click:
End Sub

ここで重要なのは、[ID]はレポートのIDフィールドの名前、Me![ID]はこのコマンドが実行される形式(me)のIDフィールドの名前です。したがって、最後のパラメータ "[ID] ="&Me![ID]は、文字列 "[ID="とフォームのフィールドIDの数値が、たとえば "[ID]=7"に連結されることを意味します。

したがって、この行は次のようなマクロを実行します。

OpenReport my_reportname、inPreviewMode、ID = 7

編集:新しい場合は現在のレコードを保存するためのコードを追加しました

于 2012-05-02T12:04:27.163 に答える