0

私は以下のようなものを使用して、バインドされていないフォームから別のフォームに情報を渡します(エラーチェックがないことをお許しください)。

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openform "NextFormIamAbouttoUse"

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [Forms]![NextFormIamAbouttoUse].as_mainID = rs![MainID]
          [forms]![NextFormIamAbouttoUse].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

わかりました。フォームからレポートに情報を転送するためにも、この種のものを使用できますか?テキストボックスでいっぱいのフォームをダッシュ​​ボードとして使用しているのを参照してください。テキストボックスは入力目的ではなく、クイック情報を表示します。

ユーザーはさまざまなフォームをナビゲートして「ダッシュボードのような」フォームを好みに合わせて作成し、ある時点で印刷したいと考えます。そのため、これらのフォームを介して作成した情報のページを印刷できるように、各ポイントで(提供されるデータの観点から)類似したレポートを作成したいと思いました。

だから私はレポートでこれをやろうとしました:

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openreport "ReportTester", acViewPreview

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [reports]![ReportTester].as_mainID = rs![MainID]
          [reports]![ReportTester].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

推測通り、それは機能しませんでした。エラーなどはありません。この方法では情報は表示されません。ID番号も渡さない。

したがって、AcViewPreviewでレポートを開くということは、事後にそれらのテキストボックスに情報を追加できないことを意味すると思いますが、確信はありません。したがって、これに関するアドバイスは大歓迎です。ありがとう!

4

2 に答える 2

2

いくつかのオプションがあります。クエリを作成し、フォームコントロールの値をそこの値に渡すことで、レポートのベースとなる1レコードのクエリを作成できます。

各列は次のようになります。データ:Forms![MyForm]![MyControl]

または、フォームのコントロールをレポートコントロールに直接バインドすることもできます。

これらのルートのいずれかを選択した場合は、レポートを開いている間、値を含むフォームを開いたままにしておく必要があります。複雑なコードは必要ありません。

于 2010-01-14T16:58:01.620 に答える
0

私は何かが欠けていると思います。レポートのRecordsourceをフォームのRecordsourceと同じにし、実行時にDoCmd.OpenReportのWhereCondition引数の特定のMainIDにフィルターをかけるだけではどうでしょうか。その後、フォームを開かなくてもレポートを実行できます。

フォームがバインドされていないか、その場で計算するのに費用がかかるフィールドがない限り、レポートをフォームにバインドすることの利点はまったくわかりません。

于 2010-01-18T21:01:42.130 に答える