- ベストアンサー
ACCESS フォームについて
お世話になっております。 ACCESSのフォームについてのご質問ですが、 2つのフォーム『fm_A』と『fm_B』があり、 fm_A・・・テキストボックス・コマンドボタン fm_B・・・テキストボックス・コマンドボタン グローバル変数一つ があります。 fm_Aのコマンドボタンをクリックすると、fm_Bが開き、fm_Bが開いているときはfm_Aに戻れなくしようとしております。 fm_Bのテキストボックスへ文字をいれ、fm_Bのコマンドボタンをクリックするとグローバル変数へその内容を保存。 保存後fm_Bが閉じてそのグローバル変数をfm_Aのテキストボックスへ入れる。 上記の作業をしようとおもったのですが、どうすればいいのかわかりません。 VB6の場合はform.showを使ってオプションで固定を使えば出来たのですが・・・ よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
○fm_Aのコマンドボタンクリック DoCmd.OpenForm "fm_B", acNormal, , , , acDialog fm_Aのテキストボックス = グローバル変数 ○fm_Bのコマンドボタンクリック グローバル変数 = fm_Bのテキストボックス DoCmd.Close こんな感じでもできます(あまり素敵な感じではないですが...)。
その他の回答 (2)
・フォームAからフォームBをオープンする。 ・オープン時に、フォームBをクローズした際に更新するテキストボックスの名前を渡す。 ・フォームBを閉じない限りフォームAには戻れません。 ・フォームBを閉じる際にフォームAの指定されたテキストボックスにフォームBの値を代入します。 こんな具合でしたら、 <フォームA> Private Sub コマンド_フォームB_Click() On Error Resume Next DoCmd.OpenForm "フォームB", , , Null, , , "テキスト1" End Sub <フォームB> Private Sub Form_Close() Forms("フォームA").Controls(Me.OpenArgs) = Me.テキスト1 End Sub フォームBのプロパティ ・ポップアップ=はい ・作業ウインドウ固定=はい この場合、広域変数は使う必要がありません。
補足
説明が不十分でもうしわけありません。広域変数を使用し、再現が必要でした。
- O_cyan
- ベストアンサー率59% (745/1260)
>VB6の場合はform.showを使って・・ Accessでもshowメソッドは使えます。 VisibleプロパティにFalseやTrueを設定して代用するとか・・。Me.Visible = False みたいに。 fm_Aのボタンに Dim stDocName As String Dim stLinkCriteria As String stDocName = "fm_B" DoCmd.OpenForm stDocName, , , stLinkCriteria Me.Visible = False としてfm_Bを開きfm_AのVisibleをFalseにする。 fm_Bのボタンに(fm_BテキストボックスをText2・fm_AテキストボックスをText1として) Const FORM_NAME = "fm_B" 変数 = Me!Text2 Forms!fm_A.Text1 = 変数 'グローバルで使用しないなら直に代入しても良いと思うのですが。 Forms!fm_A.Requery Forms.fm_A.Visible = True DoCmd.Close acForm, FORM_NAME こんな感じではどうでしょうか。
お礼
ご返答ありがとうございます。 解決いたしました。また何かありましたらよろしくお願いします。
お礼
ありがとうございます。 上記の方法で出来ました。 あまり素敵ではないとおっしゃっておりますが、スマートですので感謝です。