• 締切済み

Accessのレポートでソースレコード項目を読む

Accessのレポートでレポートを作っているんですが、グループヘッダーを出力するときに、そのグループの項目内容によって、表示する内容を変えようとしています。 VBで「グループヘッダー_Format」イベントが発生した時に、そのときのグループの内容を読み出して、それぞれに見合った処理を行うつもりです。 ただ、現在のソースレコードの項目をどうやって読み出せばいいかわかりません。 テーブル名!項目名 とやってもエラーになります。 どのように現在印刷しようとしているレコードの指定項目を読み出せばいいのでしょうか? よろしくお願いいたします

noname#61635
noname#61635

みんなの回答

noname#60992
noname#60992
回答No.3

>項目を表示するテキストボックスをつくって非表示にして利用する これが一番らくだと思います。 (プリントイベントでないと読めませんが) 他に、レポートのレコードソースをクエリにしてそれで操作する方法や、 ADOなどで、実際のレコードに直接アクセスしてデータを取ってくる方法 などが考えられます。 

noname#60992
noname#60992
回答No.2

すみません。 No1です。 ちんぷんかんぷんな回答ですね。 無視してください。 レポートに印刷するものは、textbox に表示させているので Me.テキスト1.Text とでもすれば読めるのではないでしょうか? それとも、私はまだ勘違いしているのかな?

noname#61635
質問者

補足

16Augustさん、回答ありがとうございます。 No1の回答は勘違いされていますよって書こうとおもっていたところです。 レポートに表示するものをテキストボックスで表示させれば読めるのはわかるのですが、レポートに表示しない項目を読み出すのはどうすればよいのでしょうか? ふと、おもいついたのが、その項目を表示するテキストボックスをつくって非表示にして、利用するって方法ですが、なんだかスマートじゃない気がします。 そんな裏技的な方法じゃなく、うまく参照できる方法があればお教えください

noname#60992
noname#60992
回答No.1

1つの方法として、adoでレコードセットを作ってそこから読むことができます。 Dim Conn As New ADODB.Connection Dim Rst As New ADODB.Recordset Set Conn = CurrentProject.Connection Rst.Open "table1", Conn, adOpenKeyset, adLockOptimistic MsgBox Rst.Fields(0).Name Rst.Close Conn.Close Set Rst = Nothing Set Conn = Nothing とすると、table1の最初のフィールド名を読み出します。 fields()の数値を1にすると2番目のフィールド名・・・・

関連するQ&A

  • Access レポートのレコードソースについて

    Access レポートのレコードソースについて Access2000を使っています。 VBAでテーブル一覧や構造を Debug.Print に出力する方法が、あるWebサイトで紹介されて いたのですが、Debug.Print ではなく、レポートに出力することは可能でしょうか・・? 一般的には、レポートのレコードソースには、クエリやテーブルを使うと思いますが・・・。 よろしくお願いします。

  • Accessレポートのレイアウトについて

    Accessレポートのレイアウトについて 現在レポートを作成していて行き詰っています。 レコードを3件出力したら、グループヘッダー部を表示したいのです。 いろいろ調べて、指定件数出力したら改ページする。というのは見つけたのですが、 改ページせずに、同じページにグループヘッダを出したいのです。 アドバイスいただければうれしいです。よろしくお願いします。

  • ACCESS2000レポートのレコードソースって?

    Access2000のレポートのレコードソースですが、構成が同じテーブルAとテーブルBがあって、パラメータなどでテーブルを切り替える方法はないですか?

  • accessレポートの除外表示、実人数、並べ替え

    ご覧いただき、ありがとうございます。 Access2010を使用している初心者です。レポート2枚を作成しています。 3点、お聞きしたいことがあります。 お分かりになる部分だけでも結構ですので、どなたかご教授いただけますでしょうか? ********* (1) グループ化で特定のレコードを除外して表示 レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:依頼者ID、曜日、項目名 --- 曜日 ヘッダー ---   [曜日] --- 項目名 ヘッダー ---   ★[項目名]       <[項目名]A-Dの各件数> =Count([項目名])  --- レポート フッター ---   E             <[項目名]がEの件数> =Sum(IIf([項目名]="E",1,0))   ひと月の項目名と件数を下方向に並べます。 この時、項目名A,B,C,Dがあり、Eを除外して表示したいです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ また、そのレポート内の下部で、グループ化せずにEの集計も行いたいのです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ … ★の式を、=iif([項目名]<>"E",null ,[項目名]) としたら循環参照となってしまいます。 … テーブルIから作ったA-DおよびEのみの選択クエリ、またはテーブルIとEのみの選択クエリに分けて、レコードソースに追加し、参照先を分けようとしましたが、「指定されたフィールド '[項目名]' が SQLステートメントのfrom句にある複数のテーブルを参照しました」とエラーが出ます。 ********* (2) 実人数のカウント レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:担当者名、依頼者名、会員、項目名 --- レポート ヘッダー --- <「項目名」A-Dの総件数>  =Count([担当者])-Sum(IIf([項目名]="E",1,0)) ★<「項目名」A-Dの依頼者実人数>  <A-Dで「会員」フィールドが null の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="",1,0))-Sum(IIf([項目名]="E" And [会員]="",1,0)) ★<A-Dで「会員」フィールドが null の依頼者実人数> <A-Dで「会員」フィールドが 1 の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="1",1,0))-Sum(IIf([項目名]="E" And [会員]="1",1,0)) ★<A-Dで「会員」フィールドが 1 の総件数> ひと月の項目名をフィールド「会員」で分けて集計します。 実人数はクロス集計クエリを参照して、手入力すれば解決しますが、できれば自動的に行いたいです。 ********* (3) グループ内での任意の並べ替え レポート名:レポート2 / レコードソース:テーブルI / 使用するフィールド:担当者名、依頼者名、会員 --- 担当者 ヘッダー --- <A-Dでの担当者>  ★[担当者]           --- 依頼者名 ヘッダー --- --- 項目名 ヘッダー --- <A-Dでの依頼者>  [依頼者名]       [項目名]         <各依頼者、各項目名の件数> --- 担当者 フッター ---  <担当者ごとの総件数> =Count([担当者])-Sum(IIf([項目名]="E",1,0)) レポート1の問題を踏まえ、一応、項目名Eを除外して集計しています(現時点で未解決) ここでは、担当者の並び替えを任意に行いたいです。 昇順や降順ではなく、例えばあ・い・う・え・おを、い・う・あ・お・えのように並べたいのです。

  • Accessのレポートについて

    お世話になっております。 現在、Accessのレポートを使って見積書のデータベースを作っているのですが、できるかどうかわかりませんが、一つご教授願います。 それは、見積書では、材料費・人件費などの項目が存在するのですが、時には材料費の項目が存在しない場合もあると思います。 そんなときに、テーブルの項目には材料費のフィールドがあるのですが、そのレコードのデータが空だったらレポートのフィールドに材料費という項目自体を現さないで出すことはできないのでしょうか? レコードの値は決まっているのですが、データが空かどうかでレポートに出力するかどうかを判断させて見積書を作成させたいと思ってます。 可能かどうか分かりませんが、アドバイスをよろしくお願いいたします。

  • access2000レポートで2つのテーブルからデータを持ってくる方法を教えてください

    はじめまして。ゆきこと申します。 レポートのデザイン画面でページヘッダーにある テキストボックスは テーブル2 (項目:[出力年月FROM]、[出力年月TO][出力ステータス])から それ以外は テーブル1 (項目:[部長コード][部署コード][担当者名]...とテーブル1と同じ項目はありません。)から データをもってきて表示する、 という風にしたいのですが、 ページヘッダーのテキストボックスのプロパティの コントロールソースの式ビルダで =[1]![出力年月FROM]と、各とエラーになってしまいます。 ちなみにテーブル2の中身は 日付FROM  日付TO 2005/01  2005/10 のように入っているのですが、 それを レポートのテキストボックス1に日付FROMの「2005」、 テキストボックス2に「1」という風に表示させたいのですが、 可能でしょうか。 言葉が足りないとは思いますが、 よろしくお願いします。

  • クリスタルレポート8でのFormula??たすけてください。

    開発環境 windows2000 SP3 visualbasic6.0 SP5 crystlreport8.0 今クリスタルレポート8で アクセスのMDBのテーブルの中身を レポートに出力しています。 テーブルの中身には Aグループ Bグループ Cグループ  の3つが全て入っているとして VBからクリスタルレポートを出力する際に ワークテーブルに全レコードが入った状況で クリスタルレポートに出力する際に Aグループだけを出力させたいのですが そのようなことは可能でしょうか? 可能であれば方法を教えて下さいませんでしょうか? Formulaというのをちらっと耳にしたのですが 何のことやら・・・涙 元のワークテーブルに対象のレコードだけを 入れておいて全件出力すればよい話なのですが それは今できない状態です。 よろしくお願いします。

  • アクセスのレポートについて

    アクセスでテーブルAのデータをレコードソースとするレポートAを作成したのですが、レポートAのなかにテーブルBのレコードソースを追加することは可能でしょうか。  また一からレポートを作り直さずにすむ方法が知りたいのですが。

  • Accessのレポートのコントロールソースについて

    すみません。教えてください。 Accessのレポートで、レポートとしてはクエリー1をレコードソースに設定してありますが、その中の1つのテキストボックスにクエリー2(つまりレコードソースに設定した以外のクエリー)の項目を表示させたい場合、そのテキストボックスのコントロールソースには、どのように式を記載すればよいのでしょうか?

  • フォームのレコードソース(Access2000)

    質問させていただきます。 フォームの「レコードソース」でテーブルとクエリーのほかに、「SELECT テーブル名、フィールド名・・・」というのがあります。これもクエリーなのでしょうか? ちなみに、レコードソースの右にある「---」をクリックすると「SQLステートメント:クエリビルダ」というものが開きます(クエリー画面と同じ?)。 また、フォームのレコードソースはテーブル、クエリー、SOLステートメントのどれにすれば良いのでしょうか?