- PR -

接続データベースがACCESSの場合で、クエリビルダーでIF文を使いたい。

1
投稿者投稿内容
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-16 22:09
Visual Basic 2005 Exprese Edition でWindowsアプリケーションを開発しています。
接続データベースはACCESSです。

TableAdapterのクエリクエリに条件文を設定したく、ACCESSのIif を使いましたが
以下のような状況です。

1.クエリビルダでIIf([性別]="男", 甲列, 乙列) と設定しても自動的に下のように
修正されて、エラーにはなりませんが、実行結果はIFが動作しなく、甲列と設定し
たのと同じ結果しかえられません。
→→ IIf('[性別]=男', 甲列, 乙列)

2.クエリビルダを使わず、SQLステートメントを直接設定しましたが「関数の引数
リストでエラー、’=’が認識できません」とエラーが発生します。ただしDataSet
デザインで「データのプレビュー」は正常に表示され、Fill で接続すると正常に動作
します。
SELECT Iif([性別]='男', 甲列, 乙列) AS 場所
FROM n0社員

3.DECODE関数やIF、CASEを使いましたが、VBがACCESSの場合はエラーになり使え
ません。

4.WHERE やORDER BY 、GROUP BY 等を多用しますとDataSetデザインで「データの
プレビュー」もエラーとなり使用できません。

【お尋ねしたいこと】
1.設定方法に問題があるのでしょうか?
2.接続データベースはACCESSの場合のIF文に「Iif」は使えないのでしょうか?
3.結果的に正常に動作していますが、このまま使用しても問題ないのでしょうか?

何かバグのような気がしますが、よろしくお願いいたします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2007-10-17 20:18
こんばんは。

そもそも Jet をデータソースとして使っているときに Microsoft Visual Database Tools が T-SQL の構文を基準にエラーを出してくるのがおかしいですよね。
気にせず正しく動作するクエリを書けば良いと思います。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-10-17 21:01
さかもとと申します。

Access自体が悪いということではもちろんないのですが、それ独自の関数なり、SQL構文を元に作成を進めていると、そもそも「Accessはやっぱり使わない」ということになったときに困るような気がします。

引用:

4.WHERE やORDER BY 、GROUP BY 等を多用しますとDataSetデザインで「データの
プレビュー」もエラーとなり使用できません。



これもデザイナー側のバグと思われる前に、Accessのクエリから直接叩いてみて、正確な値を取得できるのかどうかを、まず確認したほうが良いかと思います。そうすればAccess側で「○○文はAccessでは利用できない」という情報を得られるかと。


それと、以前からご指摘があったかと思いますが、特に気になさっていないようなので・・・。

http://www.microsoft.com/japan/msdn/vstudio/express/

Expres「e」→Expres「s」 じゃないかと。




_________________
------------------------------------------
拝啓、さかもとと申します♪
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-18 09:05
ueさん、ありがとうございました。
正常に動作していますがデータのプレビューでエラーが出ましたので少々きみが悪いのですが
「気にせず正しく動作するクエリを書けば良いと思います。」 との事ですので安心して使います。



さかもとさん、いつもお世話になります。

引用:

さかもとさんの書き込み (2007-10-17 21:01) より:

Access自体が悪いということではもちろんないのですが、それ独自の関数なり、SQL構文を元に作成を進めていると、そもそも「Accessはやっぱり使わない」ということになったときに困るような気がします。


これもデザイナー側のバグと思われる前に、Accessのクエリから直接叩いてみて、正確な値を取得できるのかどうかを、まず確認したほうが良いかと思います。そうすればAccess側で「○○文はAccessでは利用できない」という情報を得られるかと。



DBをAccessからSQLに変更した時に困るという意味でしょうか。確かに接続する
データベースを変更すると使用している関数を見直す必要がありますね。
まお、使用しているSQL文はACCESSで正常動作しているものをコピーで使用しています。
もう少し、試してみたいと思っていますが、同様のトラブルが以下のサイトで紹介され
ていましたので参考にのせておきます。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32476&forum=7&6
http://support.microsoft.com/kb/158823/ja
1

スキルアップ/キャリアアップ(JOB@IT)