• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ひとつつのテーブルから二つのフォームを作成しました。そのフォームを連結させるにはどうしたらよいか教えてください。)

二つのフォームを連結する方法と隠れフォームのデータ表示問題

このQ&Aのポイント
  • 既存のフォームから隠れフォームへのデータ連携方法
  • 隠れフォームのデータが表示されない問題の解決方法
  • 使用していない項目を隠したフォームの作成方法

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

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

そのテーブルに、主キー(もしくは重複なしのインデックスつきの)フィールドはありますか? もしあるのでしたら、 > 隠したい項目だけを選んでクエリを作成してそこから隠れフォームを作成しました。 とのことなので、そのクエリに、「既存フォームで現在表示中のレコード」に絞り込む条件を 追加してやるのが一番簡単だと思います。 1)隠れフォームのレコードソースにしているクエリをデザインビューで開く 2)主キー(または重複なしのインデックスつきの)フィールドがまだ追加されていない場合は  それをドラッグ&ドロップなどで追加 3)上記フィールドの『抽出条件:』欄に、以下のような式を入力  ・既存フォームの名前が「フォーム1」、上記フィールドが「ID」の場合:   [Forms]![フォーム1]![ID]  ・既存フォームがサブフォームを持ち、データ表示をそのサブフォームで行っている場合:   (メインフォームが「フォーム1」、サブフォームコントロール(→「ソースオブジェクト」として   指定しているフォーム名ではないので注意)が「サブ1」、上記フィールドが「ID」として)   [Forms]![フォーム1]![サブ1]![ID] 4)クエリを保存して閉じる ・・・以上です。 なお、フォーム1が開いていない状態でこの隠れフォームを開くと、「[Forms]![フォーム1]![ID]」 (または「[Forms]![フォーム1]![サブ1]![ID]」)の入力を求めるパラメータダイアログが表示される ようになります。   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ※蛇足※ Husky2007さんの後者案を、375kさんのフォームに現状のまま適用した場合、「現在レコード ソースに設定済のクエリ」がいったん読み込まれた後に、再度SQL文がレコードソースとして 設定されることになるように思います。 もしそちらを採用されるのでしたら、隠れフォームのレコードソースは削除した上で、 Private Sub Form_Open(Cancel As Integer)   If Len(Me.OpenArgs & "") = 0 Then     Me.RecordSource = "クエリ1"   Else     Me.RecordSource = Me.OpenArgs   End If End Sub とされるのがよいのではないでしょうか。(現在のレコードソースが「クエリ1」だったとして)

375k
質問者

お礼

お返事が遅くなって申し訳ありませんでした。 教えていただいた内容を参考に自分が使っている.mdbに適するようにアレンジしてみます。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.1

Access の質問なんだろうか・・・。多分、そうだと仮定して・・・。 1、リンクを利用する。 Private Sub コマンド_詳細フォームを開く_Click() On Error Resume Next   DoCmd.OpenForm "tab1 full", , , "[ID]=" & Me![ID] End Sub 2、OpenArgs を利用する。 Private Sub コマンド_詳細フォームを開くII_Click()   DoCmd.OpenForm "tab1 full", , , , , , "SELECT * FROM tab1 WHERE ID=" & Me.ID End Sub tad1_full: Private Sub Form_Open(Cancel As Integer)   If Len(Me.OpenArgs & "") > 0 Then     Me.RecordSource = Me.OpenArgs   End If End Sub 前者はフィルターがかかります。 後者は、1レコードだけを検索・表示します。 そういう意味では、後者がお勧めです。

関連するQ&A