VBA、Excel ODBC 驱动程序 - 使用带有来自单元格的参数的 sql 查询时出现类型不匹配错误
VBA, Excel ODBC driver - Type Mismatch error while using sql query with parameter from cell
我在执行 select 并从 excel 单元格获取参数时遇到 Type Mismatch error
问题。我像使用数据库一样使用 excel。
我的代码是:
Sub maxlg()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/'" & Range("U17") & "') AS MAXLG From [DATABASE$] WHERE Platzierung =('" & Range("S11") & "') AND RPJ = ('" & Range("U12") & "') "
mrs.Open sSQLSting, Conn
'=>Load the Data into an array
'ReturnArray = mrs.GetRows
''OR''
'=>Paste the data into a sheet
ActiveSheet.Range("V12").CopyFromRecordset mrs
'Close Recordset
mrs.Close
Conn.Close
End Sub
问题在于从此处获取参数:WHERE
子句中的 RPJ = ('" & Range("U12") & "') "
。
您可能因为复制和粘贴过多而受苦。在数学计算中使用它时,您似乎将 `Range("U17") 值包装在刻度中。
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/" & Range("U17").value & ") AS MAXLG From [DATABASE$] WHERE Platzierung ='" & Range("S11").value & "' AND RPJ = '" & Range("U12").value & "';"
我还删除了实际文本 WHERE 条件中的一些括号。只有当多个文本值与
一起使用时才真正需要它们
... WHERE [fld1] IN ('abc', 'def')
我在执行 select 并从 excel 单元格获取参数时遇到 Type Mismatch error
问题。我像使用数据库一样使用 excel。
我的代码是:
Sub maxlg()
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
Conn.Open sconnect
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/'" & Range("U17") & "') AS MAXLG From [DATABASE$] WHERE Platzierung =('" & Range("S11") & "') AND RPJ = ('" & Range("U12") & "') "
mrs.Open sSQLSting, Conn
'=>Load the Data into an array
'ReturnArray = mrs.GetRows
''OR''
'=>Paste the data into a sheet
ActiveSheet.Range("V12").CopyFromRecordset mrs
'Close Recordset
mrs.Close
Conn.Close
End Sub
问题在于从此处获取参数:WHERE
子句中的 RPJ = ('" & Range("U12") & "') "
。
您可能因为复制和粘贴过多而受苦。在数学计算中使用它时,您似乎将 `Range("U17") 值包装在刻度中。
sSQLSting = "SELECT SUM(Sicherkoef*LG/KFM/" & Range("U17").value & ") AS MAXLG From [DATABASE$] WHERE Platzierung ='" & Range("S11").value & "' AND RPJ = '" & Range("U12").value & "';"
我还删除了实际文本 WHERE 条件中的一些括号。只有当多个文本值与
一起使用时才真正需要它们 ... WHERE [fld1] IN ('abc', 'def')