重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。
AccessVBAでつまづいてしまったので、ご教授お願いします。
以下にプログラムの動作手順を書きます。

1、CDに入っている4つのCSVファイルをそれぞれ別のテーブルにインポート。
2、その4つのテーブルのデータをグループ化して「wkマスタ」に追加クエリを利用して追加。
3、全て追加されたら、商品ID の昇順で「wkマスタ」のレコードを並び替え。

3の並び替えを下のように書きました。

DoCmd.RunSQL "SELECT 商品ID,商品名称カナ,商品名称漢字 FROM wkマスタ ORDER BY 商品ID ASC;"

そしたら「"RunSQL/SQLの実行"アクションを実行するには、
SQLステートメントからなる引数を指定する必要があります」
と注意されました。
これはどういう意味でしょうか?またどうしたら問題なく並べ替えできますか?教えてください。

A 回答 (2件)

DoCmd.RunSQLに指定できるSQL文は、UPDATE、INSERT、DELETEなど「テーブル内のレコードを更新、追加、削除するクエリでなければなりません。



単に並び替えた結果が欲しいだけなら
SELECT 商品ID,商品名称カナ,商品名称漢字 FROM wkマスタ ORDER BY 商品ID ASC;
と書いたクエリを作成して下さい。

1.データベース(xxx.mdb)を開く
2.F11キーを押してデータベースを表示する
3.「オブジェクト」の「クエリ」を選び「新規作成」する
4.デザインビューを選び、テーブル選択の画面が出たら「閉じる」で閉じる
5.「表示」メニューの「SQLビュー」に切り替える
6.「SELECT 商品ID,商品名称カナ,商品名称漢字 FROM wkマスタ ORDER BY 商品ID ASC;」と書きこむ
7.適当に「マスタ」などと名前を付けて保存する。
8.以降「wkマスタ」ではなく「マスタ」を参照すれば、常に並び替えされたデータ(実体は並び替えクエリ)にアクセス可能

クエリで参照するのではなく、並び替え済みの「マスタ」の中を更新する必要があるなどの理由で並び替えが済んでいる「マスタ」テーブルを作成したいなら、事前に「マスタ」テーブルの「商品ID」に主キーを設定し、4つのインポートしたテーブルの追加先を「wkマスタ」ではなく「マスタ」にします。
そうすれば、「マスタ」テーブルへの追加クエリを実行した段階で、自動的に並び替えが行われます。なお「主キー」に設定した「商品ID」は一意である必要があり、重複(同じ商品IDのレコードが2つ以上ある)は許されません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>DoCmd.RunSQLに指定できるSQL文は、UPDATE、INSERT、DELETEなど「テーブル内のレコードを更新、追加、削除するクエリでなければなりません。

この回答でやっと謎が解けました!
ありがとうございました。

お礼日時:2006/11/15 13:16

RunSQLはアクションクエリを走らせるコマンドです


普通の選択クエリの場合はOpenQueryを使います

ただしOpenQueryでは引数にクエリ名しか指定できません
SQLで選択クエリを開くにはOpenRecordsetを使います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!