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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2014, 12:28   #1
subbota
Пользователь
 
Аватар для subbota
 
Регистрация: 26.07.2009
Сообщений: 98
По умолчанию добавление записей в БД

каким методом а точнее как лучше добавлять записи к сетевой БД.
Использую Firebird 2.5 , для подключения работы с БД использую следующие компоненты:
Изображения
Тип файла: jpg скрин.jpg (25.1 Кб, 138 просмотров)
Жили мы бедно, а потом нас обокрали.
subbota вне форума Ответить с цитированием
Старый 02.03.2014, 12:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Используй IBQuery. Записывай в нее команду SQL INSERT. И пускай на исполнение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2014, 15:36   #3
subbota
Пользователь
 
Аватар для subbota
 
Регистрация: 26.07.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Используй IBQuery. Записывай в нее команду SQL INSERT. И пускай на исполнение.
а поподробней можно прочитал куча монуалов что-то не получается.

на пример есть таблица tab1
в ней поля date, fam, zakaz

как в эту таблицу добавить новую запись...
я на форме размещаю 3 edit, в них ввожу данные и по нажатию кнопки в данную бд должна добавится новая запись...
Жили мы бедно, а потом нас обокрали.
subbota вне форума Ответить с цитированием
Старый 02.03.2014, 15:55   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот так:
Код:
with IBQuery do begin
 sql.text:='insert into tab1 (date, fam, zakaz) values (:date,:fam,:zakaz)';
 with Parameters do begin
  ParamByName('date').Value:=date();
  ParamByName('fam').Value:='FIO';
  ParamByName('zakaz').Value:=123;
 end;
 execsql;
end;
Это учитывая что я ничего не знаю о твоей таблице.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2014, 18:17   #5
subbota
Пользователь
 
Аватар для subbota
 
Регистрация: 26.07.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот так:
Код:
with IBQuery do begin
 sql.text:='insert into tab1 (date, fam, zakaz) values (:date,:fam,:zakaz)';
 with Parameters do begin
  ParamByName('date').Value:=date();
  ParamByName('fam').Value:='FIO';
  ParamByName('zakaz').Value:=123;
 end;
 execsql;
end;
Это учитывая что я ничего не знаю о твоей таблице.
parameters - это свойство чего ibquery
Жили мы бедно, а потом нас обокрали.
subbota вне форума Ответить с цитированием
Старый 02.03.2014, 19:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Parameters это именно свойство компонента IBQuery )
Впрочем я мог ошибиться, и наверное оно пишется как "Params". Уточни в хелпе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2014, 21:14   #7
subbota
Пользователь
 
Аватар для subbota
 
Регистрация: 26.07.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Parameters это именно свойство компонента IBQuery )
Впрочем я мог ошибиться, и наверное оно пишется как "Params". Уточни в хелпе.
во общем что то не так с полем date

для пробы сделал так

код
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
with datamodule1.IBQuery1 do begin
 sql.text:='insert into tab1 (date, zakaz, kvitan, naprovlenie, master, infa_zakaz, infa_klient, status) values (:date, :zakaz, :kvitan, :naprovlenie, :master, :infa_zakaz, :infa_klient, :status)';
 with datamodule1.IBQuery1.Params do
 begin
  datamodule1.IBQuery1.ParamByName('date').Value:=date;
  datamodule1.IBQuery1.ParamByName('zakaz').Value:='111111';
  datamodule1.IBQuery1.ParamByName('kvitan').Value:='222222';
  datamodule1.IBQuery1.ParamByName('naprovlenie').Value:='ggg';
  datamodule1.IBQuery1.ParamByName('master').Value:='FIO';
  datamodule1.IBQuery1.ParamByName('infa_zakaz').Value:='gggggg';
  datamodule1.IBQuery1.ParamByName('infa_klient').Value:='111111';
  datamodule1.IBQuery1.ParamByName('status').Value:='0';

 end;
 execsql;
end;
end;
в результате ошибка...
Изображения
Тип файла: jpg скрин.jpg (30.4 Кб, 149 просмотров)
Жили мы бедно, а потом нас обокрали.

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

date наверное зарезервированное слово. Попробуй его в "" взять.
Цитата:
datamodule1.IBQuery1.
Бог мой... Да тебе срочно нужно почитать о операторе with.
Используя его так никто не пишет. Он и призван чтоб сократить запись и не писать полный путь к методу или свойству.
Посмотри же внимательно как я написал. Или вообще его убери если не понимаешь его назначения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.03.2014, 10:55   #9
subbota
Пользователь
 
Аватар для subbota
 
Регистрация: 26.07.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
date наверное зарезервированное слово. Попробуй его в "" взять.

Бог мой... Да тебе срочно нужно почитать о операторе with.
Используя его так никто не пишет. Он и призван чтоб сократить запись и не писать полный путь к методу или свойству.
Посмотри же внимательно как я написал. Или вообще его убери если не понимаешь его назначения.
Добрый день. Поводу оператора with - с 2005 года не работал с Delphi, так что прошу прощения...
Что касается моего вопроса пробовал уже все:
Код:
 ParamByName('date').Value:=date;
 ParamByName('date').Value:=date();
 ParamByName('date').Value:='date';
 ParamByName('date').Value:='date()';
и даже так
Код:
ParamByName('date').Value:="date";
по прежнему выдает ту же ошибку..

вот полностью на всякий случай...
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
with datamodule1.IBQuery1 do {здесь если просто написать IBQuery1 - выдвет ошибку}
begin
 sql.text:='insert into tab1 (date, zakaz, kvitan, naprovlenie, master, infa_zakaz, infa_klient, status) values (:date, :zakaz, :kvitan, :naprovlenie, :master, :infa_zakaz, :infa_klient, :status)';
 with Params  do
 begin
  ParamByName('date').Value:=date;

  ParamByName('zakaz').Value:='111111';
  ParamByName('kvitan').Value:='222222';
  ParamByName('naprovlenie').Value:='ggg';
  ParamByName('master').Value:='FIO';
  ParamByName('infa_zakaz').Value:='gggggg';
  ParamByName('infa_klient').Value:='111111';
  ParamByName('status').Value:='0';

 end;
 execsql;
end;
end;
Жили мы бедно, а потом нас обокрали.
subbota вне форума Ответить с цитированием
Старый 03.03.2014, 11:11   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для начала, попробуйте в Tab1 изменить имя поля date на любое другое, отличное от ключевого слова, например, переименуйте данное поле в DateZakaz.

тогда ваш запрос можно будет записать в виде:
Код:
sql.text:='insert into tab1 (DateZakaz, zakaz, kvitan, naprovlenie, master, infa_zakaz, infa_klient, status) '+
' values (:dtzak, :zakaz, :kvitan, :naprovlenie, :master, :infa_zakaz, :infa_klient, :status) ';
 with Params  do
 begin
  ParamByName('dtzak').Value:=date();
.....
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записей в таблицу! Анастасия1902 БД в Delphi 2 03.10.2012 09:23
Добавление записей в БД Access DjoNik135 Помощь студентам 0 18.04.2012 15:09
Добавление и удаление записей в БД DimOn4Ik БД в Delphi 6 27.03.2010 15:07
Добавление записей IvaNNN БД в Delphi 6 11.12.2009 15:02
Добавление записей Liones БД в Delphi 3 25.12.2008 10:08