フォームのボタンを押した時に、SQLのデータを取得し帳票に表示したい

このQ&Aのポイント
  • ACCESS2003を使用して、フォームのボタンを押した時にSQLのデータを取得し、帳票に表示したい方法について教えてください。
  • フォームであるボタンを押した時に帳票に出力されるレコードをSQLによって制御したい方法について教えてください。
  • Access 2003を使用して帳票出力機能を作成しようとしていますが、フォームのボタンを押した時にSQLのデータを取得して帳票に表示する方法がわかりません。
回答を見る
  • ベストアンサー

フォームのボタンを押した時に、SQLのデータを取得し帳票に表示したい。

ACCESS2003を使用して、帳票出力の機能を作成しようとしています。 フォームであるボタン(コマンド5)を押したときに帳票(1)を出力したいのですが、帳票(1)に出力されるレコードをSQLによって制御したいと思っていますが、うまくいきません。 以下がコードになります。基本的な質問ではあると思いますが、いろいろ調べてもわからなかったので、ご回答、ご指摘いただけるとうれしいです。よろしくお願いします。 Option Compare Database Private Sub コマンド5_Click() On Error Resume Next Dim strSQL As String strSQL = "SELECT * FROM アプリデータDB WHERE アプリデータDB.端末名 = 'AAAA' " DoCmd.OpenReport "帳票(1)", acPreview, , strSQL End Sub

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> DoCmd.OpenReport "帳票(1)", acPreview, , strSQL OpenRecordメソッドの第4引数「WhereConditions」は、 その引数の名前の通り、Where条件式だけを指定します。 そこに「Select * ~」まで入れてしまっているために、 意図した動作になっていないものと思います。 ですので、 strSQL = "SELECT * FROM アプリデータDB WHERE アプリデータDB.端末名 = 'AAAA' " を strSQL = "アプリデータDB.端末名 = 'AAAA' " (または "端末名 = 'AAAA' ") に変更してみてください。

boojar
質問者

お礼

回答ありがとうございます。 Where 条件式だけ入れれば良かったんですね。 ("端末名 = 'AAAA' ")で やりたいことが可能になりました。 どうもありがとうございました。

関連するQ&A

  • ACCESSフォームフィルタで抽出したデータのみをレポートで表示する方法

    フォームフィルターでデータを抽出した後,抽出されたデータのみをレポート上に表示させるコマンドボタンをフォーム上に作っています。 下記のコードを作成しましたが,これだと抽出前の全部のデータが表示されてしまいます。 どうしたら良いでしょうか。 Private Sub ラベルプレビュー_Click() Dim stDocName As String DoCmd.Echo False, stDocName = "rpt宛名ラベル" DoCmd.OpenReport stDocName, acViewDesign DoCmd.SelectObject acReport, stDocName, False ' Reports(stDocName).RecordSource = Me.RecordSource DoCmd.OpenReport stDocName, acViewPreview End Sub

  • accessフォームのボタン→レポートへ伝票番号

    access初心者です。 accessのフォームがあります。 コマンドボタンを押すとその伝票番号★を引き継いで、レポートの★の部分に入れたいのですが。 【コマンドボタン】 DoCmd.OpenReport "伝票印刷", acPreview #「伝票番号」という変数に番号は入っています。 【レポート伝票印刷】 Sub Report_Open(Cancel As Integer) Me.RecordSource = "SELECT * FROM 仕分伝票 WHERE 伝票番号 = ★" End Sub #★に番号が入るとレポートはその番号のレポートを表示します。 #切り貼り作成しているので、ほとんどVBAはわかっていません。 #質問の仕方も自信なし。 #画面に表示されている伝票を印刷しようというのが目的です。

  • accessレポートの抽出条件

    こんにちわ。 いまaccess2000で, フォームからレポートを出力する処理をしています。 そのレポートは[コントロールソース]としてあるクエリを設定しています。 そこで, DoCmd.OpenReport "r_帳票", acPreview, , "[番号] = 'a100'" とコーディングしました。 なおレポートの[フィルタ]プロパティは"はい"にしています。 ところが,出力されたレポートには条件で抽出されずに 全件が出力されてしまいました。 抽出条件を効かせるためにはどうすれば良いでしょうか? 教えてください。お願いします。

  • 帳票フォーム後のレコード指定

    利用者名と利用者IDと電話番号で検索ができるアクセスを作っています。 以前質問した内容で利用者名での検索のみ、検索後の帳票フォームで開いた後開きたいレコードを直接「詳細情報」のボタンを押すことで別のフォーム(詳細情報)を表示できるのです。 利用者IDも電話番号も利用者名と同じ構成で書いているのに検索後の帳票フォームで表示されたあとレコードを選んでも検索後の1番最初のレコードが詳細情報として出てきてしまいます。 たとえば検索して4件が帳票フォームに表示出たとして、3件目を選んだとします、ですが詳細情報の最初に出てくるのは1件目なのです。 3件目を選んだら3件目が詳細情報として表示してほしいのですが・・・ なぜか利用者名だけできて他ではできません。 これちらがそのイベントプロシージャです。 Private Sub コマンド59_Click() On Error GoTo Err_コマンド59_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "詳細情報" stLinkCriteria = "[riyou_id]='" & Me![riyou_infotb_riyou_id] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド59_Click: Exit Sub Err_コマンド59_Click: MsgBox Err.Description Resume Exit_コマンド59_Click End Sub 帳票フォームは3つありそれを1つの詳細情報のフォームへ繋げてます。 3つのイベントプロシージャの変更点はボタンの名前しか変えていません。 回答よろしくお願いします。 下手な質問の仕方で申し訳ないです・・・

  • レポートで空データ時に印刷しない

    教えてください。 VBA「Private Sub コマンドボタン_Click()」で 「Docmd.OpenReport "レポート名"」の1文があるのですが、レポートプロパティで空データの時は印刷しないようなマクロ「全マクロの中止」を組んであります。 確かに、空データ時は中止がかかり印刷はされないのですが、実行時エラー2001 直前の操作はキャンセルされました。とエラーメッセージが帰ってきます。デバックをクリックすると、「Docmd.OpenReport "レポート名"」の一文が黄色くなっています。 どうしたら、綺麗に処理を終了する事ができるのでしょうか?教えてください。

  • 【問題】ACCESSからEXCEL雛形(帳票レイアウト)を開き、データ

    【問題】ACCESSからEXCEL雛形(帳票レイアウト)を開き、データをセットして名前を付けて保存する流れですが、データセット時に「実行時エラー'13'型が一致しません。」が出て処理が止まります。 【詳細】 ACCESS2003 SP3 と EXCEL2003 SP3を使用しています。 簡単に説明しますと、ACCESSのフォームで集計条件を入力し実行ボタンを押下した後、ACCESSでデータの集計処理を行い、EXCEL雛形(帳票レイアウト)を開き、データをセットして名前を付けて保存する流れですが、処理が戻ってきません。データをセットする処理の前にMSGBOXを入れ"F8"で1ステップ毎に処理を進めますとセット1行目から「実行時エラー'13'型が一致しません。」が出て処理が止まります。 また、タスクマネージャのプロセスに"EXCEL.EXE"が常駐したままとなり、終了させるまでEXCEL雛形(帳票レイアウト)を開く事ができません。 【PG】 Private Sub 出力_Click() Dim DB As Database, X Set DB = CurrentDb() DoCmd.SetWarnings False Me!SUB01.SourceObject = "F_処理中" Me!SUB01.Requery X = 帳票出力A01(Me!表番号, Format(Me!年度, "yyyy"), Me!番号, Me!ファイル名, Me!シート名) Me!SUB01.SourceObject = "F_MASK" End Sub Public Function 帳票出力A01(表番号, 年度, 番号, ファイル名, シート名) ' On Error GoTo ERR_帳票出力A01 Dim DB As Database, T As Recordset, パス, 処理日時, X, i Set DB = CurrentDb() DoCmd.SetWarnings False 処理日時 = Format(Now(), "yyyymmddhhnnss") '<< 出力データ準備 >> X = 出力集計用(年度) Set T = DB.OpenRecordset("W_集計結果") If T.EOF Then MsgBox "出力可能データが存在しません。" Exit Function End If '<< EXCELへ書き出し >> パス = CurrentProject.Path Dim xlApp As Excel.Application Dim xlWkb As Excel.Workbook Dim xlWst As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlWkb = xlApp.Workbooks.Open(パス & "\帳票出力レイアウト\" & ファイル名) Msgbox("この後エラーとなる。") xlWkb.Sheets(シート名).Cells(1, 16).Value = 番号  ←←← この行でエラー発生 xlWkb.Sheets(シート名).Cells(5, 4).Value = Format(CVDate(年度 - 1 & "/04/01"), "gggee年度") xlWkb.Sheets(シート名).Cells(5, 8).Value = Format(CVDate(年度 & "/04/01"), "gggee年度") xlWkb.Sheets(シート名).Cells(5, 12).Value = Format(CVDate(年度 + 1 & "/04/01"), "gggee年度") ----- 集計結果をEXCELに貼り付ける処理など以降省略 ----- よろしくお願い致します。

  • On Error Resume Nextを複数のプロシージャーで使うことは不可能ですか?

    Module1に ------------------------------------------- Option Compare Database Option Explicit Sub マクロ1() End Sub Sub マクロ2() End Sub ------------------------------------------- があるのですが ------------------------------------------- Option Compare Database Option Explicit Sub マクロ1() On Error Resume Next End Sub Sub マクロ2() On Error Resume Next End Sub ------------------------------------------- ではなく ------------------------------------------- On Error Resume Next Option Compare Database Option Explicit Sub マクロ1() End Sub Sub マクロ2() End Sub ------------------------------------------- これはできないのでしょうか? エラーになります。 dimもつけても駄目でした。 ひとつづつやっていくしかないのでしょうか?

  • 標準モジュールだとエラーになる理由を教えてください

    アクセスのフォームの上にコマンドボタンを一つ設置して、 クリックイベントで Private Sub コマンド0_Click() DoCmd.Close acForm, Me.Name End Sub とすれば、自身のフォームが閉じます。 しかし、 Private Sub コマンド0_Click() Call test End Sub と、 標準モジュール Option Compare Database Option Explicit Sub test() DoCmd.Close acForm, Form_フォーム1 End Sub にすると、 実行時エラー2498 指定した式は、 いずれか の引数とデータ型が対応していません。 になります。 行ってる意味は同じだと思うのですが、 なぜエラーになるのか教えていただけますか?ご教授よろしくお願いします。

  • 帳票フォームでカーソル移動

    帳票フォームでカーソル移動 お世話になります、帳票フォームでフォームヘッダーに非連結txtBoxを2つ置き(txt適用開始日、txt消費税率) 詳細にクエリのフィールドを表示させています。 下記コードでフォームのダブルクリック時にヘッダーのtxtBoxにレコードを表示させています、 その後カーソルをヘッダーの”txt消費税率”に移動させたく DoCmd.GoToControl "txt消費税率" Forms!フォーム名.txt消費税率.SetFocus Me!txt消費税率.SetFocus 色々試しては見たのですがカーソル移動してくれません! アドバイス宜しくお願いいたします。 Dim adoCN As ADODB.Connection   Dim adoRS As ADODB.Recordset Dim strSQL As String Set adoCN = Application.CurrentProject.Connection strSQL = " SELECT *" _ & " FROM ta02消費税" _ & " WHERE 摘要開始日= #" & Me!txt摘要開始日2 & "#" Set adoRS = adoCN.Execute(strSQL) If adoRS.EOF = False Then Me!txt摘要開始日.Value = adoRS("摘要開始日").Value Me!txt消費税率.Value = adoRS("消費税率").Value * 100 Else MsgBox "該当データがありません", vbOKOnly + vbExclamation, "消費税" Cancel = True Exit Sub adoRS.Close adoCN.Close Set adoRS = Nothing Set adoCN = Nothing End If DoCmd.GoToControl "txt消費税率" ←’タイミングも色々ずらして試したのですが・・・ Me!cmd登録.Visible = False Me!cmd削除.Visible = True End Sub

  • Accessでaccdeへ変換で機能しない

    Access2007で、accdbからaccdeへ変換したのですが、コマンドボタンしか機能しません。 機能するのは、Accessの終了・Excelの出力のみで、クリックしてフォームを開く・フォームを閉じるのボタンを押しても何も起こりません。調べてみると、マクロで設定したボタンは問題ないのですが、VBAで設定したボタンが機能していないようです。例えば下記のような記述をいくつか設定しています。 Option Compare Database Option Explicit Private Sub コマンド21_Click() DoCmd.OpenForm "閲覧メニュー" DoCmd.Close acForm, "メインメニュー", acSaveNo End Sub 何がおかしいのでしょうか? マクロの設定は「全て有効」になっています。 どなたかおわかりになる方おりませんでしょうか。