У меня есть программа, которая должна читать данные из базы данных SQL и отправлять отчеты в Excel. Он работает должным образом на 32-битной машине, но, поскольку я перешел на 64-битную рабочую среду, программа не запустилась. Вот образец моего кода (первая ошибка вернулась):
Private Sub SearchBox_Change()
ResultBox.Clear
Call CompileQuery
'If the query is empty
If SearchBox.Value = "" Then
NumShowingLabel = "Showing 0 of 0 Results"
ResultBox.Clear
GoTo noSearch
End If
'Open a new query with varQuery
With varRecordset
.ActiveConnection = varConnection
.Open varQuery
End With
'Set NumShowingLabel
If varRecordset.RecordCount > varMaxResults Then
NumShowingLabel = "Showing 60 of " & varRecordset.RecordCount & " Results"
Else
NumShowingLabel = "Showing " & varRecordset.RecordCount & " of " & varRecordset.RecordCount & " Results"
End If
'As long as there is a record, move to the first one
If Not varRecordset.RecordCount = 0 Then varRecordset.MoveFirst
'Add each record to ResultBox
If varRecordset.RecordCount > varMaxResults Then
For varTempInt = 1 To varMaxResults
ResultBox.AddItem varRecordset.Fields("FileName").Value
varRecordset.MoveNext
Next
Else
For varTempInt = 1 To varRecordset.RecordCount
ResultBox.AddItem varRecordset.Fields("FileName").Value
varRecordset.MoveNext
Next
End If
'Release varRecordSet
varRecordset.Close
noSearch:
End Sub
При запуске Excel возвращает ошибку «Несоответствие типов» и выделяет .RecordCount
из For varTempInt = 1 To varRecordset.RecordCount
(последний цикл for в примере). Я установил исправление, рекомендованное статьей поддержки Windows 983246, по крайней мере, насколько я понимаю. Я установил его в каталог C: и перезапустил компьютер, но он по-прежнему не работает.
Изменить 1: просто хотел уточнить, что ранее я использовал ADO 2.5, а не ADO 6.1
TL; DR: Как я могу исправить ошибку RecordSet.RecordCount
«Несоответствие типов» на 64-разрядной машине с Excel 2010?
varConnection
? Я считаю, что вам нужноadOpenKeyset
илиadOpenStatic
, чтобы получить точный.RecordCount
с ADO. По умолчаниюadOpenForwardOnly
недостаточно для этой цели. - person   schedule 25.02.2015