こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

いつもお世話になっております。
タイトルの件なのですが、Accessのフォームを作成しました。
実行ボタンを押下すると入力した内容を元に、SQL文を作成してSQLServerのデータベースを操作するという内容です。
以下の順番で操作しています。
(1)該当データの件数を取得
(2)該当データをAccess上の一時テーブルに挿入
(3)該当データを更新

入力項目の1つが前方一致ですので、Where文に
項目名 like '入力内容%'
といったlike演算子を含む分があります。
Where句は(1)~(3)全てで同じものを使用しています。

ですが、(1)(2)はこの文で問題なく実行できるのですが、(3)のみ実行できません。
同じWhere句を使っているのに、何故このような違いが起きるのでしょうか?

詳しい事は初心者なので分からないのですが、
DAOを使用してExecuteでSQL文を実行しています。

投稿日時 - 2009-02-26 10:35:02

QNo.4750299

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>確かに「*」を使用すると全ての操作がうまくいくのですが、
>何故%でやった場合に違いが出るのかが気になっています。。。

どのように件数を取得してどのようなSQL文で更新しているのかわからないので回答出来ませんが、
件数の取得とデータの更新のSQL文を見直してみるとか、
件数の取得の時も*を使ってみたらどうなるか調べてみるといいかもしれません。

投稿日時 - 2009-02-26 12:01:36

ANo.1

コードを見てみないとわかりませんが、
ローカルテーブルを操作するときは % ではなく * を使います。
SQLServerとAccessの仕様の違いです。

また、一時テーブルに挿入しているのですから、更新時には
条件を設定する必要はないと思います。
一時テーブルに保存したデータはすべて対象のデータなはずですので。

投稿日時 - 2009-02-26 11:19:14

補足

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

投稿日時 - 2009-02-26 11:21:06

あなたにオススメの質問