• 締切済み

AccessVBAでSQLServerのデータを操作する際のlikeについて

いつもお世話になっております。 タイトルの件なのですが、Accessのフォームを作成しました。 実行ボタンを押下すると入力した内容を元に、SQL文を作成してSQLServerのデータベースを操作するという内容です。 以下の順番で操作しています。 (1)該当データの件数を取得 (2)該当データをAccess上の一時テーブルに挿入 (3)該当データを更新 入力項目の1つが前方一致ですので、Where文に 項目名 like '入力内容%' といったlike演算子を含む分があります。 Where句は(1)~(3)全てで同じものを使用しています。 ですが、(1)(2)はこの文で問題なく実行できるのですが、(3)のみ実行できません。 同じWhere句を使っているのに、何故このような違いが起きるのでしょうか? 詳しい事は初心者なので分からないのですが、 DAOを使用してExecuteでSQL文を実行しています。

みんなの回答

  • Pakkun10
  • ベストアンサー率44% (22/50)
回答No.2

>確かに「*」を使用すると全ての操作がうまくいくのですが、 >何故%でやった場合に違いが出るのかが気になっています。。。 どのように件数を取得してどのようなSQL文で更新しているのかわからないので回答出来ませんが、 件数の取得とデータの更新のSQL文を見直してみるとか、 件数の取得の時も*を使ってみたらどうなるか調べてみるといいかもしれません。

  • Pakkun10
  • ベストアンサー率44% (22/50)
回答No.1

コードを見てみないとわかりませんが、 ローカルテーブルを操作するときは % ではなく * を使います。 SQLServerとAccessの仕様の違いです。 また、一時テーブルに挿入しているのですから、更新時には 条件を設定する必要はないと思います。 一時テーブルに保存したデータはすべて対象のデータなはずですので。

pepepepepe
質問者

補足

Pakkun10様 早速のご回答ありがとうございます。 説明不足で申し訳ありませんが、(3)の操作はSQLServer上のデータを 更新しています。 確かに「*」を使用すると全ての操作がうまくいくのですが、 何故%でやった場合に違いが出るのかが気になっています。。。

関連するQ&A