Я пытаюсь прочитать содержимое двух разных вкладок на листе и сравнить их с помощью ADODB и методов запросов VBA.VBA ADODB update recordset
Ниже вы можете найти свой код:
stCon = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & wbBook.FullName & ";" _
& "Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;Readonly = False"";"
' MsgBox (stCon)
'here is SQL code to gather data including our calculation from two tables within the workbook
'stSQL = "SELECT [Recon_Daily_Xml_report$].RECTYPEGLEDGER, [GL_Activity_totals$].TRXNTYPE, ([Recon_Daily_Xml_report$].Amount_Abs - [GL_Activity_totals$].BILLINGAMT) as Amount_Diff ,"
'stSQL = stSQL & " ([Recon_Daily_Xml_report$].NUMOFENTRIES - [GL_Activity_totals$].NUMOFTRXNS) as Count_Diff "
'stSQL = stSQL & " FROM [Recon_Daily_Xml_report$], [GL_Activity_totals$]"
'stSQL = stSQL & " WHERE Lower([Recon_Daily_Xml_report$].RECTYPEGLEDGER) = Lower([GL_Activity_totals$].TRXNTYPE)"
'stSQL = stSQL & " ORDER BY [Recon_Daily_Xml_report$].RECTYPEGLEDGER ASC"
stSQL = "SELECT LCASE([GL_Activity_totals$].TRXNTYPE),Sum(ABS([GL_Activity_totals$].BILLINGAMT)),Sum([GL_Activity_totals$].NUMOFTRXNS) "
stSQL = stSQL & " FROM [GL_Activity_totals$] "
stSQL = stSQL & " Group By [GL_Activity_totals$].TRXNTYPE "
stSQL = stSQL & " ORDER BY [GL_Activity_totals$].TRXNTYPE ASC"
'MsgBox (stSQL)
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
cnt.Open stCon
'rst.Open stSQL, cnt, 1, 3
rst.Open stSQL, cnt, adOpenStatic, adLockOptimistic
'rst.Open strSQL, cnt, adOpenStatic, adLockOptimistic
With rst
Do While Not .EOF
If rst.Fields.Item(0).Value <> "" Then
strString = Replace(rst.Fields.Item(0).Value, " ", " ")
rst.Update
rst.Fields.Item(0) = strString
End If
.MoveNext
Loop
End With
Этот конкретный код дает мне обратно ошибку предполагая, что я не могу обновить поле в наборе записей Я хочу, чтобы обновить при чтении. Ошибка Сейчас я получаю:
Run-time error '-2147217911 Cannot update. Database or object is read-only.
Пытался изменить способ я открыть набор записей, используя 1,3 вариант, но опять я получаю ту же ошибку.
Может ли кто-нибудь помочь в этом?
Благодарим за отзыв. Заменить функциональность в Update для ADODB VBA не распознается. Таким образом, замена не выполняется. – user3122285
Нужно ли мне делать какие-либо другие изменения для этого? конечный результат, который я хочу, - это заменить все лишние пробелы внутри строк trxntypes, которые находятся в наборе записей. – user3122285
После того, как вы снова просмотрели свой вопрос, я задаюсь вопросом, было бы лучше просто открыть лист без использования ADODB, но в любом случае я думаю, что Substitute должен работать вместо Replace, поскольку он превосходит – serakfalcon