IIfがうまくいきません

解決


sakura  2004-01-15 22:30:35  No: 81463  IP: [192.*.*.*]

はじめまして
単純な質問で申し訳ありません。

vbでIIfを使ったSQLを実行すると、
「・・・前後に区切り記号の誤りがあります」
と言われて異常終了してしまいます。
同じSQLをACCESSのクエリーで実行すると、
正常にデータが取得出来ます。

原因はなんでしょう?
よろしくおねがいします。

編集    削除
いちゆ  2004-01-15 22:36:27  No: 81464  IP: [192.*.*.*]

;は?

編集    削除
長谷川  2004-01-15 22:45:01  No: 81465  IP: [192.*.*.*]

Accessで正常に取得できたという、同じSQLとは
VBで実際に出力(生成)されたものですか?
それとも、「こうなるはず」と自分で作成したものですか?

あなたの最初の書き込みでは何もわかりません。
最低限必要な情報を出してください。

SQL、ソースなどなど

編集    削除
sakura  2004-01-15 23:04:17  No: 81466  IP: [192.*.*.*]

言葉が足らず、すみません

最初にAccessのクエリーを作成し、データが取得できたのを確認しました。
次にそのクエリーのSQLをVBにて実行したところ、失敗しました。
そこでVBのDebugPrintでSQLを出力し、そのSQLをAccessのクエリーで実行したところ、データ取得に成功しました。

sql:Select iif(項目1<=項目2,項目2\項目1,項目1) as 項目3 from テーブル

SQLはこんな感じです。
よろしくお願いします。

編集    削除
ぽち  2004-01-16 00:36:12  No: 81467  IP: [192.*.*.*]

失敗って、どういうことですか?
抽出結果が Access での実行結果と異なるということですか?
エラーが発生するということですか?

ちなみに、下のコードを実行するとどうなりますか?

Private Sub pTest()
  Dim daoDe     As DAO.DBEngine
  Dim daoWs     As DAO.Workspace
  Dim daoDb     As DAO.Database
  Dim daoRs     As DAO.Recordset
  Set daoDe = New DAO.DBEngine
  Set daoWs = daoDe.CreateWorkspace("", "Admin", "")
  Set daoDb = daoWs.OpenDatabase("X:\xxx\db1.mdb")
  Set daoRs = daoDb.OpenRecordset("Select iif(項目1<=項目2,項目2\項目1,項目1) as 項目3 from テーブル")
  Do While daoRs.EOF = False
  Debug.Print daoRs!項目3
  daoRs.MoveNext
  Loop
  daoRs.Close: Set daoRs = Nothing
  daoDb.Close: Set daoDb = Nothing
  daoWs.Close: Set daoWs = Nothing
  Set daoDe = Nothing
End Sub

編集    削除
sakura  2004-01-16 03:23:33  No: 81468  IP: [192.*.*.*]

みなさん、ありがとうございました。

データベースがVBからのSQLでIIfに対応していないらしく、
手動で計算しました。
お手数をおかけしました。

編集    削除