2012-03-12 17 views
2

入力に関係なく一意の値を返すアクセスデータベース用のSQL文を作成しています。私はこのコードを使用していますが、実行文に型の不一致があります。excel vba sql文が単一の文字列を返す

strSQL = "SELECT FilePath " _ 
    & "FROM ToolFiles " _ 
    & "WHERE Project_Num = '" & theSelectedProj & "'" _ 
    & "AND Tool_Name = '" & theSelectedProjName & "'" 

filePath = cn.Execute(strSQL) 

SQL文から文字列を返す方法はありますか?

おかげ

答えて

5

迅速な答えがいいえADO Execute()方法は、あなたの文字列変数に読み込む必要がありますレコードセットオブジェクトを返します。これは次のようなものです:

Dim rs As ADODB.Recordset 

.... 
Set rs = cn.Execute(strSQL) 

If Not (rs Is Nothing) Then 
    With rs 
     If Not (.BOF) And Not (.EOF) Then 
      strFilePath = Format$(.Fields(1).Value) 
     End If 
    End With 
End If 
+0

レコードの数を確認するには、ある時点でチェックする必要はありませんか?== 1?レコードが1つしか返ってこないことを知っていても、それを考慮するほうがいいと思います。 – Gaffi

+0

@ Gaffi通常は私は同意しますが、与えられたSQLの例からは、レコードが1つしかないという公平な仮定だと思います。最後に、暗黙の.Executeでは、レコードセットは、とにかくRecordCountプロパティを使用することはできないと思うadOpenForwardOnlyカーソルで開きます。 – markblandford

関連する問題