• ベストアンサー

Accessでレポートに任意のテーブルの任意の行を表示したい

レポート(非連結で作成)にあるテーブルの1フィールドを順番に1行ずつ表示させたいのですが、どのような方法があるでしょうか? レポートは表形式ではなく、単票形式です。 Access2000です。

  • w-inty
  • お礼率72% (1169/1618)

質問者が選んだベストアンサー

  • ベストアンサー
  • keikan
  • ベストアンサー率42% (75/176)
回答No.7

すいません、ページの外観に影響を及ぼすコマンドは、フォーマットイベントで行ってください。 Private Sub ページヘッダーセクション_Format(Cancel As Integer, PrintCount As Integer) *********AccesのHelp Formatイベント抜粋です。*********** Format イベントが発生したときにマクロやイベント プロシージャを実行すると、カレント レコードのデータを使って、ページ レイアウトに影響する変更をレポートに加えることができます。たとえば、売上高のレポートで、営業部員の月ごとの売上高の合計の隣に、その売上高の合計が一定額に達したときにだけメッセージを表示することができます。コントロールの表示と非表示が切り替わると、"CanGrow/印刷時拡張"、"CanShrink/印刷時縮小"、"HideDuplicates/重複データ非表示"、"KeepTogether/同一ページ印刷"、および "Visible/可視" など、レイアウトに関連するプロパティの設定値に従ってセクションがフォーマットされます。 ページ レイアウトに影響しない変更の場合や、ページごとの合計を印刷するマクロのように、ページのデータがフォーマットされるまで実行されないマクロまたはイベント プロシージャの場合は、対象となるレポート セクションの Print イベントを使います。

w-inty
質問者

お礼

無事できました!! ありがとうございます(><)

その他の回答 (6)

  • keikan
  • ベストアンサー率42% (75/176)
回答No.6

へんですね~^^ こっちではうまくいってるんですけど、エラーの再現ができません。 デザイン時にラベルオブジェクトはどこにありますか? (初期値) また、ラベル名とテキストボックス名の識別に問題はないですか? 良ければ、前後のコードも記述してください。

w-inty
質問者

お礼

コードはとりあえずこんな感じです。 元データ(使用者)はページヘッダーにあります。 同じページヘッダーにある別ラベルを指定してみましたが、同じエラーになってしまいました。 Private Sub ページヘッダーセクション_Print(Cancel As Integer, PrintCount As Integer) Me.ScaleMode = 1 Me.ForeColor = 0 '**************************** '* 新データ入力用画面の方 * '**************************** 使用者.Left = 3 * 567 '一番左の縦線 Me.Line (0.3 * 567, 0)-(0.3 * 567, 2430) Me.Line (3 * 567, 0)-(3 * 567, 2430) Me.Line (7 * 567, 0)-(7 * 567, 2430) Me.Line (0.3 * 567, 0)-(7 * 567, 0) Me.Line (0.3 * 567, 350)-(7 * 567, 350) Me.Line (0.3 * 567, 700)-(7 * 567, 700) '右・縦線 Me.Line (8 * 567, 0)-(8 * 567, 2430) Me.Line (10.7 * 567, 0)-(10.7 * 567, 2430) Me.Line (14.7 * 567, 0)-(14.7 * 567, 2430) '横 Me.Line (8 * 567, 0)-(14.7 * 567, 0) Me.Line (8 * 567, 350)-(14.7 * 567, 350) Me.Line (8 * 567, 700)-(14.7 * 567, 700) End Sub

  • keikan
  • ベストアンサー率42% (75/176)
回答No.5

>レポート名.Label(使用者).Left = 5 * 5 >としてみましたが、エラーになりました。 >どのようにしたらいいのでしょうか? まずどのようなエラーでしたか? この記述からすると、 レポート名.使用者.left=5*5 通常 自レポートの扱いになるので オブジェクト名.要素名 = ○○ 使用者.left = ○○ でいけると思いますが、レポート名を指定しているのは、このコードを外部のモジュール(他のフォームなど)から実行押されていますか? レポートのプロパティーが変更可能なのはフォーマット時や印刷時なのでプレビューが表示されてからの変更はできないと思います。 このコードを記述するならば詳細のフォーマット時・印刷時で記入してください。

w-inty
質問者

お礼

回答ありがとうございます。 使用者.Left = 3 * 567 としてみましたが、エラーでした。 メッセージは 実行時エラー'2102': プロパティの設定値として指定した値が不正です。 です。 >詳細のフォーマット時・印刷時で記入してください。 詳細ではなくページヘッダーに表示なのでページヘッダーの印刷時ではありますが、そちらへ記入しています。

  • keikan
  • ベストアンサー率42% (75/176)
回答No.4

フィールド1から5も2列にするということでしょうか? まあ、紙を大きいのに変えるか、フォントを小さくしてフィールドの幅を狭くするぐらいですかね^^;; あと、任意の文字を表示させるには、 適当なラベルを作っておいて、表示、非表示を切り替えたり、表示位置を随時変更してやれば(Top、Left)そのような感じになります。

w-inty
質問者

お礼

回答ありがとうございます。 レポートのラベル位置をVBAでやるには レポート名.Label(使用者).Left = 5 * 5 としてみましたが、エラーになりました。 どのようにしたらいいのでしょうか?

  • keikan
  • ベストアンサー率42% (75/176)
回答No.3

#2です。#2の内容は忘れてください。題意とはずれてます。 #1の補足からですが、 フィールド6は同じレコードですか違うレコードですか? 違うレコードであれば、ファイルーページ設定ーレイアウトー行列設定で横の列数を決めてください。 フィールド1からフィールド5までをページヘッダーなどにおいて、フィールド6だけを詳細ページに於いてください。 同じレコードを配置するのであれば、フィールドを必要な数配置してください。これはデザインで必要な分貼り付けるか、VBAで随時作成するかです。 下記はレポートデザインを新規で作成してレポートにテキストボックスを作成しています。参考にしてください。 Sub makeTBox() Dim TB(10) As Control Dim tleft As Integer Dim ttop As Integer Dim theight As Integer Dim twidth As Integer Dim i As Integer Dim crep As Report Set crep = CreateReport tleft = 100 ttop = 50 theight = 200 twidth = 1000 For i = 1 To 10 'ここで必要に応じて下記関数にフィールドの連結を入れてください。 Set TB(i) = CreateReportControl(crep.Name, acTextBox, , , , tleft, ttop + i * 500, twidth, theight) TB(i).Name = "test_TextBox" & i Next i End Sub

w-inty
質問者

お礼

回答ありがとうございます。 列わけられるんですね!! 知りませんでした! ページヘッダにフィールド1~5までを…というのは私も考えてやってみました! 普通の状態だとできますが、2列とかにしてしまうとその分レポートの幅が狭くなって、全部入りません(><) こんなわがまま解消できるでしょうか?

w-inty
質問者

補足

VBAで任意の位置に線をひくのって Me.Line(0.3*567,0)-(0.3*567,2430) とかでできますよね? これと同じように任意の位置に文字を表示させる場合ってどのようにすればいいのでしょうか?

  • keikan
  • ベストアンサー率42% (75/176)
回答No.2

任意のテーブルを後から連結する場合、 レポートのロード時点などで外部から連結するテーブルを割り当ててやる必要が出てくると思います。 1.外部のフォームなどのテキストボックス等に該当するテーブル名を入れておく。 2.ロードのタイミングで内部的に割り当ててやる。 このようにして、割り当てたテーブルの項目名がレポートで使われるデータ項目において各テーブル共通であればそれだけでいけると思いますが、 違う場合には、レポートの各項目のデータ項目名をテーブルに合わせて、その都度割り当てる必要があると思います。 レポートを作成する際に、どれか一つのテーブルをもとに作成されると作成しやすいと思います。作成後、題意のような表示になるを確認後、データとしてのテーブルの関連を削除してください。(この時点で非連結になると思います)

w-inty
質問者

お礼

回答ありがとうございます。 すいません、教えていただいた文章を読んだのですが、イマイチ理解できませでした。。。(=_=) もう少し具体的に教えていただけると助かるのですが… わがままいって申し訳ありません(><) よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

下記のような問題でしょうか。違うような気もするのでその場合は補足を。 (例データ)テーブル:住所録 住所録ID 郵便番号 氏名 会社 役職2 1 201-2123 山田 太郎 山田電気 社長 2 203-3211 神田 次郎 神田 商店 常務 3 100-1111 名古屋株式会社 名古屋商事 常務 4 311-2345 佐野 三郎 興和 部長 5 112-3210 関西 商事 関西商事 課長 5件を作りました。 (操作) レポート デザインビュー 新規作成 (基になるテーブル)住所録 OK レポート画面で「詳細」部に「住所録」の「フィールドリスト」が出ているから 項目を必要なだけドラッグアンドドロップして配置する。 「詳細」のベルトの上で右クリック。「プロパティ」を選ぶ。(セクション「詳細」のプロパティで) 「書式」の「改ページ」を「カレントセクションの後」を選ぶ。(その行でクリックすると▼がでて、クリックして 選ぶ)。 印刷してみると、テーブル1行分が、配置したレイアウトで1枚づつ、計5枚印刷しました。

w-inty
質問者

お礼

回答ありがとうございます。 すいません、ちょっと説明が足りなかったようですね。 レポートはこんな感じです。  フィールド1*  フィールド2*  フィールド3*  フィールド4*  フィールド5*  フィールド6  フィールド6  フィールド6  フィールド6  フィールド6  フィールド6  フィールド6    : というような感じです。 フィールド1-5は非連結データで、テーブルなどのデータはまったく関係ありません。 フィールド6のみをテーブルの1つのフィールドをもってきて、連続で出したいのです。 しかもできれば   フィールド6  フィールド6   フィールド6  フィールド6   フィールド6  フィールド6   フィールド6  フィールド6   フィールド6  フィールド6   フィールド6 みたいな感じで任意の形にできるとさらにうれしいです。 コードを組んだらできるかな?と思ったんですが、無理でした。。。

関連するQ&A

  • Accessのレポートで繰り返し表示させる方法について

    あるテーブルを元に、Accessで表形式のレポートを作成しています。 詳細部分に A列|B列|C列|D列 というようにテキストボックスを並べています。 プレビュー表示をすると、テキストボックスの間の | が、縦に並んで1本の線が入っているように見せています。 この線ですが、表示するデータのあるなしに関わらず、レポートの下まで(フッターの手前まで)表示させたいのです。 例えば10行分しかデータ-がないと、11行目から下は真っ白になってしまいますが、線だけは表示をさせたい場合、何か方法がありますか?

  • Accessのレポートでページセレクタが動作しない

    初めての質問をさせて頂きます。 Access2016のレポートに関して質問させて頂きます。 レポートウィザードを使用して表形式のレポートを作成しようとしたのですが項目数が多いため作成エラーになってしまい単票形式でレポートを作成しました。 作成時に使用したクエリでは条件に従い複数レコードを抽出するようにしています。 項目を横一列にして最大表示行数を30行(30行目で改ページ)にしています。 上記で作成したレポートをフォームと親子関係にしてフォーム上にレポートプレビューを表示するようにしました。 ここまでは想定通りに動作をするのですがレポートプレビューの時に表示されるページセレクタで問題が発生しました。 矢印ボタンで次ページ移動、前ページ移動、最終ページ移動、最前ページ移動、現在ページの表示は問題ないのですが、直接ページ数を入力すると何故かページ数でなくレコード数として扱われ行の先頭に指定した数値のレコードから改ページまでが表示されてしまいます。また印刷ダイアログでページ指定をしても同様の現象が発生してしまいます。 レポートのグループ化や並び順などの条件はすべて削除しています。 レポートウィザードで単票形式で作成したのが問題ではないかと予測しているのですが、レポートのプロパティでは単票形式、表形式、帳票形式の選択肢がないのでどのようにすれば解決できるのか見当もつかない状態になってしまっています。 解決方法を知っていらっしゃる方がおられましたら是非お知恵をかして頂ければ幸いです。 どうか宜しくお願いいたします。

  • アクセス2000について

    アクセス2000でデータベースを作成しています。 幾つかのテーブルをリンクさせて、リンクしたテーブルからフィールドを選択してクエリを作り、そのクエリに基づいて単票形式のフォームを作成しました。 単票フォームの基になっているクエリを使って、表形式のフォームをオートフォームウィザードで作成しようとすると、「インデックスが有効範囲にありません。」というメッセージが出てきてフォームが作成できません。 どうしたらいいのでしょうか?誰か教えてください。

  • ACCESSのフォームで入力したデータをテーブルに追加したい

    初歩的な質問だとは思いますが、自分の思うようにならず困っています。 テーブルのデータを元に日付のみメインフォームで単票形式で表示し、日付以外の項目はサブフォームで表形式で入力するフォームを作成したのですが、サブフォームの表形式の最後の行がいつも空白になり、そのデータが日付のみ入力され、テーブルのフィールドに追加されています。 説明がうまくできずわかりにくいとは思いますが、分かる方よろしくおねがいします。

  • Access2002 255以上のフィールドをレポートで表示させたい

    Access2002を使っています。Accessは初心者です。 255以上あるフィールドをレポートでA3用紙(横)1枚におさめたいと思っています。 構造は,下の通りです。 テーブル1,テーブル2,テーブル3,テーブル4 クエリ1(テーブル1~3をもとに)・・・フィールドが200あります クエリ2(テーブル4をもとに)・・・・・フィールドが150あります 初心者判断で,クエリ1とクエリ2をもとに350あるフィールドを1枚のレポートにおさめるには,A3用紙の右側の部分にサブレポートを作成すると解決できるのではと考え,マニュアルを読んで,レポート1にサブレポートを追加する作業を進めました。しかし,「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが表示され作成できませんでした。 サブレポートの概念がよくわからないのですが,サブレポートにこだわらず,350もあるフィールドをA3用紙(横)1枚にレポートで出力できる最も簡単な方法があったら教えて下さい。何分,Accessは初心者なので,よろしくご教示下さい。よろしくお願いします。

  • Accessでレポートを作成したい

    Access2000を使っています。 ウィザードを使ってレポートを作成しようとしています。 レポート作成用に新規クエリを作り、レポート作成ウィザードの「フィールドの選択」で新しく作ったクエリを指定し、そこからすべてのフィールドを選択しましたが、印刷形式を選択したところで、「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが出ます。 クエリの作り方が間違っているのでしょうか。それともクエリの中のテーブル間の結合がうまくいっていないとか…。 「フィールドの選択」では、レポートで表示させたいフィールドだけを選択すればいいんですよね? そのためのクエリも、同じくレポートで表示するフィールドだけを入れればいいんですよね。 そもそも「アプリケーション定義またはオブジェクト定義のエラー」って何なんでしょう…。 初心者ですがよろしくお願いします。

  • アクセスのテーブルのレコードをひとつのフォームにすべて表示ししたい

    アクセス2002を使っています。 ひとつのテーブルに登録しているレコードの値(日付順のフィールドにより数値を入力たレコードです)をひとつの単票形式のフォームにすべて表示するようにしたいのですが、できますか? よろしくお願いします。

  • access2003レポートの文字列の連結について

    access2003で宛名ラベルを作成しています。 レポートで氏名と敬称を連結して印刷をしたいのですが敬称のところが数値の1と印刷されます。 敬称はプルダウンメニューになっていて予めテーブルで設定された値を印刷させたいのです。ちなみにレポートはクエリから抽出しています。 テーブルの設定は数値型でコンボボックスで別のテーブルから様、先生などの値を選択できるようになっています。 うまく説明できませんが、レポート上で氏名と敬称のフィールドを連結しなければうまくいきます。 氏名と敬称を連結して表示させる方法を教えてください

  • ACCESSのレポート機能

    ACCESS2000の勉強中です。 疑問がありますので、記入させていただきます。 レポート機能ですが、レポートを作成する際に、 指定できるテーブルは1個だかなのでしょうか? レポートウィザードで、レポートを作成する際 複数のテーブルのフィールドを選択すると ・・・・・・・ 「テーブル1、テーブル2、テーブルのフィールドを 選択しましたが、このうち1つまたは複数のテーブル ・・・ ウィザードに戻ってフィールドをいくつか削除するには [キャンセル]をクリックしてください。 ・・・・・・・ と表示されます。 なんとなく意味はわかるのですが、普通は1個しかテーブルは 指定しないものなんでしょうか? どなたかアドバイスいただけるとありがたいです。

  • Accessのレポートが新規作成できません

    はじめまして。Access初心者です。新しいレポートを作ろうとして、 「新規作成」→新しいレポートで「単票形式」、クエリを選択して作 ろうとしても、「レポートを作成できませんでした」のエラーが出ます。 どうしたら良いのでしょう?助けてください。 OSはWIN98。AccessはAccess2002です。

専門家に質問してみよう