Попытка ОБНОВИТЬ INTO с помощью инструкции SQL из Excel VBA без успеха

Я пытаюсь вставить новую строку, заполненную данными, в простую таблицу доступа, используя SQL из Excel VBA, и не могу преодолеть первое препятствие.

У меня есть одна таблица под названием «Тест» с четырьмя полями;

  • ID [поле AutoNumber, идентифицированное как первичный ключ]

  • Text1 [Текстовое поле]

  • YN1 [Поле Да/Нет]

  • No1 [длинное целое числовое поле]

Отношения или индексы не установлены, кроме поля AutoNumber (PK). Для всех полей «Обязательно» установлено значение «Нет», проверки не установлены и значения по умолчанию не установлены. Text1 может принимать нулевую длину.

Бизнес-конец моего кода VBA выглядит следующим образом:

'Connection string.
    stcnt = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDBPath & stDBname

'Instantiate the ADO-objects
    Set cnt = New ADODB.Connection

'Open the connection for first Query
    With cnt
        .Open (stcnt) 'Open the connection.
        .CursorLocation = adUseClient 

'Test Data
T1 = "ABC123"
Y1 = -1
N1 = 17

        stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES(T1, Y1, N1)"

        .Execute (stSQL1)

    End With

    'Close connection
    cnt.Close

Мои переменные были затемнены соответствующим образом (Y1 как логическое значение), а имена путей/баз данных объявлены правильно.

На линии

 .Execute (stSQL1)

Я получаю сообщение об ошибке "Не указано значение для одного или нескольких обязательных параметров"

Я читал, что вы можете опустить поле AutoNumber и его значение (что я и сделал). Если нет, может ли кто-нибудь дать мне синтаксис, чтобы включить это. С моими ограниченными знаниями/исследованиями я также могу неправильно трактовать поле «Да-Нет». Опять же, любые советы и синтаксис, чтобы справиться с этим, будут с благодарностью получены.

База данных Access находится на моем жестком диске, и я получаю ту же ошибку независимо от того, открыт или закрыт доступ при запуске кода VBA.

Мой оператор SQL, вставленный непосредственно в окно Access «SQL View», работает нормально и вставляет правильно заполненную строку в тест таблицы.

Любая помощь от эксперта (особенно с правильным синтаксисом), чтобы помочь мне с этим, была бы очень признательна, пожалуйста.


person barryleajo    schedule 24.07.2013    source источник


Ответы (1)


Поскольку stSQL1 является строкой, компилятор не увидит, что вы хотите вставить переменные T1, Y1 и No1 в строку. Вам нужно построить строку самостоятельно:

stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES('" & T1 & "'," & Y1 & "," & N1 & ")"

Вам нужно поместить одинарную кавычку вокруг текстового значения.

person Rikalous    schedule 24.07.2013
comment
Спасибо - отлично - ваше объяснение также имеет смысл. - person barryleajo; 25.07.2013