私は以前に、アクセスの桁あわせについての質問をしたことがあるものです。その時は『Format関数』を利用してやる方法を教えていただいたのですが、新たに疑問が出たので質問をさせていただくことにしました。
状態としましては、今エクセルのシートを二つインポートし、片方は1~20の連番のフィールド(テキスト型)があります。もう一つは01~20の連番のフィールド(テキスト型)です。この二つのテーブルの間にリレーションシップをとりたいので型は揃えていないといけないので、『Format関数』を利用し、【Format(Val([code]),"00")】と入力し更新クエリを実行しました。
実際に処理をしていくと、フィールド名が同じのテーブルが幾つもある状態なのですが、この場合その都度更新クエリをテーブルの数だけ作成しなくてはいけないのでしょうか?それとも、フィールド名が同じの場合何か1つの更新クエリで桁をあわせることは可能なのでしょうか?
長くなってしまいましたが、どなたかご存知の方教えて下さい。お願いします。
No.1ベストアンサー
- 回答日時:
こんにちは
クエリでは難しいと思います。
VBAからSQLを実行する形なら対応できると思います。
VBAからSQLを実行するサンプルは以下のようにします。
DoCmd.RunSQL [SQL文]
ご質問の例では、テーブル1のcodeフィールドを変換するには以下のようになります。
DoCmd.RunSQL "UPDATE テーブル1 SET テーブル1.code = Format(Val([code]),'00');", -1
「テーブル1」の部分を変数にして、他のテーブルにも繰り返します。
For Eachが使えそうですが、具体的な条件を教えてください。
特に対象となるテーブルについて「名称はいつも同じですか?」というのがポイントになります。
また、データの性質上、各テーブルをくっつけても構わなければ、インポートしたら追加クエリを使って一つのテーブルにまとめてしまう方法もあります。
No.3
- 回答日時:
>フィールド名が同じの場合何か1つの更新クエリで桁をあわせることは可能なのでしょうか?
こんなものありえない。フィールド名というものは内容が同じでも別に表現されることが多々あって当てにならない。氏名と名前や社員とか。
やるなら自分で特別のプログラムを作ることになる。
ーーー
原データはエクセルシートにあるようだが、そこで必要な列でTEXT関数で文字列の、定桁あわせ(前に0を埋めるとか)は出来ないのか。原データは触れないのか。
エクセルー>アクセスへインポートの過程で書式定義は出来ないようだ。(テキストー>エクセルへのインポートでテキストなどでは出来る機会があるが。)
ーー
事務などの処理をやっていると決った形の処理を別ファイルに向けて
適用しないといけないことが多々ある。
それは、アクセスマクロにして繰り返すとか、VBAで繰り返す必要がある。
だからアクセスを作業過程の多い業務などに使うには、それなりの管理ツールが必要とおもう。人手と記憶でやっていると間違いが起こる。
アクセスはそういう複雑なもの向きではないのだと思う。
ーーー
はっきり言って、質問者はアクセス全体(やコンピュタ全体)の経験を積まないと、1つ受動的に教えてもらって解決しても、次々と別の疑問点にぶつかり、ゴールへ進めないものだ。スクールへ行くとか、解説書を多読するとか、部分的に少しずつ自力をつける他ないと思う。
確かに私はパソコン歴は約10年ほどですが、アクセスは全くの初心者といってもいい状態です。ただ現在、あまりに急にアクセスでの処理が仕事上必要になったので、色々と質問させていただく結果になってしまいました。今後、アクセスが必要かどうか分からないですが、時間をみて勉強していきたいと思います。アドバイスありがとうございました。
No.2
- 回答日時:
インポートではなく、テーブルのリンクではダメなのでしょうか?
毎回、インポートして更新クエリを実行するのでテーブルが増えていく状況?
例えば、ファイル=>外部データの取込=>テーブルのリンクで
2つのエクセルファイルともリンクテーブルを準備する。
片方のエクセルシートに対してクエリを作成、フィールドで
Format(Val([code]),"00") 或いは Right("0" & [番号],2) こんな式でよさそうですが。
そして、もう片方のエクセルファイルのテーブルと作成したクエリの式で
リレーションが結べないでしょうか?
的外れでしたら、読み飛ばしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Access(アクセス) Accessのスプレッドシートエクスポートで、シートが追加されてしまう 2 2022/07/16 21:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルに主キーを作らないデ...
-
accessのレポートであとから他...
-
Accessを使って日付を比較したい
-
Accessで検索を高速化
-
アクセスにエクセルのデータを...
-
Accessの入力フォームから、テ...
-
accessで、「集計のオプション...
-
Accessフォームでデータ入力で...
-
ACCESSのクエリで表示されるデ...
-
Access 2010 土日祝日を除いて...
-
Access クエリの更新結果をテ...
-
MS-Accessのレコード内のフィー...
-
Access2010 携帯番号にハイホン...
-
Accessクエリのデータ表示件数...
-
ACCESSのフォームからデータの...
-
ACCESS クエリで重複データを最...
-
アクセスでテーブルの変更内容...
-
Accessのフォーム上にレコード...
-
access・カウント結果がゼロで...
-
Access 別フォームへの再クエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルに主キーを作らないデ...
-
Accessを使って日付を比較したい
-
accessのレポートであとから他...
-
アクセスのフォームを開くとき...
-
アクセスにエクセルのデータを...
-
accessで、「集計のオプション...
-
Access 複数フィールドの一致
-
Access2010 携帯番号にハイホン...
-
Accessの入力フォームから、テ...
-
Accessフォームでデータ入力で...
-
Access 2010 土日祝日を除いて...
-
Accessで検索を高速化
-
Accessの「式で型が一致しませ...
-
Accessクエリのデータ表示件数...
-
アクセスのデータ型を変更する...
-
アクセスの重複クエリ
-
MS-Accessのレコード内のフィー...
-
オートナンバー型を1から始める...
-
Accessのクエリによる集計が出...
-
ACCESS Yes/No型の集計
おすすめ情報