Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Insert через ADO

9.8K
22 февраля 2005 года
Beer
5 / / 15.02.2005
Перевожу свою базу данных с парадокса на аксесс. Соответственно отказываюсь от BDE и "пытаюсь" использовать ADO. Все бы хорошо но TADOQuery и TADOCommand напрочь отказываются вставлять новые записи. Запрос такой:

INSERT INTO Geo (RegN, ZakazN, Adres, Disk, Kalka, Date_In, Note) VALUES (1528, '3-35684-04', 'ул. Полбина', 1, 3, '22.02.2005', 'поперечник')

RegN - числовой (LongInt)
ZakazN - текстовый (255)
Adres - текстовый (255)
Disk - числовой (LongInt)
Kalka - числовой (LongInt)
Date_In - текстовый (255)
Note - текстовый (255)

Если использовать TADOQuery, то при попытке вызвать метод ExecSql возникает ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"

Если использовать TADOCommand, то при попытке вызвать метод Execute возникает ошибка "Ошибка синтаксиса в инструкции INSERT INTO"

В таблице еще есть автокриментное свойство RecIndex, но я его не должен вроде задавать при вставке новой записи...

Самое интересно что с BDE тот же самый запрос работает! Ну ни как не могу понять в чем дело! Народ! Помогите!
259
22 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Beer
Перевожу свою базу данных с парадокса на аксесс. Соответственно отказываюсь от BDE и "пытаюсь" использовать ADO. Все бы хорошо но TADOQuery и TADOCommand напрочь отказываются вставлять новые записи. Запрос такой:

INSERT INTO Geo (RegN, ZakazN, Adres, Disk, Kalka, Date_In, Note) VALUES (1528, '3-35684-04', 'ул. Полбина', 1, 3, '22.02.2005', 'поперечник')

RegN - числовой (LongInt)
ZakazN - текстовый (255)
Adres - текстовый (255)
Disk - числовой (LongInt)
Kalka - числовой (LongInt)
Date_In - текстовый (255)
Note - текстовый (255)

Если использовать TADOQuery, то при попытке вызвать метод ExecSql возникает ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"

Если использовать TADOCommand, то при попытке вызвать метод Execute возникает ошибка "Ошибка синтаксиса в инструкции INSERT INTO"

В таблице еще есть автокриментное свойство RecIndex, но я его не должен вроде задавать при вставке новой записи...

Самое интересно что с BDE тот же самый запрос работает! Ну ни как не могу понять в чем дело! Народ! Помогите!


Перепиши вот так:

 
Код:
AdoQuery->SQL = "INSERT INTO Geo (RegN, ZakazN, Adres, Disk, Kalka, Date_In, Note) VALUES (1528, '3-35684-04', 'ул. Полбина', 1, 3, :p_DateTime, 'поперечник')";
   TDateTime pDateTime = TDateTime('22.02.2005');
   AdoQuery->Parametrs->ParamByName(p_DateTime)->Value = pDateTime;
   AdoQuery->ExecSQL();


У тебя тип даты не совпадает. Ado не умеет преобразовывать "01.01.2005" в DateTime.
9.8K
22 февраля 2005 года
Beer
5 / / 15.02.2005
Цитата:
Originally posted by AlexandrVSmirno

Перепиши вот так:
 
Код:
AdoQuery->SQL = "INSERT INTO Geo (RegN, ZakazN, Adres, Disk, Kalka, Date_In, Note) VALUES (1528, '3-35684-04', 'ул. Полбина', 1, 3, :p_DateTime, 'поперечник')";
   TDateTime pDateTime = TDateTime('22.02.2005');
   AdoQuery->Parametrs->ParamByName(p_DateTime)->Value = pDateTime;
   AdoQuery->ExecSQL();


У тебя тип даты не совпадает. Ado не умеет преобразовывать "01.01.2005" в DateTime.



Таже самая ошибка вылетает. Дело в чем, в самой базе Date_In - имеет текстовый тип! Так что преобразования к дате не нужно (но я все равно попробовал - не работает).

259
22 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Beer


Таже самая ошибка вылетает. Дело в чем, в самой базе Date_In - имеет текстовый тип! Так что преобразования к дате не нужно (но я все равно попробовал - не работает).


1. В Дизайн режиме поробуй Active поставить в true. Получишь более развернутую диагностику того, что ado не понравилось.
2. Посмотри в Parameters. Может у тебя какие параметры определены? Удали их.
3. Свойство Prepared поставь в false.

259
22 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by AlexandrVSmirno

1. В Дизайн режиме поробуй Active поставить в true. Получишь более развернутую диагностику того, что ado не понравилось.
2. Посмотри в Parameters. Может у тебя какие параметры определены? Удали их.
3. Свойство Prepared поставь в false.


Да еще. Если используешь параметры в запросе более чем один раз, назови их по разному. И обязательно проставь им типы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог