Опит за АКТУАЛИЗИРАНЕ НА INTO с помощта на SQL израз от Excel VBA без успех

Опитвам се да вмъкна нов ред, попълнен с данни, в проста таблица на Access с помощта на SQL от Excel VBA и не мога да преодолея първото препятствие.

Имам една таблица, наречена "Тест" с четири полета;

  • ID [поле за автоматично номериране, идентифицирано като първичен ключ]

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

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

  • No1 [числово поле с дълго цяло число]

Няма релации или няма зададени индекси освен в полето за автоматично номериране (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 седи на твърдия ми диск и получавам същата грешка, независимо дали Access е отворен или затворен, когато изпълнявам VBA кода.

Моят SQL израз, поставен директно в прозореца „SQL View“ на Access, работи добре и вмъква правилно попълнен ред в теста на таблицата.

Всяка помощ от експерт (особено с правилния синтаксис), за да ме преодолее това, ще бъде много оценена, моля.


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