Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++&InterBase] снова добавление записей в таблицу


Автор: libertine 29.4.2008, 23:39
здравствуйте все,извиняюсь за фактический дубль своей же темы.
всё ещё пытаюсь добавить запись в таблицу firebird из клиентского приложения.
пытаюсь использовать ibquery вместе с ibupdatesql. сначала получаю набор данных, выбираю из таблицы всё, кроме поля,полученного с генератора(как я понимаю, перед вставкой должен сработать триггер, где увеличивается значение генератора). потом - 

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     IBQuery1->Insert();
     IBQuery1->Fields->FieldByName("W_SURNAME")->AsString = Edit1->Text;
     IBQuery1->Fields->FieldByName("W_NAME")->AsString = Edit2->Text;
     IBQuery1->Fields->FieldByName("W_PART")->AsString = Edit3->Text;
     IBQuery1->Fields->FieldByName("W_BIRTH")->AsString = Edit4->Text;
     IBQuery1->Fields->FieldByName("W_ADRESS")->AsString = Edit5->Text;
     IBQuery1->Fields->FieldByName("DUTY")->AsString = Edit6->Text;
     IBQuery1->Post();
 }


в dbgrid запись добавляется, в таблицу - тоже, но там кроме этого генератора и нет ничего.. понимаю, что этим кодом я добавила поля только в тот набор данных, который отображается, а не в тот, который есть физически.. так вот.что нужно написать в качестве values в insertsql у ibupdatesql, чтобы содержимое edit'oв попало не только в грид, но и в таблицу?

Код

Insert into workers (surname,name,part,birth,adress,duty)
values (?)


спс.

Автор: Rodman 30.4.2008, 09:48
Код

Insert into workers (surname,name,part,birth,adress,duty)
values (:W_SURNAME, :W_NAME. :W_PART, :W_BIRTH, :W_ADRESS, :DUTY);

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     IBQuery1->Fields->FieldByName("W_SURNAME")->AsString = Edit1->Text;
     IBQuery1->Fields->FieldByName("W_NAME")->AsString = Edit2->Text;
     IBQuery1->Fields->FieldByName("W_PART")->AsString = Edit3->Text;
     IBQuery1->Fields->FieldByName("W_BIRTH")->AsString = Edit4->Text;
     IBQuery1->Fields->FieldByName("W_ADRESS")->AsString = Edit5->Text;
     IBQuery1->Fields->FieldByName("DUTY")->AsString = Edit6->Text;
     IBQuery1->ExecSQL();
 }

Автор: libertine 30.4.2008, 20:41
Rodman, спасибо большое, получилось))
получается, параметры IBUpdateSQL есть поля IBQuery?

Автор: Rodman 30.4.2008, 20:54
не понял вопроса!

Автор: libertine 30.4.2008, 21:35
Код

Insert into workers (surname,name,part,birth,adress,duty)
values (:W_SURNAME, :W_NAME. :W_PART, :W_BIRTH, :W_ADRESS, :DUTY);



это мы пишем в IBUpdateSQL1. у него нет свойства Params, как у IBQuery1, где можно было бы описать параметры :W_SURNAME .. :DUTY
вместо этих параметров подставляется значение соответствующих полей IBQuery1. Значит, поля IBQuery1 передаются в IBUpdateSQL1 как параметры?

Автор: Rodman 30.4.2008, 21:59
Цитата(libertine @  30.4.2008,  21:35 Найти цитируемый пост)
у него нет свойства Params,

не обязательно описывать это поле... можно просто в запросе их правильно перечислить!

Автор: libertine 30.4.2008, 22:06
хм, понятно. надо учить матчасть)
спс ещё раз.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)