に列の別名を使用して値を取得し、私はVBScriptのエクセルADO接続:コードは次のSQLクエリ
objTempRecordset.Fields.Item(0).Value
を使用してExcelからのカウントを取得することができますしかし、私は、SQLの列名の別名を使用します。 すなわち
sSQL = "Select Count(*) AS RecCount FROM [NELimits$] A WHERE A.Type = 'A' AND A.ID = " &Chr(39) & "R001" & Chr(39)
と私が使用して結果を取得したいが:
objTempRecordset.Fields.Item("RecCount").Value
私もobjTempRecordset.Fields.Item("_Count(*)_").Value
が、
は、誰かが私には、列名の別名を使用する方法を教えてくださいすることができていない運を試してみましたこの場合?
注:Excelは2列 IDを有している。例えば、 "R001"、 "R002" タイプなどの値で:
:例えば、 "A"、 "B"、 "C"サンプルコードなどの値と
sSQL = "Select Count(*) FROM [NELimits$] A WHERE A.Type = 'A' AND A.ID = " &Chr(39) & "R003" & Chr(39)
Sqlquery = sSQL
sFilePath = "C:\Temp\DataSheet.xlsx"
Dim objTempConnection : Set objTempConnection = CreateObject("ADODB.Connection")
Dim objTempRecordSet : Set objTempRecordSet = CreateObject("ADODB.Recordset")
Dim strPath
'Define constants for objTempRecordset
Const adOpenStatic=3
Const adLockOptimistic=3
Const adLockPessimistic=2
Const adCmdText = &H001
'Open connection
objTempConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& sFilePath &";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
objTempRecordset.ActiveConnection = objTempConnection
objTempRecordset.CursorType = adOpenStatic
objTempRecordset.LockType = adLockOptimistic
objTempRecordset.Open Sqlquery
If objTempRecordset.EOF Or objTempRecordset.BOF Then
msgbox "no record"
End If
msgbox "Record Count: "&objTempRecordset.RecordCount
msgbox "Value:" & objTempRecordset.Fields.Item(0).Value
はちょうどその ** objTempRecordset.Fields.Item(0).nameの** 戻り** Expr1000 ** と ** objTempRecordset.Fields.Item( "Expr1000")に気づいた。バリュー** 戻り値 しかし、** Expr1000 **の意味とその割り当て方法についてはわかりません。 異なるExcelシート、データなどで変更されるかどうかわからないため、別名 – Yogesh
に基づいてデータを取得できるように、列のエイリアスを定義する方法が必要解決: ... "SELECT column_name ** As [エイリアス名] ** FROM ... "SQLで問題を解決しました。 この投稿に感謝します:http://stackoverflow.com/questions/37466225/expr1000-error-when-performing-a-sum-on-a-sql-query-in-excel – Yogesh
あなたは本当に 'objTempRecordset.Fields .Item( "RecCount")。Value'は、最初のSQLクエリ(コードブロック内の2番目のクエリではない)を使用した場合に必要なように機能しませんでしたか?最初に、列エイリアス* RecCount *を割り当てましたが、ACE SQLエンジンがジェネリック* Expr1000 *として割り当てる秒ではありません。 – Parfait