Я пытаюсь вставить новую строку, заполненную данными, в простую таблицу доступа, используя 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», работает нормально и вставляет правильно заполненную строку в тест таблицы.
Любая помощь от эксперта (особенно с правильным синтаксисом), чтобы помочь мне с этим, была бы очень признательна, пожалуйста.