![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
初めて質問します。
アクセスでデータベースを作成しようと悪戦苦闘中です。
<質問>
元データとなる住所録テーブルAがあります。
テーブルBにテーブルAの情報+αのデータをフォームを使って入力したいのです。
(1)テーブルAにはコードがあり、テーブルBに入力する際に、そのコードを入力するとテーブルAからデータを取得でき、テーブルBにコピーとして取得したいです。
(2)また同じコードが複数ある場合は、別ウィンドウを
開きそこから選択してテーブルBにコピーしたいです。
(1)と(2)では方法が違うと思うのですが、どちらの場合も教えて頂けないでしょうか?
DLookup関数を使うのでしょうか・・・?
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
補足
No1の補足に
<A>テーブル
ID Data1 Data2
1 abc ***
<B>テーブル
ID A_ID A_Data1 A_Data2 Data3
1 1 abc *** ×××
とありますが、テーブルAと同一の内容をテーブルBに持たす必要性は?
ま、私の書いた例でも都道府県名がダブってますが^^;
No2の回答は、(2)の要望を実現する為に記載しました。
都道府県名も住所に連結すればいいのですが、複数の値を取得する例の為に書き直してあります。
住所には番地を付加する必要があるので、テーブルB上に別フィールドで持たせてあります。
テーブルAから取得した値を編集する必要が無いのなら、No1の例のようにして、補足の様にわざわざテーブルBに持たさない方がいいですよ。
モジュールを使用せず、フォーム上で選択したテーブルAの値に応じてテーブルAの内容を表示する例です。
テーブルAのレコードが少ない時は、この方法で大丈夫かと思います。
入力フォームのレコードソースをBとし、そのフォーム上でコンボボックスを作成し、コンボボックスのコントロールソースをA_ID、集合値ソースは、SELECT [A].[ID], [A].[Data1], [A].[Data2] FROM A; とします。
AテーブルのData1を表示したいテキストボックスのコントロールソースに、=[コンボ名].column(1)、Data2を表示したいテキストボックスのコントロールソースに、=[コンボ名].column(2)と設定してみてください。
No.2
- 回答日時:
補足無視で回答します。
テーブルAに郵便番号と都道府県、及び、市町村のデータが格納されている。
入力フォーム上で、郵便番号を入力すると、テーブルAから、該当する郵便番号の一覧が表示されたフォームが開き、選択にてフォーム上に該当住所をセット出来る。
該当の郵便番号が1件のみの場合は、無条件に住所をセットする。
呼び出しもとのフォームには、郵便番号・都道府県名・住所のテキストボックス
呼び出されるフォーム(例の場合は住所入力支援)には、呼び出しForm名・郵便番号・都道府県名・市区町村名漢字・町域名漢字が表示されるテキストボックス、SETというコマンドボタンがある。
入力フォーム
Private Sub 郵便番号_AfterUpdate()
If Not IsNull(Me.住所) Then
If MsgBox("住所を置き返しますか?", vbYesNo, "上書き確認") = 7 Then
Exit Sub
End If
End If
DoCmd.OpenForm "住所入力支援", acNormal, , "郵便番号 like '" & Me.郵便番号 & "*'"
Forms.住所入力支援.呼び出しForm名 = Me.Name
If Forms.住所入力支援.Recordset.RecordCount = 1 Then
Me.郵便番号 = Forms.住所入力支援.郵便番号
Me.都道府県名 = Forms.住所入力支援.都道府県名漢字
Me.住所 = Forms.住所入力支援.市区町村名漢字 & " " & Forms.住所入力支援.町域名漢字 & " "
DoCmd.Close acForm, "住所入力支援"
ElseIf Forms.住所入力支援.Recordset.RecordCount = 0 Then
MsgBox "該当なし"
Me.都道府県名 = Null
Me.住所 = Null
DoCmd.Close acForm, "住所入力支援"
End If
End Sub
呼び出されたフォームでは
Private Sub SET_Click()
r = dataset()
End Sub
Private Sub 町域名漢字_DblClick(Cancel As Integer)
r = dataset()
End Sub
Public Function dataset()
If Len(Me.呼び出しForm名) Then
If IsLoaded(Me.呼び出しForm名) Then
Forms(Me.呼び出しForm名).郵便番号 = Me.郵便番号
Forms(Me.呼び出しForm名).都道府県名 = Me.都道府県名漢字
Forms(Me.呼び出しForm名).住所 = Me.市区町村名漢字 & " " & Me.町域名漢字
End If
End If
DoCmd.Close acForm, Me.Name
End Function
お礼が遅くなって申し訳ございません。
頑張って色々試してたんですが、やっぱり難しいです(^_^;)
でも諦めずにボチボチ頑張ります。
有り難うございました<(_ _)>
No.1
- 回答日時:
少し、考え方を整理する必要があるのでは・・・。
1、テーブル設計とデータ参照。
<A>
ID Data1 Data2
1 A xxxx1
2 A xxxx2
3 B yyyyyy
テーブル<B>は、次のようにしたいとします。
ID A_Data2 Data3
1 XXXX1 abc
2 XXXX2 efg
この場合、テーブル<B>は次のように設計します。
<B>
ID A_ID Data3
1 1 abc
2 2 efg
この設計で、目的を達成するには、
(1)テーブルデザインで、列[A_ID]を選びます。
(2)下段の[フィールプロパティ]の[ルックアップ]をクリックします。
(3)表示コントロールを[コンボボックス]にします。
(4)[値集合ソース]をクリックして、{SELECT A.ID, A.Data1, A.Data2, * FROM A;}となるように<A>の列を選びます。
(5)[列数]を{3}にします。
(6)[列幅]を{0cm;0cm;3cm}
これで、目的は達成されます。
2、テーブル<B>の入力フォーム。
ただ単に、<B>を選んで入力フォームを生成すれば、質問者が望むようなフォームが自動生成されます。
参照する<A>のデータが一つであれ複数であれ自動的に参照される形のフォームが出来上がります。
*つまり、悪戦苦闘中する必要は全くないということです。
この回答への補足
早速のご回答有り難うございました。
上記の作業をやってみました。
コンポボックスはうまく表示できました。
でも私の説明不足だったのですが、
<A>テーブル
ID Data1 Data2
1 abc ***
<B>テーブル
ID A_ID A_Data1 A_Data2 Data3
1 1 abc *** ×××
としたいのです。
上記のやり方ですと、A_IDの列にコンポボックスが
表示され選択できるようにはなるのですが、
次のカーソルにとんだ時、
A_Data1 A_Data2 の列にも自動的に数値が入るようにしたいのですが出来ません。
どうすればいいでしょうか?
折角丁寧にご説明いただいたのに申し訳ございませんが、もう少し私にお知恵を貸してください。
よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クエリ上でフィールド名が2つ...
-
アクセス・テーブルの改行につ...
-
アクセスでテーブル入力用のフ...
-
アクセスクエリで英数字のみ半...
-
アクセスでの、フォームとテー...
-
access テーブルの色分けについて
-
アクセスに自動入力を入れたい
-
INT関数のバグ?
-
SQL文で パラメータが少なすぎ...
-
ACCESSの時間帯の抽出について
-
ACCESS 「パラメータの入力」...
-
差込印刷での全角表示について...
-
アクセスのエラー「クエリには...
-
エクセルデータをワードで差し...
-
クロス集計のユニオンクエリー...
-
更新クエリをリンクデータベー...
-
エクセルにおける「フィールド...
-
エクセルのマクロで検索・抽出...
-
access2010 クロス集計後の計算...
-
PCゲームから音声ファイルを抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クエリ上でフィールド名が2つ...
-
アクセス・テーブルの改行につ...
-
Accessで更新履歴情報を保存(...
-
アクセス: フォーム上で計算...
-
Access フォーム上でのテキス...
-
ACCESSの時刻の引き算
-
Access 別テーブルにある値を抽...
-
アクセスクエリで英数字のみ半...
-
INT関数のバグ?
-
アクセスでの、フォームとテー...
-
アクセス:SQLでフィールド...
-
access テーブルの色分けについて
-
ACCESSのリストボックスで複数...
-
アクセスでフォームに入力した...
-
アクセスに自動入力を入れたい
-
Accessでチェックボックスから...
-
アクセスでテーブル入力用のフ...
-
Access 住所入力支援が機能しま...
-
Access ルックアップが反映され...
-
Access フォームで複数テーブル...
おすすめ情報