2015-10-05 2 views
0

У меня есть программа в Visual Basic 6, которая слушает ComPort и генерирует SQL-запросы на основе данных, которые она получает. Я использую ADODB в качестве моей базы данных по выбору.Выполнение запроса в ADODB в VB6

В настоящее время им пытаются это:

' Initiate Database Connection 
    Call dbConn 
    results.Open SQLQueryfeld(s), cn 
    Debug.Print (results.GetString) 
    Debug.Print ("SQL Statement " & SQLQueryfeld(s) & " wurde erfolgreich ausgeführt") 
    results.Close 

Что дает мне «Эта операция не разрешена на закрытом объекте» на первой линии Debug.Print.

DBConn является публичной функцией, которая создает объект ADODB соединение с именем сп результатов начинается в голове функции кода составляет от, как

Dim results as New ADODB.Recordset 

Конечная цель состоит в следующем: Выполнение INSERT SQL заявление (хранятся в строковом массиве SQLQueryfeld (s)) и получают возврат или нет, это было успешно. Я также открываю любой другой способ сделать это, но он должен использовать ADODB.

Вот какой-то другой код из того же проекта, который работает отлично:

Call dbConn 

SQL = "SELECT Name FROM Personen WHERE Eintrag=" & Personalid & " " 
rs.Open SQL, cn 

If rs.RecordCount > 0 Then 
tmp_name = rs.GetString 
tmp_name = Replace(tmp_name, Chr(13), "") 
tmp_name = Replace(tmp_name, Chr(10), "") 
tmp_name = Replace(tmp_name, vbCrLf, "") 
+0

не должны использовать присваиваем переменной сп соединения , Попробуйте удалить строку вызова dbconn и использовать cn = dbConn – DevelopmentIsMyPassion

+0

проверить 'cn.state' перед набором записей –

+0

Я должен добавить, что вызов dbConn работает в других аналогичных кодовых формах с помощью SELECT вместо операторов INSERT – Magisch

ответ

0

Если вы знаете, что ваш запрос является запросом INSERT, вы можете использовать Connection.Execute вместо RecordSet.Open.

Пример:

Dim recordsAffected As Long 
    Call dbConn 
    cn.Execute SQLQueryfeld(s), recordsAffected 
    Debug.Print "Number of inserted rows: " & recordsAffected 
+1

Где в нем указывается, какой запрос выполнить? – Magisch

+0

К сожалению, опечатка в коде – GTG

+0

Спасибо, что, очевидно, сделал трюк. – Magisch

0

Я просто изменить GTG «s ответ

Dim recordsAffected As Long 
Call dbConn 
cn.Execute SQLQueryfeld(s), recordsAffected 
Debug.Print "Number of inserted rows: " & recordsAffected 

Ваша переменная SqlQueryFeild должна быть вставка заявление, например

Insert into table X values("df") 

 Смежные вопросы

  • Нет связанных вопросов^_^