Accessデータの連続表示方法についての質問

このQ&Aのポイント
  • Filterで抽出した複数のデータの詳細を連続して表示したい方法について教えてください。
  • OpenFormコマンドを使用して詳細画面を表示する際、抽出されたデータではなくテーブルのデータ順に表示されてしまいます。他の方法で連続表示ができる方法はありますか?
  • 質問のデータは以下のURLで閲覧可能です。www.ky-housing.jp/oshiete-goo/q-2.accdb
回答を見る
  • ベストアンサー

Access 抽出したデーターの詳細の連続表示

Filterで抽出した複数のデーターの詳細をそのデーターの順で連続して表示したいのでご指導ください。 F_物件検索  (メインフォーム) F_検索結果  (サブフォーム用) sub検索結果 (サブフォーム) F_店頭用   (詳細表示用) 抽出された最初のデーターの詳細を表示する場合は下記の通りで問題なく動作します。 Private Sub cmd物件詳細_Click() DoCmd.OpenForm "F_店頭用", acNormal, , "物件番号 = " & Me!sub検索結果.Form!物件番号, acFormReadOnly End Sub 上記で表示されたF_店頭用の詳細画面に【次へ】のボタンをAccessのマクロで設定しても、表示されるデーターは抽出されたものではなく、テーブルのデーター順に表示されます。 そこで、OpenFormコマンド、他で何とかならないものでしょうか? 下記ではエラーがでます。 Private Sub cmd連続詳細_Click() DoCmd.OpenForm "F_店頭用", , Me!sub検索結果, acFormReadOnly End Sub 尚、全てのデーターは下記にあります。 www.ky-housing.jp/oshiete-goo/q-2.accdb

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

  • ベストアンサー
noname#140971
noname#140971
回答No.4

>VBAのプログラムだけで抽出しているため、 >詳細表示のフォームにAccessのNEXTボタンを付けた場合、 >抽出したデーターではなく、 >テーブルのデーターをそのまま順次表示してしまいます。 やっぱり意味が判りません。 詳細表示のフォームに WHERE節をしてするのとVBAのプログラムだけで抽出は矛盾。 それに抽出もしていないレコードデータを参照するコマンドボタンの必要性も今一。 ID__fld_1__fld_2 _1__A____________2 _2__B____________1 _3__C____________3 例えば、 Private Sub コマンド0_Click()   DoCmd.OpenForm "tab1", acNormal, , "fld_2=2" End Sub 質問文のみで判断すれば、このようにフォーム[tab1]を条件節を指定してオープン。 が、フォーム[tab1]のロードイベントでもレコードソースをセットしている。 ならば、条件節を指定する意味がないです。 どうしても、フォーム[tab1]のロードイベントでレコードソースを設定する必要があれば・・・。 Private Sub コマンド0_Click()   DoCmd.OpenForm "tab1", acNormal, , , , , _       "SELECT * FROM tab1 WHERE fld_2=2 ORDER BY fld_2" End Sub と、レコードソースそのものをフォーム[tab1]のオープン時に指定。 Private Sub Form_Load() If Len(Me.OpenArgs & "") Then Me.RecordSource = Me.OpenArgs End If End Sub Private Sub コマンド8_Click() DoCmd.GoToRecord , , acNext End Sub >尚、全てのデーターは下記にあります。 そんな、得体の知れないファイルをダウンロードする勇気はないです。 簡潔に、解決したい問題点を整理して提示されたし。 「出来ない」という事情説明よりも、解決すべき問題点の提示が肝心。 と、思います。

ja2bzx
質問者

お礼

サブフォームで抽出したデーターをレコードセットして再利用することには失敗しましたが、詳細フォームを開く際に同一条件で再度フィルターを掛けることで一応目的を達成することができました。ただ、新たな問題が発生しました。 Private Sub 次へ_Click() DoCmd.GoToRecord , , acNext End Sub これで移動はできますが、次のレコードが無いのに「次へ」をクリックするとエラー表示と一緒にプログラムまで表示されてしまいます。そこで、次のレコードがない場合にクリックを無効にしたいのですが、方法はありますか?

ja2bzx
質問者

補足

ご指導ありがとうございます。詳細フォームに検索結果のレーコードソースを設定すべく悪戦苦闘中です。(エラー続発)改めてご指導を戴くことになると思いますが、しばらくはいろいろ試してみます。ありがとうございました。

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>VBAのフィルターで抽出しています。 >従って、クエリーがないので詳細フォームのデーターソースをクエリーにすることができません。 できます

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

F店頭用のソースを表示したい順番に並べ替えを指定したクエリにしておけばいいのでは

ja2bzx
質問者

補足

VBAのフィルターで抽出しています。従って、クエリーがないので詳細フォームのデーターソースをクエリーにすることができません。 抽出結果は検索結果のフォームに表示されているのですが、詳細フォームのプロパティーでデーターソースを検索結果に変えることができないのです。Access2003をご使用でしたら、私のデーター(プログラム)を見て戴ければ私の質問をご理解戴けると思います。

noname#140971
noname#140971
回答No.1

>上記で表示されたF_店頭用の詳細画面に >【次へ】のボタンをAccessのマクロで設定しても、 >表示されるデーターは抽出されたものではなく、 >テーブルのデーター順に表示されます。 抽出されてもいないデータが表示されるなんありえないのでは?

ja2bzx
質問者

補足

Accessのクエリーには何ら手を加えておりません。VBAのプログラムだけで抽出しているため、詳細表示のフォームにAccessのNEXTボタンを付けた場合、抽出したデーターではなく、テーブルのデーターをそのまま順次表示してしまいます。

関連するQ&A

  • Access フォームで条件抽出したものを印刷プレビューしたい

    条件抽出したフォームを印刷プレビューしたいのですが、プレビューすると 全データが表示されてしまいます。 出来ればフォームのままプレビューしたいのですが、この場合は、 別にレポートを作成しないとダメでしょうか? 1.メインフォームにサブフォームを組み込んであります。 2.サブフォームはクエリに関連させています。 3.コマンドボタン[印刷]で印刷プレビューを表示させたい。 メインフォーム:商品 サブフォーム:取引商品 クエリ:商品リスト -----コマンド[印刷]のイベント----- Private Sub cmdPrint_Click() '商品取引記録を印刷プレビューで開く DoCmd.OpenForm "商品", acViewPreview, Me.Filter End Sub

  • 【Access】サブフォームのソースオブジェクトを入れ替えたい

    宜しくお願い致します。 F_1で検索条件を指定して、ボタンをクリックするとF_2が開きます。F_2はサブフォーム(F_SUB)を持っています。F_1での検索条件によってF_SUBのソースオブジェクトの値を変更させたいのですがうまくいきません。 F_1のボタンのクリックイベントに DoCmd.OpenForm "F_2" Forms![F_2]![F_SUB].SourceObject= "代入するデータ" と入れたのですがそもそも考え方が違うのでしょうか・・。宜しくアドバイスお願い致します。

  • Access 複数条件のフィルタ

    フォーム[F_MENU]に非連結のテキストボックス検索用A~Cで3つあります。 検索用A 検索用B 検索用C AかつBかつCという全件一致でフィルターをかけてフォーム[詳細]を開きたいのですが DoCmd.OpenForm "F_詳細", , , "A = '" & Forms!F_MENU!検索用A & "'" And "B = '" & Forms!F_MENU!検索用B & "'" And "C = '" & Forms!F_MENU!検索用C & "'" とやると、実行時エラー'13':型が一致しません。 と出てしまいます。 Aだけ、Bだけ、Cだけ、それぞれひとつずつ書けば、エラーなく結果が得られます。 DoCmd.OpenForm "F_詳細", , , "A = '" & Forms!F_MENU!検索用A & "'" DoCmd.OpenForm "F_詳細", , , "B = '" & Forms!F_MENU!検索用B & "'" DoCmd.OpenForm "F_詳細", , , "C = '" & Forms!F_MENU!検索用C & "'" おそらくANDの使い方が誤っていると思うのですが、添削お願いいたします。 全てのテキストボックス及び元テーブルのデータ型はテキスト型です。 条件は3つとも完全一致のみで、検索用ABC、F_詳細のABCそれぞれのカラムにNULL値はありません。 よろしくお願いします。

  • ACCESS VBAで抽出条件の書き方

    フォームに、テキストボックス(名前「txt住所」)とコマンドボタン(名前「cmd開く」)を作成しています。 テキストボックスに入力した値と等しいレコードだけを、F_顧客フォームに表示するには以下のように書く。 とテキストに書いてありました。 Private Sub cmd開く_Click() DoCmd.OpenForm "f_顧客", , , "住所='" & Me!txt住所 & "'" End Sub ・・・質問があるのですが。 なぜMe!txt住所は、&(文字列連結演算子)で囲まないといけないのでしょうか?? そして、& Me!txt住所のあとにスペースをいれないと、構文エラーになるのですが、スペースが必要なのはなぜでしょうか??

  • 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 フォームで抽出したデータのみをレポートで表示したい

    初歩的な質問だとは思いますが、どうしてもできないので教えてください。 フォームで抽出条件をメインフォーム抽出結果をサブフォームに表示するフォームを作成しました。 このサブフォームで抽出したものだけをボタンをクリックするとレポート表示するように作りたいのですができません。 どうすればいいでしょうか?

  • サブフォーム用のテーブルのデータで検索をしてマスタフォームに表示したい。

    Access2000での質問です。 T_マスタ(氏名ID・氏名)・T_サブ(氏名ID・データ年・データ種類)というテーブルから F_マスタ・F_サブというフォームを作成し、 F_マスタの中にサブフォームとしてF_サブを入れています。(氏名IDでリンク) F_検索というフォームを作成し、 データ年・データ種類で検索するようにしました。 この結果を、F_マスタで表示したいのですが、 F_マスタはT_マスタから作成されているため、検索結果が 希望するものではなくなってしまいます。 F_サブでみればきちんと検索されているのですが、 それでは氏名がみれないので。。。 このようなことはできるのでしょうか? F_検索の検索ボタンのコードです。 ------- Private Sub コマンド1_Click() Dim SQL As String Dim WhereCond As String Dim condNendo As String Dim condSyurui As String 'データ年 If Me!データ年.Value <> "" Then condNendo = "(T_サブ.データ年 like '*" & Me!データ年.Value & "*')" WhereCond = WhereCond & " AND " & condNendo End If '種類 If Me!データ種類.Value <> "" Then condSyurui = "(T_サブ.データ種類 like '*" & Me!データ種類.Value & "*')" WhereCond = WhereCond & " AND " & condSyurui End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "F_サブ", acNormal, , WhereCond End Sub ------- *上記の「F_サブ」を[F_マスタ」で開くようにしたいのです。 宜しくお願いします。

  • Access2010クエリ結果をデータシートビュー

    いつもお世話になっています。access超初心者です。 いろいろまちがっているかもしれませんが、よろしくお願いします。 クエリの検索結果をデータシートで表示させるフォームをつくりました。 フォームをナビゲーションウィンドから動作させると、データシートで表示されるのですが、メインフォームをつくってそこにボタンを置きクリックすると、単票フォームで表示されてしまいます。 ボタンクリックの際、「DoCmd.OpenForm "フォーム_クエリ"」としているのですが、 この部分になにか引数が必要なのでしょうか? それとも、サブフォームをつくって表示させるしかないのでしょうか?

  • ACCESSデータをEXCELに出力したい。

    ACCESSでフィルタを使って複数項目(空欄の箇所がある場合もあり)を抽出したデータ(サブフォームに表示)だけをEXCELに出力したいのですが、下記のコードではすべてのデータが出力されてしまいます。 ------------------------------- Private Sub 出力_Click() DoCmd.OutputTo acOutputQuery, "Q_出力", acFormatXLS End Sub ------------------------------- 情報が少なかったらすみません。 よろしくお願いいたします。

  • サブフォームでフィルタしたデータのCSV出力

    ACCESS2007 で テーブル  T_リスト name      cate aaa       123 sss       543 rtyy      45t4 フォーム 顧客があり リスト作成ボタンがあります フォーム顧客の中に フォーム電話帳サブフォームがあり データソースはT_リストです その都度手動でフィルタをかける作業をします リスト作成ボタンを押すとフィルタで抽出したデータだけを CSVに書き出したいと思っています。 下記実行しましたが、 T_リストの一行目のデータしか書き出しません DoCmd.OpenForm ("電話帳サブフォーム")でフォームを出さずに実行したいです どなたかよいアドバイスをお願いします。 Private Sub コマンド1_Click() Dim F As Variant Dim Field1 As String Dim Field2 As String Dim M As Double Dim i As Double Field1 = "name" Field2 = "cat1" M = Me![電話帳サブフォーム].Form.Recordset.RecordCount Open "C:\ListMaker\out.csv" For Output As #1 Write #1, Field1, Field2 DoCmd.OpenForm ("電話帳サブフォーム") Me.[電話帳サブフォーム].SetFocus For i = 1 To M DoCmd.GoToRecord acDataForm, "Me.電話帳サブフォーム", acGoTo, i Write #1, Me![電話帳サブフォーム]![name] i = i + 1 Next DoCmd.GoToRecord , , acFirst Close #1 End Sub