• ベストアンサー

アクセスVBAで

いつもお世話になっております。 アクセスでCSVからインポートするテーブルで下記のようなフィールドがあります。 受注NO| 枝番| コード 123  | 0  | NULL 123  | 1  | 24 124  | 0  | 25  ・     ・     ・  ・     ・     ・  ・     ・     ・  ・     ・     ・ というようにコードがNULL値の場合同じ受注番号のものからコードを拾い、値を代入をするというVBAを組みたいと思っているのですが、なかなか上手く動きません。 大変お手数ですがどなたかお知恵を拝借できればと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • ganbaro
  • ベストアンサー率45% (43/94)
回答No.2

VBA出なくても通常のクエリーで解決できます。 ただし、CSVはいちど取り込んでおかねばなりません。 2つのクエリーを作成 1つ目はコードがNOT NULLの受注番号抽出 2つ目はコードが NULLを抽出し1つ目のクエリーと同じ受注番号のデータからコードを更新するものです。 1つ目のクエリー SELECT 受注テーブル.受注NO, 受注テーブル.コード FROM 受注テーブル WHERE (((受注テーブル.コード) Is Not Null)) ORDER BY 受注テーブル.受注NO; 2つ目のクエリー UPDATE 受注テーブル INNER JOIN クエリ1 ON 受注テーブル.受注NO = クエリ1.受注NO SET 受注テーブル.コード = クエリ1!コード WHERE (((受注テーブル.コード) Is Null)); でいかがでしょうか

Mtr2004
質問者

お礼

お手数お掛けしました。 お陰で上手くいきました。 難しく考えていた自分が恥ずかしいです。 大変勉強になりました。どうもありがとうございます。

その他の回答 (1)

  • tksoft
  • ベストアンサー率36% (99/273)
回答No.1

>コードがNULL値の場合同じ受注番号のものからコードを拾い、値を代入をする とありますが、受注番号が同じであれば、必ずコードも同じになるのでしょうか? 例えば 受注NO 枝番  コード 123   0   NULL 123   1   24 123   2   25 のような場合、受注NO=123、枝番=0のコードはどのような値になるのでしょう? それとも、このような組み合わせは“絶対に”存在しないのでしょうか?

Mtr2004
質問者

補足

早々の返答ありがとうございます。 受注NOが複数存在して、枝番が分かれる場合はその枝番の一番大きいものにしかコードが入力されない仕組みのシステムから出力されるCSVなんです。同じ受注NOに対してはコードそのものは1つしか存在しません。 ですので、ご質問のような現象は存在せずに受注番号123の枝番2に25と言う形で枝番0と1にはコードがnull値として登録されています。 お手数をかけますが何卒よろしくお願いします。

関連するQ&A