はじめまして
単純な質問で申し訳ありません。
vbでIIfを使ったSQLを実行すると、
「・・・前後に区切り記号の誤りがあります」
と言われて異常終了してしまいます。
同じSQLをACCESSのクエリーで実行すると、
正常にデータが取得出来ます。
原因はなんでしょう?
よろしくおねがいします。
;は?
編集 削除Accessで正常に取得できたという、同じSQLとは
VBで実際に出力(生成)されたものですか?
それとも、「こうなるはず」と自分で作成したものですか?
あなたの最初の書き込みでは何もわかりません。
最低限必要な情報を出してください。
SQL、ソースなどなど
言葉が足らず、すみません
最初にAccessのクエリーを作成し、データが取得できたのを確認しました。
次にそのクエリーのSQLをVBにて実行したところ、失敗しました。
そこでVBのDebugPrintでSQLを出力し、そのSQLをAccessのクエリーで実行したところ、データ取得に成功しました。
sql:Select iif(項目1<=項目2,項目2\項目1,項目1) as 項目3 from テーブル
SQLはこんな感じです。
よろしくお願いします。
失敗って、どういうことですか?
抽出結果が 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
みなさん、ありがとうございました。
データベースがVBからのSQLでIIfに対応していないらしく、
手動で計算しました。
お手数をおかけしました。