Доступ к VBA с помощью SQL UPDATE - PullRequest
0 голосов
/ 23 февраля 2019

Я использую две базы данных Access (внешний и внутренний).

Мой код для работы с запросами, но я использую его для обновления базы данных.Что я делаю не так?

Я получаю ошибку времени выполнения 3078 для DoCmd.RunSQL strSql в строке 25.

Set cnn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & CurrentProject.Path & "\DB_Cryk.accdb"

cnn.Open strConnection

MemberID = txtMemberID.Value

strSql = "UPDATE Cryk " & _
"SET Membership = '" & txtMembership.Value & "', " & _
"    Memberstatus = '" & txtMemberstatus.Value & "', " & _
"    Membername = '" & txtMembername.Value & "', " & _
"    Memberaddress = '" & txtMemberaddress.Value & "', " & _
"    Memberzip = '" & txtMemberzip.Value & "', " & _
"    Membercity = '" & txtMembercity.Value & "', " & _
"    Memberphone = '" & txtMemberphone.Value & "', " & _
"    Membermail = '" & txtMembermail.Value & "', " & _
"    Memberyear = '" & txtMemberyear.Value & "', " & _
"    Dateofbirth = '" & txtDateofbirth.Value & "', " & _
"    Memberno = '" & txtMemberno.Value & "', " & _
"    Memberfee = '" & txtMemberfee.Value & "', " & _
"    Memberpayment = '" & txtMemberpayment.Value & "'" & _
"WHERE MemberID= '" & MemberID & "'"

DoCmd.RunSQL strSql

cnn.Close
Set cnn = Nothing

1 Ответ

0 голосов
/ 24 февраля 2019

Ошибка 3078 указывает на то, что целевой таблицы не существует в вашей базе данных.

Обратите внимание, что, хотя вы открываете соединение ADO с базой данных DB_Cryk.accdb, вы выполняете оператор SQL с использованием метода DoCmd.RunSQL, который работает с текущей базой данных .

Вместо этого, если вы хотите, чтобы SQL выполнялся в вашей базе данных DB_Cryk.accdb, вы должны использовать Executeметод объекта ADODB Connection, например:

cnn.Execute strsql

Что касается параметризации запроса, вы можете обратиться к этому превосходному ответу , в частности, к разделу «Использование ADO»раздел.

...