Dans le code suivant, je peux obtenir le nombre d'Excel à l'aideconnexion VBScript Excel ADO: Obtenir la valeur en utilisant l'alias de colonne dans la requête SQL
objTempRecordset.Fields.Item(0).Value
Cependant, je veux utiliser l'alias de nom de colonne dans SQL. -à-dire
sSQL = "Select Count(*) AS RecCount FROM [NELimits$] A WHERE A.Type = 'A' AND A.ID = " &Chr(39) & "R001" & Chr(39)
et je veux obtenir le résultat en utilisant:
objTempRecordset.Fields.Item("RecCount").Value
J'ai essayé aussi objTempRecordset.Fields.Item("_Count(*)_").Value
mais pas de chance
Quelqu'un peut-il s'il vous plaît laissez-moi savoir comment utiliser l'alias de nom de colonne dans ce cas?
Note: Excel dispose de 2 colonnes ID: avec des valeurs telles que "R001", "R002" Type: avec des valeurs telles que "A", "B", "C"
Exemple de code:
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
viens de remarquer que ** objTempRecordset.Fields.Item (0) .Nom ** retours ** Expr1000 ** et ** objTempRecordset.Fields.Item ("Expr1000"). Valeur ** retours valeur correcte Cependant, je ne suis pas sûr de ce que ** ** Expr1000 signifie et comment il est affecté. Je ne sais pas si cela changera pour différentes feuilles Excel, données, etc, donc besoin d'un moyen de définir l'alias pour les colonnes afin que je puisse récupérer des données basées sur l'alias – Yogesh
Résolu: ... "SELECT column_name ** As [ alias_name] ** FROM ... "dans SQL a résolu le problème. Grâce à ce message: http://stackoverflow.com/questions/37466225/expr1000-error-who-performing-a-sum-on-a-sql-query-in-excel – Yogesh
Etes-vous sûr de 'objTempRecordset.Fields .Item ("RecCount"). Value' n'a pas fonctionné comme il aurait dû si vous avez utilisé la première requête SQL (pas le second dans le bloc de code)? En premier lieu, vous avez affecté un alias de colonne * RecCount * mais pas en second ce que le moteur ACE SQL assigne en tant que générique * Expr1000 *. – Parfait