VB6 ADO INSERT поля TEXT в .MDB - PullRequest
       39

VB6 ADO INSERT поля TEXT в .MDB

0 голосов
/ 14 августа 2011

Мой пример программы VB6:

Dim conn As New connection
conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\adatabase.mdb;"
conn.Execute "INSERT INTO atable (afield) VALUES (""some text"")"
End Sub

(«adatabase.mdb» содержит одну таблицу «atable» с одним полем «afield» типа «Text» длиной 255. Access 2002, Access file format 2000Ссылки VB6 включают «Библиотеку объектов данных Microsoft ActiveX 2.8».)

conn.Execute получает:

Ошибка времени выполнения '-2147217904 (80040e10' [Microsoft] [Драйвер доступа ODBC]Слишком мало параметров. Ожидается 1.

Запрос

INSERT INTO atable (afield) VALUES ("some text")

выполняется напрямую в Access без проблем.

1 Ответ

0 голосов
/ 14 августа 2011

Разве это не должно быть:

conn.Execute "INSERT INTO atable (afield) VALUES ("""some text""")"

т.е. вам нужно заключить в двойные кавычки?

Обновление: или, как решил плакат, используйте одинарные кавычки для цитирования текста.

Или, что еще лучше, используйте параметризованный запрос:

Dim Conn1 As ADODB.Connection
Dim Cmd1 As ADODB.Command
Dim Param1 As ADODB.Parameter
Dim Rs1 As ADODB.Recordset

' Create and Open Connection Object.
Set Conn1 = New ADODB.Connection
Conn1.ConnectionString = "DSN=Biblio;UID=admin;PWD=;"
Conn1.Open

' Create Command Object.
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "SELECT * FROM Authors WHERE AU_ID < ?"

' Create Parameter Object.
Set Param1 = Cmd1.CreateParameter(, adInteger, adParamInput, 5)
Param1.Value = 5
Cmd1.Parameters.Append Param1
Set Param1 = Nothing

' Open Recordset Object.
Set Rs1 = Cmd1.Execute()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...