Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 23:38   #1
lovetolaugh
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 28
По умолчанию Добавление записи в ADOQuery.

Доброго времени суток. Такая проблема:
Как добавлять с помощью ADOQuery новые записи в БД?

В БД Students имеются соответственно следующие поля и их типы:



За добавление записи отвечают следующие строки:

Код:
adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('insert into Students values(100, 'Колганов', 'Максим', 'Валерьевич', 'м', 17.11.1991, 'П_408', '111-222', 0, '12345')') ;
    adoquery1.ExecSQL;
Выдаются следующие ошибки (которые все относятся к строчке с добавление записи):



А если например поле имеет тип DATE, то как тогда задать значение поля?

Последний раз редактировалось Stilet; 11.06.2011 в 16:14.
lovetolaugh вне форума
Старый 11.06.2011, 00:15   #2
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Вот так попробуй.
Код:
adoquery1.SQL.Add('insert into Students values(100, ''Колганов'', ''Максим'', ''Валерьевич'', ''м'', 17.11.1991, ''П_408'', ''111-222'', 0, ''12345'')');
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 11.06.2011 в 00:24.
D-mon вне форума
Старый 11.06.2011, 00:29   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
adoquery1.SQL.Add('insert into Students values(100,''Колганов'',''Максим'',''Валерьевич'',''м'',17.11.1991,''П_408'',''111-222'',0,''12345''') ;
В конце не очень понял зачем вторая скобка. Насчет даты - зависит от СУБД, не знаете как - делайте параметрический запрос
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 11.06.2011, 00:33   #4
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
adoquery1.SQL.Add('insert into Students values(100,''Колганов'',''Максим'',''Валерьевич'',''м'',17.11.1991,''П_408'',''111-222'',0,''12345''') ;
В конце не очень понял зачем вторая скобка. Насчет даты - зависит от СУБД, не знаете как - делайте параметрический запрос
А закрыть скобку для
Код:
values(
не надо по Вашему???

А вот насчёт даты соглашусь, что не сильно красиво написано.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума
Старый 11.06.2011, 00:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
не надо по Вашему???
Надо, проморгал, каюсь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 11.06.2011, 02:01   #6
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Для даты приблизительно так, для разных БД:
Для MS SQL
Код:
adoquery1.SQL.Add('insert into Students values(100,''Колганов'',''Максим'',''Валерьевич'',''м'',convert(datetime, ''23/10/2016'', 103),''П_408'',''111-222'',0,''12345'')') ;
Для Oracle
Код:
adoquery1.SQL.Add('insert into Students values(100,''Колганов'',''Максим'',''Валерьевич'',''м'',to_date(OP_DATETIME,''dd.mm.yyyy''),''П_408'',''111-222'',0,''12345'')') ;
Для Firebird
Код:
adoquery1.SQL.Add('insert into Students values(100,''Колганов'',''Максим'',''Валерьевич'',''м'',cast(''23/10/2016'' as DATE),''П_408'',''111-222'',0,''12345'')') ;
Нет невыполнимых задач, всё дело времени...
D-mon вне форума
Старый 11.06.2011, 13:08   #7
lovetolaugh
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 28
По умолчанию

Спасибо - все работает.

Только возникла новая проблема: необходимо чтобы новая запись имела номер на 1 больше предыдущего. Я пытаюсь сделать это так:

Код:
    n := form1.ADOQuery1.RecordCount;
    form1.adoquery1.Close;
    form1.ADOQuery1.SQL.Clear;
    form1.ADOQuery1.SQL.Add('insert into Students values(n+1, ''Колганов'',
 ''Максим'', ''Валерьевич'', ''м'', convert(datetime, ''17.11.1991'',103),
 ''П_408'', ''111-222'', 0, ''230105'')');
    form1.ADOQuery1.ExecSQL;
Но возникает такая ошибка:



И если можно напишите как взять значение для поля БД из edit'а...

Последний раз редактировалось Stilet; 11.06.2011 в 16:14.
lovetolaugh вне форума
Старый 11.06.2011, 16:15   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
form1.ADOQuery1.SQL.Add('insert into Students values('+IntToStr(n+1)...
Ферштейн?
I'm learning to live...
Stilet вне форума
Старый 11.06.2011, 16:23   #9
lovetolaugh
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
form1.ADOQuery1.SQL.Add('insert into Students values('+IntToStr(n+1)...
Ферштейн?
Ага. Спасибо.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
form1.ADOQuery1.SQL.Add('insert into Students values('+IntToStr(n+1)...
Ферштейн?
А не подскажешь как взять значение для нового поля из edit?

Будет что-то вроде:

Код:
form1.ADOQuery1.SQL.Add('insert into Students values(''+edit1.text+''...
(Правда данный вариант не работает)

Последний раз редактировалось Stilet; 11.06.2011 в 20:08.
lovetolaugh вне форума
Старый 11.06.2011, 18:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
SQL.Add('insert into Students values('+QuotedStr(edit1.text)+'...
Опять таки в зависимости от типа поля - в данном случае предполагается строковое поле.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи в БД средствами ADOQuery. lovetolaugh Помощь студентам 0 16.05.2011 19:02
Добавление в связанные таблицы ADOQuery и ADOTable Alukard ń_ಶ Помощь студентам 0 07.06.2010 21:11
ADOQuery, добавление в таблицу. Explosion Помощь студентам 5 18.03.2010 12:06
Добавление записи в бд Lokos БД в Delphi 8 15.12.2009 16:36
Добавление записи LLIYT БД в Delphi 15 09.06.2009 18:25