У меня есть сценарий, в котором мне нужно запросить таблицу Excel с помощью SQL.
В Excel у меня есть столбец с именем «test_case_id», который содержит буквенно-цифровое значение
Я использую следующий код VBScript, чтобы получить значения из Excel.
Столбец «test_case_id» в Excel был отформатирован как «Общий».
Когда значение для этого столбца является целым числом (например, 1,2,3 ...)
SELECT * FROM [05 Invest Allocate$] WHERE [test_case_id] =1
Кажется, вышеупомянутый запрос работает
Но когда в столбце "test_case_id" есть символ (например, 5b, 6b, 7b)
SELECT * FROM [05 Invest Allocate$] WHERE [test_case_id] ='5b'
Приведенный выше запрос выдает ошибку «Несоответствие типов данных в выражении критериев».
Может ли кто-нибудь помочь мне решить эту проблему таким образом, чтобы я мог запрашивать либо в виде строки, либо в виде целого числа в предложении where?
Полный код:
strQuery = "SELECT * FROM [05 Invest Allocate$] WHERE [test_case_id] ='5b'"
j_drive_root_path="C:\Documents and Settings\Desktop\"
Set objNetwork = CreateObject("WScript.Network")
strUserName =objNetwork.UserName
Set fso = CreateObject("Scripting.FileSystemObject")
Set original = fso.GetFile(j_drive_root_path & "temp_invest_allocate.xls")
strCopyPath = "C:\Documents and Settings\" & strUsername & "\copyofexceltable.xls"
original.Copy (strCopyPath)
'Set the connection object and path to the copied spreadsheet
Set objAdCon = CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strCopyPath & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes"""
'Open spreadsheet
objAdCon.Open strConn
'Create a recordest object (to store the results of the query)
Set record_set = CreateObject("ADODB.Recordset")
'Run the query
record_set.CursorLocation = 3
record_set.Open strQuery, objAdCon, 1, 3
If Not record_set.EOF Then
Set client_to_accountID = CreateObject("Scripting.Dictionary")
client_to_accountID.CompareMode=vbTextCompare
client_to_accountID.RemoveAll
Do Until record_set.EOF
tmp_val=Trim(Cstr(record_set("id").Value))
print "id=" & tmp_val
record_set.MoveNext
Loop
End If ' End of if not record_set.EOF