2009-05-27 4 views
1

Я работаю над небольшим ap, использующим vbscript для записи в db доступа к MS каждый раз, когда я его использую (действительно для личного использования, только поэтому мне не нужно беспокоиться о SQL-инъекции). Когда я запускаю его, я продолжаю получать «синтаксическую ошибку в инструкции INSERT INTO». Строка соединения правильная, поскольку db блокируется при ее запуске. имя таблицы - ors. Что я делаю не так?vbscript insert into ms access

sql1="INSERT INTO ors VALUES (,,'B223234','12/22/08')" 
constring="Provider=Microsoft.Jet.OLEDB.4.0; 
    Data Source=C:\Documents and Settings\me\My Documents\tracker.mdb; 
    User Id=admin;Password=;" 
set con=createobject("adodb.connection") 
con.open constring 
con.execute sql1 
con.close 
+0

Вы получите более качественные ответы, если вы укажете, какие поля есть и какие типы данных являются этими полями. Например, если последний столбец является полем даты/времени, вам нужно поставить # вокруг даты, но если его текст или заметка, то то, что у вас есть, в порядке. – AnonJr

ответ

3

Вам нужно NULL для «пустых» значений. Вы также должны использовать #, окружающий дату, вместо одиночных кавычек для полей даты.

Если вы не хотите указывать все значения, вы можете указать только те поля, которые вы хотите установить.

(Предполагается, что поле даты, а не текст для даты валютирования)

Это:

INSERT INTO ors VALUES (NULL,NULL,'B223234',#12/22/08#)

Или Это:

INSERT INTO ors (Field3, Field4) VALUES ('B223234',#12/22/08#)

+0

даты в MS Access требуют # окружающих их –

+0

Если это не текстовое поле. Вышеприведенный код * работает * со столом с четырьмя текстовыми полями. Информация вопроса не указывается. – crashmstr

+0

спасибо, что решили, нужны нулевые хорошие ответы – Anthony

3

Если я правильно помню, я думаю, что даты в MS Access требуют # окружающего их вместо одиночных кавычек. Попробуйте изменить вставку

INSERT INTO ors VALUES (,,'B223234',#12/22/08#) 

кроме того, вы, возможно, придется указать пробелы для отсутствующих параметров

INSERT INTO ors VALUES (NULL,NULL,'B223234',#12/22/08#) 

мое знание MS Access является немного ржавый, но дают, что выстрел.

+3

Вы используете NULL для отсутствующих значений INSERT INTO ors VALUES (NULL, NULL, 'B223234', # 12/22/08 #) –

+0

ах да ... там я пошел .... как я сказал .... ржавый. должен быть gettin старый ... спасибо DJ –

+1

+1 ... Но можете ли вы обновить свой ответ, поэтому читатели, не являющиеся комментаторами, увидят правильное решение?:) Я бы сделал это сам, но пока не додумался. – Oorang

0

вам нужно указать поля для вставки в:

Пример: Вставьте в Table1 (test1, test2, test3) Значения ('1', '2', '3')

+0

Они являются необязательными, если вы даете значения для всех полей. – crashmstr

+0

Я не знал этого до тех пор, пока не прочитал эту тему и не понял, почему кто-то это сделает. Для таблицы с четырьмя столбцами не такая уж большая проблема, но кто хочет начать подсчет запятых для таблиц с большим количеством столбцов? Я точно не знаю! –

1

INSERT INTO ПРС (FIELD1, fiedl2) ЦЕННОСТИ ('B223234', № 12/22/08 #)

или

INSERT INTO OrS VALUES (NULL, NULL, 'B223234', # 12/22/08 #)

Может работать ..

1

Также обратите внимание, что поле даты должно быть в любом мм/дд/гг или в другом недвусмысленном формате, таком как мм/дд/гггг, гггг/мм/дд или гггг-мм-дд. Если кто-то запускает свою систему в формате dd/mm/yy или yy/mm/dd, это приведет к установке неправильных дат.

См. http://mvps.org/access/datetime/date0005.htm для решения, которое работает в Access.

Я знаю, что вы заявили, что это для личного использования, но вы должны знать об этих деталях в будущем.

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