- 締切済み
accessテーブル検索 エクセルのセルデータから
エクセルファイル M.xlsxの セルA1(氏名)=やまだやまよ B1(生年月日)=1980/3/15 という ひらがなの氏名があるとします access H.mdbというファイルのなかの テーブルTにおいて フィールド1=氏名 フィールド2=生年月日 フィールド3=ID のテーブルがあり このテーブルTに 上記エクセルのA1の氏名が あるかどうか このケースですと やまだやまよ が このテーブルTのフィールド1の行にあるかどうか これを調べるVBAのコードを 知りたいのですが、 検索ワードが M.xlsxのセルA1 という定義でコードを御教示ください 氏名で一致したデータがあるときに そのデータのフィールド2の生年月日でもB1のデータと一致するかを 続けて検索するとします ここまでの動作のコードを 御教示願えたら 助かります 宜しくお願い致します win10 office365
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
>フィールド1=氏名 フィールド2=生年月日 フィールド3=ID ★主キーはありますか?、あるとすればどれですか? ★この中の《フィールド3=ID》について ・IDのデータ型は数値型の長整数ですか ・IDのデータ型はオートナンバー型の長整数ですか 通常のテーブルは オートナンバー型のIDを主キーしてフィールドの先頭に して他のフィールドが続きます ---------------------------------------------------------- 以上補足願います
- chayamati
- ベストアンサー率41% (260/624)
答№5の訂正です 「回答№3の続きです」は「回答№2の続きです」の誤りです。 KKKKKm様大変ご迷惑をお掛けして申し訳ありません またご指摘ありがとうございます。 ------------------------------------------------------ sushidokei様 ここで自分が想定したシステムを記述します。 1.質問の項目が氏名、生年月日のみですので名簿と命名 2.M_名簿とW_名簿 2-1 W_名簿 ・ID :主キー、オートナンバー型 ・氏名:テキスト型 ・生年月日:日付/時刻型 2-2 W_名簿 ・ID :主キー、オートナンバー型 ・氏名:テキスト型、インデクスプロパティー=重複なし ・生年月日:日付/時刻型 3.処理の流れ エクセルの情報をW_名簿へインポートして VBAでW_名簿をM_名簿へインサート 続いて生年月日を更新 UPDATE M_名簿 INNER JOIN W_名簿 ON M_名簿.氏名 = W_名簿.氏名 SET M_名簿.生年月日 = [W_名簿].[生年月日];")
- kkkkkm
- ベストアンサー率66% (1719/2589)
chayamatiさんの回答No.4ですが > 回答№3の続きです。 私の回答の続きをしてるのでしょうか? kkkkkm ベストアンサー率65% (1571/2404) 2024/03/21 22:15 回答No.3 ふと思い出したのですが以前に同じような質問してましたよね。 以下略
- chayamati
- ベストアンサー率41% (260/624)
回答№3の続きです。VBAはアクセス側ですね、氏名が重複なしに定義しておくことがポイントです 空のフォームに、《最新》とラベルを配置して、これのクリックイベントで以下の処理が起動します。 ------------------------------------------------------------------------------------ Private Sub 最新_Click() 'エクセルの情報を名簿に追加(既にある情報は弾かれる) DoCmd.RunSQL ("INSERT INTO M_名簿(氏名,生年月日) SELECT 氏名,生年月日 FROM W_名簿;") '生年月日の更新 DoCmd.RunSQL ("UPDATE M_名簿 INNER JOIN W_名簿 ON M_名簿.氏名 = W_名簿.氏名 SET M_名簿.生年月日 = [W_名簿].[生年月日];") End Sub
- kkkkkm
- ベストアンサー率66% (1719/2589)
ふと思い出したのですが以前に同じような質問してましたよね。 検索するとしか質問にないのでその後何をするのかが不明ですが、もし、(氏名)と(生年月日)の有無によって以下の質問の時のようなこと(追加もしくは更新)をしたいのでしたら以下の質問の回答No.1のコードを変更すればいいのではないでしょうか。 エクセルデータをアクセステーブルにコピーするVBA https://okwave.jp/qa/q10231702.html
- chayamati
- ベストアンサー率41% (260/624)
susidokei様 アクセスを理解しようと色々苦労なさっているようですね エクセルはどのセルにも数値、時刻、文字列、計算式が入力出来ますが 項目名にデータ型(オートナンバー型,数値型,文字列型,日付/時刻型,コンボボックス型)を定義します またテーブル名の頭に M_(マスタ) T_(トランザクション),S_(参照),W_(テンポラリ)と区分しています 以上を前提にご質問の名簿テーブルは T_名簿 ・ID:主キー,長整数型,オートナンバー型 ・氏名:テキスト型,インデクスプロパティーで重複なし ・生年月日:日付/時刻型 >このテーブルTのフィールド1の行にあるかどうか これを調べるVBAのコードを知りたいのですが、 検索ワードがM.xlsxのセルA1という定義でコードを御教示ください 氏名で一致したデータがあるときに そのデータのフィールド2の生年月日でもB1のデータと一致するかを 続けて検索するとしますここまでの動作のコードを御教示願えたら 助かりま エクセルファイルをW_名簿へインポートし !W_名簿を上書きすると氏名が重複するデータははじかれて W_名簿で更新すると生年月日が書き換えられます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
M.xlsxをリンクテーブルにして選択クエリで表示したほうが簡単だと思いますけどVBAがいいのでしょうか。