Опитвам се да вмъкна нов ред, попълнен с данни, в проста таблица на 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, работи добре и вмъква правилно попълнен ред в теста на таблицата.
Всяка помощ от експерт (особено с правилния синтаксис), за да ме преодолее това, ще бъде много оценена, моля.