Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизКак в SQL INSERT INTO указать правильное значение для счетчика? Найти похожие ветки
← →
DVM © (2006-11-02 12:13) [0]Есть таблица MS Access в которой есть поле ID типа счетчик.
Добавляю записи c пом TADOQuery:
ADOQuery.SQL.Add("INSERT INTO EventLog");
ADOQuerySQL.Add("VALUES (100, 1, 1, 1, 0)");
В данном запросе все работает, первое значение 100 это и есть ID.
Но как мне построить запрос, чтобы счетчик автоматически приращался и был уникальным?
← →
Stanislav © (2006-11-02 12:14) [1]а ты перечисли все поля кроме счетчика
← →
Stanislav © (2006-11-02 12:15) [2]А pole1 это счетчик.
ADOQuery.SQL.Add("INSERT INTO EventLog (Pole2,pole3,pole4,pole5,pole6)");
ADOQuerySQL.Add("VALUES (100, 1, 1, 1, 0)");
← →
DVM © (2006-11-02 12:16) [3]
> Stanislav © (02.11.06 12:14) [1]
Тогда пишет "Не совпадает число значений ..."
← →
ЮЮ © (2006-11-02 12:17) [4]INSERT INTO EventLog(<Второе поле>,<3 поле>, <4 поле>, <5 поле
VALUES (1, 1, 1, 0)
← →
DVM © (2006-11-02 12:21) [5]Написал:
> ADOQuery.SQL.Add("INSERT INTO EventLog (EventType,ZoneID,
> SensorID,DateTime)");
> ADOQuery.SQL.Add("VALUES (1, 1, 1, 0)");
Пишет ошибка в синтаксисе INSERT INTO
← →
ЮЮ © (2006-11-02 12:28) [6]DateTime разве не зарезервированное слово?
Да и значение како-то некузявое для лога
← →
DVM © (2006-11-02 12:30) [7]
> DateTime разве не зарезервированное слово?
Да вроде нет. Все остальное же с ним работает и выборка и т.д.
> Да и значение како-то некузявое для лога
Я для простоты написал 0. Оно работает в первом моем посте. Дело вряд ли в этом.
← →
Desdechado © (2006-11-02 12:31) [8]Сколько раз писать: не делайте Add, делайте SQL.Text :=
Это в некоторых версиях позволяет избежать глюков Дельфи, да и во всех позволяет не забывать о Clear.
← →
DVM © (2006-11-02 12:35) [9]
> Desdechado © (02.11.06 12:31) [8]
Исправил:ADOQuery.SQL.Text := "INSERT INTO EventLog (EventType, ZoneID, SensorID, DateTime) VALUES (1, 1, 1, 0)";
Все равно "ошибка в синтаксисе INSERT INTO"
Что за ерунда, никак не пойму.
EventType, ZoneID, SensorID - целые числа, DateTime - дата/время.
Первое поле ID - счетчик.
← →
ЮЮ © (2006-11-02 12:38) [10]В самом Access тоже ругается. Причем на DateTime, возьми его в скобки:
INSERT INTO EventLog ( EventType, ZoneID, SensorID, [DateTime] )
VALUES (1, 1, 1, 0);
← →
sniknik © (2006-11-02 12:41) [11]> Сколько раз писать: не делайте Add, делайте SQL.Text :=
сколько раз писать не используйте Query в ADO, используйте Command/Dataset
это во всех случаях логичнее для ADO чем притянутые за уши конструкции из BDE.
> Да вроде нет. Все остальное же с ним работает и выборка и т.д.
да точно да. ну работает, ну есть в движке "оптимизатор" подставляет/конвертирует нужное там где может/однозначно... ну и что? почитай справку, раздел зарезервированные слова.
← →
DVM © (2006-11-02 12:43) [12]
> ЮЮ © (02.11.06 12:38) [10]
Спасибо, помогло.
← →
DVM © (2006-11-02 12:45) [13]
> sniknik © (02.11.06 12:41) [11]
> используйте Command
Имеется ввиду TADOCommand?
← →
sniknik © (2006-11-02 12:57) [14]да. если бы ты его использовал то изначально был бы лишен возможности сделать ADOCommand.SQL.Add, что иногда приводит(вернее приводило) к глюкам дельфи ([8]), а сделал бы правильно, по той логике которую в ADO закладывали его разработчики... и т.д.
← →
Stanislav © (2006-11-02 12:58) [15]DVM © (02.11.06 12:45) [13]
да.
← →
DVM © (2006-11-02 12:58) [16]
> sniknik © (02.11.06 12:57) [14]
Спасибо за совет, буду знать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c