• 締切済み

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

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.7

>フィールド1=氏名 フィールド2=生年月日 フィールド3=ID ★主キーはありますか?、あるとすればどれですか? ★この中の《フィールド3=ID》について  ・IDのデータ型は数値型の長整数ですか  ・IDのデータ型はオートナンバー型の長整数ですか  通常のテーブルは   オートナンバー型のIDを主キーしてフィールドの先頭に   して他のフィールドが続きます ---------------------------------------------------------- 以上補足願います

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.6

答№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)
回答No.5

chayamatiさんの回答No.4ですが > 回答№3の続きです。 私の回答の続きをしてるのでしょうか? kkkkkm ベストアンサー率65% (1571/2404) 2024/03/21 22:15 回答No.3 ふと思い出したのですが以前に同じような質問してましたよね。 以下略

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

回答№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.3

ふと思い出したのですが以前に同じような質問してましたよね。 検索するとしか質問にないのでその後何をするのかが不明ですが、もし、(氏名)と(生年月日)の有無によって以下の質問の時のようなこと(追加もしくは更新)をしたいのでしたら以下の質問の回答No.1のコードを変更すればいいのではないでしょうか。 エクセルデータをアクセステーブルにコピーするVBA https://okwave.jp/qa/q10231702.html

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

susidokei様  アクセスを理解しようと色々苦労なさっているようですね  エクセルはどのセルにも数値、時刻、文字列、計算式が入力出来ますが  項目名にデータ型(オートナンバー型,数値型,文字列型,日付/時刻型,コンボボックス型)を定義します  またテーブル名の頭に M_(マスタ) T_(トランザクション),S_(参照),W_(テンポラリ)と区分しています  以上を前提にご質問の名簿テーブルは  T_名簿  ・ID:主キー,長整数型,オートナンバー型  ・氏名:テキスト型,インデクスプロパティーで重複なし  ・生年月日:日付/時刻型 >このテーブルTのフィールド1の行にあるかどうか  これを調べるVBAのコードを知りたいのですが、  検索ワードがM.xlsxのセルA1という定義でコードを御教示ください  氏名で一致したデータがあるときに  そのデータのフィールド2の生年月日でもB1のデータと一致するかを  続けて検索するとしますここまでの動作のコードを御教示願えたら 助かりま エクセルファイルをW_名簿へインポートし !W_名簿を上書きすると氏名が重複するデータははじかれて  W_名簿で更新すると生年月日が書き換えられます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

M.xlsxをリンクテーブルにして選択クエリで表示したほうが簡単だと思いますけどVBAがいいのでしょうか。

関連するQ&A