• 締切済み

ACCESS フォームからフォームへの連携

例えば  A_テーブル(フィールド:会員NO・顧客名・連絡  先)でのA_フォーム上でコマンドボタン「B」を  作成しています。ボタンをクリックすると   Docmd. OpenForm"B_フォーム" が実行されます。  実行され新しく開いた  B_フォーム(フィールド:管理NO・会員NO・備考) の会員NOの中に、その時開いていたA_テーブルの会 員NOが入っている状態にすることは可能でしょう  か? 乱文で大変申し訳ありません。 現在顧客管理のデータベースを作りはじめましたが なにぶん手探り状態ですので、今後ともよろしくお 願いいたします。 ( WindowsXP : Access2000)

みんなの回答

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.4

maruru01さんのおっしゃるように、 B_フォーム に抽出条件を設定して開く方法でしたら、 A_フォーム の記述は、 DoCmd.OpenForm FormName:="B_フォーム", WhereCondition := "会員NO = " & CStr(Me!会員NO) または、 DoCmd.OpenForm "B_フォーム", , , "会員NO = " & CStr(Me!会員NO) B_フォーム で、([次のレコード]ボタン等で)他のレコードにも移動する必要があるなら、 A_フォーム で、 DoCmd.OpenForm FormName:="B_フォーム", OpenArgs:=CStr(Me!会員NO) として、 次に、Bフォームの読み込み時イベントに、以下のコードを記述してください。 Private Sub Form_Load() '会員NO のテキストボックスへフォーカスを移す Me![会員NO のテキストボックス名].SetFocus ' A_フォームで指定した 会員NO のレコードへ移動 DoCmd.FindRecord OpenArgs End Sub HELP で、OpenForm メソッド、OpenArgs プロパティ、Load イベント、FindRecord メソッド を確認してみてください。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

エラーの出た行を教えて下さい。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 B_フォームの[会員NO]は非連結で、A_フォームの会員NOの値を単に入力したいということでしょうか。 それなら、 DoCmd.OpenForm "B_フォーム", , , , , ,Me!会員NO として、B_フォームのLoadイベントで、 Me!会員NO.Value = Me.OpenArgs とすれば出来ると思います。 もし、B_フォームが何かのテーブルと連結していて、A_フォームで選択した会員NOのデータを表示したいのなら、 DoCmd.OpenForm "B_フォーム", , ,"会員NO = '" & Me!会員NO & "'" となります。

riroyou2
質問者

補足

早速のご回答ありがとうございます。 すぐに試して見ましたが  「コンパイルエラー    修正候補:ステートメントの最後」 と返されました。

  • redsky
  • ベストアンサー率18% (66/360)
回答No.1

できますよ。 BフォームのソースレコードをAフォームのそれと同じにすれば いいのではないでしょうか? BフォームのフォームプロパティのデータタブのレコードソースをAフォーム と同じにすればOKです。

関連するQ&A

  • Access 既に開いているフォームへの値渡し

    Access初心者です。 業務管理DBを作成し、行き詰ってしまいました。 どなたかアドバイスお願いいたします。 フォームA:  受付日付、担当、顧客情報、注文内容などそれぞれのマスタテーブルからおもなフィールドを  クエリで作成 フォームB:  顧客情報テーブルを単票で作成 注文受付時に顧客がリーピータでない場合、フォームAからコマンドボタン実行し、 フォームBを開き、顧客情報テーブルに新規登録します。  《AからBをOpen》 フォームBで顧客情報の新規登録完了後、コマンドボタンを押下し、 その値(顧客ID)をフォームAに渡したいのですが、うまくいきません。  《B→A 値引き渡し》 --------------- Private Sub cmd_BT_Click() DoCmd.OpenForm "フォームA", , , "顧客ID=" & Me.顧客ID End Sub --------------- 他のフォーム間 《A→C》 では、上記のコマンドで正常に動作することを確認できています。 フォームA側のプロパティなど調べましたが、見当がつきません。 こういう場合は、どのあたりを手掛かりに調べればよろしいのでしょうか。 キーワードなどなんでも結構です。 用語などまだ理解していないところはありますが、 なにとぞご教示願います。

  • アクセス フォームをリクエリしたい

    フォームAを閉じて、フォームBのテーブルに基づいたデータをリクエリ(更新)したいのですが DoCmd.Close acForm, "フォームA" DoCmd.Requery "フォームB" 実行時エラー2109 「カレントレコードには、フォームBという名前のフィールドはありません。」となってしまいます。 フィールド名ではなくフォームB全体を更新したいのですが、どうすればいいでしょうか? フォームBは開いている状態です。

  • Accessの検索フォーム

    以前にも似たような質問をして、その時は解決したのですが、また同じようなことでつまづいて、以前の回答をみて、 そのとおりにやってるつもりなのに、できなくて…。 テーブル1とフォーム1・フォーム2があります。 フォーム1に入力された情報をもとに、テーブル1の内容を検索して、フォーム2に表示するものを作成しています。 テーブル1には「***.***.**.☆」(情報)という形の情報が入っています。 *の部分の桁数は固定で☆は不定形です。(テキスト形式) フォーム1に入力された情報は「(***.***.)**.*」(検索1)や「(***.***.)**.**」(検索2)などです。 ※()内は入力せず テーブル1の情報の9文字目以降と、フォーム1に入力された情報を比べたくて、以下のようなものを作成しました。 (多少省略等があります) condKensaku = "(Mid(Val(テーブル1.情報),9) between " & Val(Me!検索1.Value) & " and " & Val(Me!検索2.Value) & ")" wherecond = condKensaku DoCmd.OpenForm "フォーム2", acNormal, WhereCond これを実行すると 実行時エラー '2501': OpenForm アクションの実行はキャンセルされました。 と出て、デバッグを押すと、 DoCmd.OpenForm "フォーム2", acNormal, WhereCond の行が黄色になります。

  • フォームの作り方 アクセス2000

    アクセス2000を使い始めた初心者です。 顧客群に関するテーブルAがすでにあります。 このテーブルは事情があって、フィールドを追加することはできません。 もうひとつのテーブルBを作って、こちらに情報を追加するためのフィールドをいくつか作ります。 やりたいことは、 入力用のフォームに、テーブルAの情報内容を表示させて、テーブルBの入力をしたいのです。 クエリを作ってリレーションを設定するのだろうと思うのですが、具体的に進め方がわかりません。 よろしくお願いします。

  • MSアクセス 条件に合うデータのみを抽出してフォームを開けたい

    アクセスの初心者です。ご指導よろしくお願いします。 フォームで条件に合うデータのみを抽出してフォームを開けたいと四苦八苦しています。 現在は汎用フォームを使い、パスIDとパスワードを入れて照合するとDoCmd.OpenForm "フォーム名", , , " [社員No] = 1" で[社員No]「1」のデータのみ抽出した別フォームが開くようになっています。 希望としては、照合した人が照合した人が持つ[社員No]のデータのみが開くようにしたいと考えています。 パス管理のテーブルは ID、 社員No、社員名、パスID、パスワードになっています。   DoCmd.OpenForm "フォーム名", , , " [社員ID] = 1" の「=1」のところが[パスID][パスワード]と一致する社員Noに置き換える方法を教えてください。 わかりにくい質問で申し訳ないですが、よろしくお願いします。

  • MSアクセス 条件に合うデータのみの抽出してフォームを開けたい

    アクセスの初心者です。ご指導よろしくお願いします。 フォームで条件に合うデータのみを抽出してフォームを開けたいと四苦八苦しています。 現在は汎用フォームを使い、パスIDとパスワードを入れて照合するとDoCmd.OpenForm "フォーム名", , , " [社員No] = 1" で[社員No]「1」のデータのみが開くようになっています。 希望としては、照合した人が照合した人が持つ[社員No]のデータのみが開くようにしたいと考えています。 パス管理のテーブルは ID、 社員No、社員名、パスID、パスワードになっています。   DoCmd.OpenForm "フォーム名", , , " [社員ID] = 1" の「=1」のところが[パスID][パスワード]と一致する社員Noに置き換える方法を教えてください。 わかりにくい質問で申し訳ないですが、よろしくお願いします。

  • accessでフィールドを連携させたい

    access2002をつかっています。 テーブルAの中のリストに、IDのフィールドがあり、 そこにひもづいたテーブルBがあります。 (例えば、テーブルAが人のデータで、  テーブルBがその人との対応履歴です。) フォームで、テーブルAの一覧リスト(表形式)がまず見られるものをつくりました。 そこから、「詳細をみる」というボタンをつけて、 押すと、リストBの中でひもづいているものだけ見えます。(単票形式で) 見る分にはこれでよかったのですが、 そこから新規にテーブルBに書き込むときに、 AのIDを勝手に書き込んでほしいのです。 (引き継いでほしい。) でも、現状では、そのボタンを押して、 その先で新規に、Bへデータを書き込もうとすると、 ID部分は引き継がれません。 最初からサブフォームなどのウィザードでつくれば よかったのかもしれませんが、 この状態からうまくできる方法はありませんか? とっても分りづらい説明で申し訳ないのですが、 もしわかる方がいらっしゃいましたら、教えてください。

  • ACCESS フォームの値がすぐに表示されない

    フォームの値がすぐに表示されない。 宜しくお願い致します。皆様の知恵をお貸しください。 WinXPでACCESS2000を使っております。 テーブル_在庫には 取引先|商品名|買取金額|売上金額|日付のフィールドがあり A社|みかん|0|10000|2012/11/13 A社|りんご|10000|0|2012/11/13 B社|ぶどう|5000|0|2012/11/13 C社|かき|0|3000|2012/11/13 というレコードがあります。 フォーム_取引先のコンボボックスで、A社を選びコマンドボタンで、 クエリ_取引先買取、クエリ_取引先売上 を実行して、A社だけの取引を抽出し、その結果を フォーム_取引先買取とフォーム_取引先売上 に、表形式で表示させています。 このままでは、フォームが2つになるので、新たに基になるテーブルも クエリも持たない、フォーム_売買を作りました。 このフォーム_売買にテキストボックスを6つ作り次のようにしました。 テキストボックス|コントロールソース ---------------------------------------- テキスト1(取引先)|=Forms![取引先]![コンボ1] テキスト2(買取金額)|=Forms![買取]![テキスト1] テキスト3(売上金額)|=Forms![売上]![テキスト1] テキスト4(買取報償料)|非連結 テキスト5(売上報償料)|非連結 テキスト6(合計金額)|=[テキスト2]+[テキスト4]-[テキスト3]-[テキスト5] ここで、問題になっているのが、フォーム_売買を表示させた時に、テキスト1は 普通にA社と表示されているのですが、テキスト2とテキスト3に金額が表示され ません。 しかし、テキスト4もしくはテキスト5に金額を入力すると、表示されるようになり ます。 テキスト4とテキスト5のどちらかには必ず金額を入力するので、このままでも とりあえずは計算出来ているのですが、できれば、フォームが表示された時に 初めからテキスト2とテキスト3には金額が入っていたほうがいいと思い、あれ これ試してみたのですが、出来ませんでした。 フォーム_取引先のコマンドボタンは次のように実行しています。 Dim stDocName As String Dim stDocName1 As String stDocName = "取引先売上" DoCmd.OpenQuery stDocName, acNormal, acEdit stDocName1 = "取引先買取" DoCmd.OpenQuery stDocName1, acNormal, acEdit DoCmd.OpenForm stDocName, acNormal DoCmd.OpenForm stDocName1, acNormal DoCmd.OpenForm "売買", acNormal どうすれば、フォーム_売買が表示された時に、テキスト2とテキスト3に金額が 入っているようになるのでしょうか。 素人が見よう見まねで作っておりますので、おかしい点が多々あるかと思い ますが、ご教授のほど、よろしくお願い致します。

  • ACCESS VBA 一覧から別フォームを開きたい

    顧客管理をしようとしています。 表形式のフォームで一覧を表示させています。 一覧の詳細セクションに「詳細」というボタンをつけていて、 すべての行に、詳細ボタンを表示させています。 この詳細ボタンを押したら、この顧客カード(単票形式のフォーム)を開きたいと思っています。 現在、下記の記述をしていますが、 「抽出条件でデータ型が一致しません」とのエラーメッセージが出ます。 どこを修正したら良いかわかりません。 わかる方、よろしくお願いいたします。 現在の記述 Private Sub コマンド29_Click() If Me.NewRecord Then MsgBox "新規レコードから詳細情報を表示することはできません。" Else DoCmd.OpenForm "顧客フォーム", , , "顧客ID='" & 顧客ID & "'" End If End Sub

  • Access2000でボタンを押した際、各タブコントロールのタブを開くには・・・

    こんにちは。 アクセス2000でメニューフォームに幾つかのボタンを作っております。 また別のフォーム(顧客管理という名前)でタブコントロールを配置し(5ページ) それぞれのタブには名前を付けております。1ページ目から「顧客情報」 、「顧客当日データ」、「顧客契約内容」、「顧客履歴」、「顧客領収」の順です。 メニューフォームのボタンを押した時、この顧客管理フォームのタブ コントロールをそれぞれを開くにはどのようにインベントを書けばいい のでしょうか? イメージ的には、(1)のボタンを押した時「顧客情報」のタブを開く。 (2)のボタンを押した時「顧客当日データ」、(3)のボタンで・・・の感じです。 宜しくお願いします。 Private Sub コマンド78_Click() DoCmd.OpenForm "顧客管理"・・・??? End Sub

専門家に質問してみよう