- ベストアンサー
アクセスの更新クエリ
私は以前に、アクセスの桁あわせについての質問をしたことがあるものです。その時は『Format関数』を利用してやる方法を教えていただいたのですが、新たに疑問が出たので質問をさせていただくことにしました。 状態としましては、今エクセルのシートを二つインポートし、片方は1~20の連番のフィールド(テキスト型)があります。もう一つは01~20の連番のフィールド(テキスト型)です。この二つのテーブルの間にリレーションシップをとりたいので型は揃えていないといけないので、『Format関数』を利用し、【Format(Val([code]),"00")】と入力し更新クエリを実行しました。 実際に処理をしていくと、フィールド名が同じのテーブルが幾つもある状態なのですが、この場合その都度更新クエリをテーブルの数だけ作成しなくてはいけないのでしょうか?それとも、フィールド名が同じの場合何か1つの更新クエリで桁をあわせることは可能なのでしょうか? 長くなってしまいましたが、どなたかご存知の方教えて下さい。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは クエリでは難しいと思います。 VBAからSQLを実行する形なら対応できると思います。 VBAからSQLを実行するサンプルは以下のようにします。 DoCmd.RunSQL [SQL文] ご質問の例では、テーブル1のcodeフィールドを変換するには以下のようになります。 DoCmd.RunSQL "UPDATE テーブル1 SET テーブル1.code = Format(Val([code]),'00');", -1 「テーブル1」の部分を変数にして、他のテーブルにも繰り返します。 For Eachが使えそうですが、具体的な条件を教えてください。 特に対象となるテーブルについて「名称はいつも同じですか?」というのがポイントになります。 また、データの性質上、各テーブルをくっつけても構わなければ、インポートしたら追加クエリを使って一つのテーブルにまとめてしまう方法もあります。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
>フィールド名が同じの場合何か1つの更新クエリで桁をあわせることは可能なのでしょうか? こんなものありえない。フィールド名というものは内容が同じでも別に表現されることが多々あって当てにならない。氏名と名前や社員とか。 やるなら自分で特別のプログラムを作ることになる。 ーーー 原データはエクセルシートにあるようだが、そこで必要な列でTEXT関数で文字列の、定桁あわせ(前に0を埋めるとか)は出来ないのか。原データは触れないのか。 エクセルー>アクセスへインポートの過程で書式定義は出来ないようだ。(テキストー>エクセルへのインポートでテキストなどでは出来る機会があるが。) ーー 事務などの処理をやっていると決った形の処理を別ファイルに向けて 適用しないといけないことが多々ある。 それは、アクセスマクロにして繰り返すとか、VBAで繰り返す必要がある。 だからアクセスを作業過程の多い業務などに使うには、それなりの管理ツールが必要とおもう。人手と記憶でやっていると間違いが起こる。 アクセスはそういう複雑なもの向きではないのだと思う。 ーーー はっきり言って、質問者はアクセス全体(やコンピュタ全体)の経験を積まないと、1つ受動的に教えてもらって解決しても、次々と別の疑問点にぶつかり、ゴールへ進めないものだ。スクールへ行くとか、解説書を多読するとか、部分的に少しずつ自力をつける他ないと思う。
お礼
確かに私はパソコン歴は約10年ほどですが、アクセスは全くの初心者といってもいい状態です。ただ現在、あまりに急にアクセスでの処理が仕事上必要になったので、色々と質問させていただく結果になってしまいました。今後、アクセスが必要かどうか分からないですが、時間をみて勉強していきたいと思います。アドバイスありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
インポートではなく、テーブルのリンクではダメなのでしょうか? 毎回、インポートして更新クエリを実行するのでテーブルが増えていく状況? 例えば、ファイル=>外部データの取込=>テーブルのリンクで 2つのエクセルファイルともリンクテーブルを準備する。 片方のエクセルシートに対してクエリを作成、フィールドで Format(Val([code]),"00") 或いは Right("0" & [番号],2) こんな式でよさそうですが。 そして、もう片方のエクセルファイルのテーブルと作成したクエリの式で リレーションが結べないでしょうか? 的外れでしたら、読み飛ばしてください。
お礼
テーブルのリンク! そういった方法もあるのですね!検討してみます。 ありがとうございました。
お礼
なるほど、クエリでは難しいのですね。 わざわざサンプル文まで付けていただきありがとうございました。 色々と検討してみますね。