- - PR -
接続データベースがACCESSの場合で、クエリビルダーでIF文を使いたい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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.結果的に正常に動作していますが、このまま使用しても問題ないのでしょうか? 何かバグのような気がしますが、よろしくお願いいたします。 | ||||
|
投稿日時: 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 勉強会 / ヒーロー島 | ||||
|
投稿日時: 2007-10-17 21:01
さかもとと申します。
Access自体が悪いということではもちろんないのですが、それ独自の関数なり、SQL構文を元に作成を進めていると、そもそも「Accessはやっぱり使わない」ということになったときに困るような気がします。
これもデザイナー側のバグと思われる前に、Accessのクエリから直接叩いてみて、正確な値を取得できるのかどうかを、まず確認したほうが良いかと思います。そうすればAccess側で「○○文はAccessでは利用できない」という情報を得られるかと。 それと、以前からご指摘があったかと思いますが、特に気になさっていないようなので・・・。 http://www.microsoft.com/japan/msdn/vstudio/express/ Expres「e」→Expres「s」 じゃないかと。 _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2007-10-18 09:05
ueさん、ありがとうございました。
正常に動作していますがデータのプレビューでエラーが出ましたので少々きみが悪いのですが 「気にせず正しく動作するクエリを書けば良いと思います。」 との事ですので安心して使います。 さかもとさん、いつもお世話になります。
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