Le code ci-dessous exporte correctement les données, mais ma ligne debug.print
indique toujours -1. Je voudrais récupérer le nombre de lignes dans l'instruction debug.print
. S'il vous plaît suggérer ce qui ne va pas.La propriété ADODB RecordSet.RecordCount renvoie toujours -1
Sub TEST()
Dim rs As Object
Dim iCols As Integer
Set rs = CreateObject("ADODB.Recordset")
On Error GoTo ERR
Dim SQLSTR As String, MYVAL As String
MYVAL = InputBox("Enter Query")
SQLSTR = " " & MYVAL & ""
CONNECT_TO_DWHS
rs.Open SQLSTR, PERSONALDBCONT
For iCols = 0 To rs.Fields.Count - 1
ActiveSheet.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
Debug.Print rs.RecordCount
ActiveSheet.Cells(2, 1).CopyFromRecordset rs
ActiveSheet.Cells(1, 1).Select
CLOSE_CONNECTION_TO_SQL
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
.FreezePanes = True
End With
Exit Sub
ERR:
CLOSE_CONNECTION_TO_SQL
MsgBox "There was an error"
End Sub
Je * pense * que c'est à cause de la décrémentation qui a lieu dans l'opération FOR. Pour que la boucle s'arrête, la dernière opération exécutée est une décrémentation par 1 de la valeur 'rs.Fields.Count', qui devient -1 pour que la boucle se termine. Pour cette raison, * je pense * que 'print' vous montrera toujours -1. (* mais ce n'est qu'une idée et ce n'est pas du tout le type de réponse d'un programmeur, qui devrait être précis *). Pour vérifier cela, je vous suggère de déplacer le 'print' dans la boucle .. ou peut-être même d'imprimer le nombre d'enregistrements avant la boucle .. –