• ベストアンサー

ACCESSのレポートに関して

ACCESSでのレポート出力に関して教えて下さい。 今、T_ABC というテーブルが存在し、そのテーブルのXという項目をレポート上のテキストに 表示したいと考えいます。 データは既に存在し、レポートの方へ以下のような記述をしましたが、#name?というエラーと なってしまいます。 何が考えられるでしょうか、、、 《記述内容》  コントロールソースへ  =[T_ABC]![X] 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • sora1515
  • ベストアンサー率58% (54/92)
回答No.4

>>コントロールソースへ  =[T_ABC]![X] 複数レコードをテキストボックスへ表示しようとしているのではないでしょうか。 テキストボックスへ表示したいのであれば、単一レコードを抽出しなければなりません。(DLookUp/DBLookUpなど) 複数レコードを表示したいのであればリストボックスなどを利用してみて下さい。

その他の回答 (3)

回答No.3

【補足】「T_ABC]の列[X]のレコードを特定する必要があります。 × SELECT X FROM T_ABC ○ SELECT X FROM T_ABC WHERE id=1 DLookup関数でなくDBLookup関数で示したのは、このことを伝えたかったからです。それが判っていれば、DLookup関数を利用されても構いません。ハードの性能は年々に向上しています。現実問題としては、シビアに処理速度を気にする必要はないからです。ただ、SQL文をダイレクトに書ける関数の方が利用範囲が多いことは多いとは思います。 念のために、図で参照設定の在り様を示しておきます。 質問者のSQL文の学習に寄与できれば幸いです。

回答No.2

【実行速度の比較】 DLookup() ------- 0.261秒 DBLookup() ------ 0.005秒 AccessがサポートしているDLookup関数を使えば表示されます。 AODBで同じ働きをする関数を自作しても可能です。 その場合、実行速度は52倍速になります。 【Dlookup関数】 http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx DLookup 関数 指定されたレコードのセットから、特定のフィールドの値を返します。 レポートのレコード ソースにないフィールドの値を表示する場合に使用できます。 (http://ofic.microsoft.comより) 【Dblookup関数】 Public Function DBLookup(ByVal strQuerySQL As String, Optional ReturnValue As Variant = 0) As Variant On Error GoTo Err_DBLookup   Dim V   Dim rst As ADODB.Recordset   Set rst = New ADODB.Recordset   With rst   .Open strQuerySQL, _      CurrentProject.Connection, _      adOpenStatic, _      adLockReadOnly     If Not .BOF Then       .MoveFirst       V = IIf(IsNull(.Fields(0)), ReturnValue, .Fields(0))     End If   End With Exit_DBLookup: On Error Resume Next   rst.Close   Set rst = Nothing   DBLookup = V   Exit Function Err_DBLookup:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _     "・Err.Description=" & Err.Description & Chr$(13) & _     "・SQL Text=" & strQuerySQL, _     vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBLookup End Function ※DBLookup関数が動作するには、[参照設定]のセットが必要です。 http://www.happy2-island.com/access/gogo03/capter00307.shtml

  • ppyama
  • ベストアンサー率12% (48/399)
回答No.1

バージョンは? X だけではダメでしょうか? 2003の環境しかありませんが。

asamix_000
質問者

お礼

ppyama様、ご回答ありがとうございます。 環境を記載せずに申し訳ありません。 ACCESSは2000です。 Xだけでやってみましたがダメでした。。。。 何が原因でしょうか、、、

関連するQ&A

  • Access2002でのレポートで

    お世話になります。 Access2002でレポートを作成しているのですがデザイン ビューの詳細セクションでテキストボックスを貼り付けて "=Left([***],Len([***])-4) " *[***]はレポートで作成したクエリの項目 をプロパティのコントロールソースに設定したのですが 実際にレポートに出力するテーブルにデータがないとき テキストボックスが貼り付けてある場所に "#エラー" と表示されます。 上記の表示を回避(空白でもいいです)できる方法を 教えてください。

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

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

  • Accessのレポートについて

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

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

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

  • accessのレポートについて

    accessのレポートでテキストボックスのコントロールソースに =[名前] & "様" と入力したんですが,#エラー とでてしまいます。様という字を追加するにはどうすればいいのでしょうか?

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

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

  • アクセス2000のレポート作成で

    アクセス2000のレポート作成時にデザインビューを利用してレポートを作成しようとしています。 ここでフィールドリストを利用してテーブルのフィールド名をドラッグ&ドロップし、デザインビュー上に配置したいのですが、フィールドリストを画面に参照できません。 どのような設定をすればフィールドリストが出せるのでしょうか。 また、他に方法がないかと思い、デザインビュー上にテキストボックスを配置し、 プロパティ> データ> コントロールソース>式ビルダの作業画面からテーブルのフィールド名を配置していますが、プレビュー表示すると「#Name?」と表示されてしまいます。 よろしくお願いします。

  • アクセスのレポートで・・

    アクセスのデーターをラベル印刷するにあたって困っております。多分何か簡単な設定で解決できるのだと思って・・アドバイス頂けましたら幸いです。 まず、テーブル構成は ------------------------------- ID :オートナンバー 案件1:テキスト 案件2:テキスト 案件3:テキスト 案件4:テキスト 案件5:テキスト -------------------------------- となっており、案件1から5には文字が入力されております。(約20行のデーターを入力してます。) このテーブルを元に宛名ラベルウィザードで5列からなるレポートを完成させたのです。 レポートイメージは下記のような感じです。 -------------------------------- 案1 案2 案3 案4 案5 □  □  □  □  □ □  □  □  □  □ □  □  □  □  □ -------------------------------- そこで印刷した結果を見てびっくり。。 テーブルの案件1に入力された文字が”あいうえお”  〃   〃 2に 〃  〃   ”かきくけこ”  〃   〃 3に 〃  〃   ”さしすせそ”  〃   〃 4に 〃  〃   ”たちつてと”  〃   〃 5に 〃  〃   ”なにぬねの” とすると、レポート印刷では上記のレポートイメージのように1つ1つのラベルにテーブルのデーターが印字されるものと思ったら、1つのラベルに、”あいうえおかきく”というように自分のデーター”あいうえお”以外にも隣のデーターである”かきく”までも表示し印刷されてしまって困ってます。 ちなみに、そのレポートのコントロールソースを見てみると(=Trim([案件1] & [案件2] & [案件3] & [案件4] & [案件5])というようになっております。 どうしたら1つのラベルに1つのデーターのみを印字させることが出来ますでしょうか。

  • アクセスについてです(レポート)

    フォームからレポートを開く時に、 VBAでコントロールにコントロールソースを指定したいのですが どうやらエラーになってしまうようです。 フォームからではなく手動でレポートを開く場合は エラーにはなりません。 レポートのレコードソースは、T_testを指定していて、 その上にあるコントロールは非連結で指定したコントロールソースをvbaで入れたいです。 なので、レポートのLoadイベントで Private Sub Report_Load() Me.テキスト0.ControlSource = "8月" End Sub として、手動でレポートを開く分には問題ないのですが このコードのまま、フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewPreview End Sub とすると、Me.テキスト0.ControlSource = "8月"で、 実行時エラー2191 印刷プレビュー時または印刷を開始した後は コントロールソースプロパティを設定できません。 のエラーが発生します。 フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewDesign End Sub とすると、レポートのLoadイベントが発生しませんでした。 ご回答よろしくお願いします。

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

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

専門家に質問してみよう