1 (edited by Ra*dmin 2014-09-27 11:39:04)

Topic: [Решено] Сохранение в две таблицы

Здравствуйте, это пожалуй единственный оставшийся тупик в моем проекте,
хотелось бы вести историю во вторую таблицу, таблицы разные но имеют
одинаковые поля. Если Вам не сложно напишите код на примере:

Основная таблица "S"  поля "X", "Y", "Z"
Таблица получатель "D"  поля "X", "Y", "Z"

Находил примеры но толи не то, толи не так я их присабачиваю...

Спасибо...

Re: [Решено] Сохранение в две таблицы

Используйте событие OnAfterClick от кнопки сохранения, в основную таблицу S сохраняйте информацию с помощью кнопки с действием Сохранить запись, а в таблицу D с помощью данного скрипта

procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'")' );
end;
Dmitry.

Re: [Решено] Сохранение в две таблицы

Вы как всегда на высоте мозгового штурма...
Спасибо огромное.

4 (edited by Ra*dmin 2014-10-04 07:29:27)

Re: [Решено] Сохранение в две таблицы

DriveSoft wrote:

Используйте событие OnAfterClick от кнопки сохранения, в основную таблицу S сохраняйте информацию с помощью кнопки с действием Сохранить запись, а в таблицу D с помощью данного скрипта

procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'")' );
end;

Здравствуйте! Помогите! То что выше я понял, а как быть тут:

+ Form_redakt_idtv.Edit11.Text + '","'
+ Form_redakt_idtv.Edit10.Text + '","'
+ Form_redakt_idtv.DateTimePicker1.??????? + '","'
+ Form_redakt_idtv.DateTimePicker2.??????? + '","'
+ Form_redakt_idtv.CheckBox3.??????? + '","'
+ Form_redakt_idtv.CheckBox2.??????? + '","'
+ Form_redakt_idtv.id_TpodstModelTV.????!!!  + '","

??????? ----------- Тут не пойму какая аффинированность
????!!! -------------- А здесь совсем тяжело
Пробовал только Text выходит ошибка на скриншоте
Благодарю за оказанное внимание...

Post's attachments

Attachment icon 2014-10-04_131939.jpg 9.34 kb, 329 downloads since 2014-10-04 

Re: [Решено] Сохранение в две таблицы

var
   b1, b2: string;
begin
   if Form_redakt_idtv.CheckBox2.Checked then b1 := '1' else b1:= '0';
   if Form_redakt_idtv.CheckBox3.Checked then b2 := '1' else b2:= '0';

....
+ Form_redakt_idtv.Edit11.Text + '","'
+ Form_redakt_idtv.Edit10.Text + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker1.DateTime) + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker2.DateTime) + '",'
+ b2 + ','
+ b1 + ',"'
+ Form_redakt_idtv.id_TpodstModelTV.????!!!  + '","

только не ясно
Form_redakt_idtv.id_TpodstModelTV
какой это компонент? больше похоже на название внешнего ключа из таблицы БД )



чтобы понять, откуда ошибка, мне необходимо видеть весь запрос.

Dmitry.

Re: [Решено] Сохранение в две таблицы

DriveSoft wrote:
var
   b1, b2: string;
begin
   if Form_redakt_idtv.CheckBox2.Checked then b1 := '1' else b1:= '0';
   if Form_redakt_idtv.CheckBox3.Checked then b2 := '1' else b2:= '0';

....
+ Form_redakt_idtv.Edit11.Text + '","'
+ Form_redakt_idtv.Edit10.Text + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker1.DateTime) + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker2.DateTime) + '",'
+ b2 + ','
+ b1 + ',"'
+ Form_redakt_idtv.id_TpodstModelTV.????!!!  + '","

только не ясно
Form_redakt_idtv.id_TpodstModelTV
какой это компонент? больше похоже на название внешнего ключа из таблицы БД )



чтобы понять, откуда ошибка, мне необходимо видеть весь запрос.

Уфф... нашел ошибки у себя, все исправил, все работает СПАСИБО ОГРОМНОЕ
Только у меня опять тупик, как вот их еще добавить в запрос, на скрине

Post's attachments

Attachment icon 2014-10-06_184223.jpg 114 kb, 331 downloads since 2014-10-06 

Re: [Решено] Сохранение в две таблицы

+ Form_redakt_idtv.Edit11.Text + '","'
+ Form_redakt_idtv.Edit10.Text + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker1.DateTime) + '","'
+ FormatDateTime('yyyy-MM-DD 00:00:00.000', Form_redakt_idtv.DateTimePicker2.DateTime) + '",'
+ b2 + ','
+ b1 + ','
+ IntToStr(Form_redakt_idtv.ComboBox1.dbItemID) + ','
+ IntToStr(Form_redakt_idtv.ComboBox2.dbItemID) + ','
.......
Dmitry.

Re: [Решено] Сохранение в две таблицы

DriveSoft wrote:

Используйте событие OnAfterClick от кнопки сохранения, в основную таблицу S сохраняйте информацию с помощью кнопки с действием Сохранить запись, а в таблицу D с помощью данного скрипта

procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'")' );
end;

Дмитрий здравствуйте. Убрал из записи в основную таблицу X,Y.Z (edBuilding,edLitera,edApartmentOffice) , но почему-то они не сохраняются в свою? Что делаю не так

procedure frmAddClient_Button1_OnAfterClick (Sender: string);
begin
  SQLExecute( 'INSERT INTO address (building, litera, apartmentOffice) VALUES ("' + frmAddClient.edBuilding.Text + '","' +  rmAddClient.edLitera.Text + '","' + frmAddClient.edApartmentOffice.Text +'")' );
end;

надо идти вперёд....

Re: [Решено] Сохранение в две таблицы

kovalenko
Пожалуйста приложите ваш проект.

Dmitry.

Re: [Решено] Сохранение в две таблицы

DriveSoft wrote:

kovalenko
Пожалуйста приложите ваш проект.

Дмитрий спасибо. Решил отказаться от отдельной таблицы для этих 3-х значений, сохраняю их в основную. Так что вопрос по этой ситуации уже закрылся. Ещё раз спасибо.

надо идти вперёд....

Re: [Решено] Сохранение в две таблицы

DriveSoft wrote:

Используйте событие OnAfterClick от кнопки сохранения, в основную таблицу S сохраняйте информацию с помощью кнопки с действием Сохранить запись, а в таблицу D с помощью данного скрипта

procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'")' );
end;

Помогите, как с помощью данного скрипта отображать в гридах данные. В моем случае скрипт работает, записывает данные в таблицу, но необходимо, чтобы он еще как-то был привязан к id другой таблицы. В одном гриде данные по ребенку (таблица main), во втором гриде (таблица parent) - данные по родителю данного ребенка. Все заносится в одной форме с кнопкой Сохранить. В первую таблицу данные записываются по стандартной настройке Сохранить запись, во вторую таблицу - по скрипту OnAfterClick. Но на форме в гриде данные второй таблицы не отображаются. Через SQLiteStudio увидел, что там еще нужно заполнение id_main. Если в этой же программе его ввести, то в MVD привязка ребенок-родитель в двух таблицах отображается. Помогите пожалуйста.

12 (edited by sibprogsistem 2020-09-19 13:58:15)

Re: [Решено] Сохранение в две таблицы

procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z, id_main) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'", "'+IntToStr(Last_Insert_id)+'")' );
end;

id_man - содержит id записи с которой Вам нужно связать новую запись, где man- имя таблицы с которой связываете запись
 
Last_Insert_id - получить id последней записи

Re: [Решено] Сохранение в две таблицы

sibprogsistem wrote:
procedure Form1_Button1_OnAfterClick (Sender: string);
begin
   SQLExecute( 'INSERT INTO D (X, Y, Z, id_main) VALUES ("' + Form2.Edit1.Text + '","' + Form2.Edit2.Text + '","' + Form2.Edit3.Text +'", "'+IntToStr(Last_Insert_id)+'")' );
end;

id_man - содержит id записи с которой Вам нужно связать новую запись, где man- имя таблицы с которой связываете запись
 
Last_Insert_id - получить id последней записи

------------------------------------------------------------------------------------------

Не получается связать по ID. Прописывает Last_ID "0", хотя ID из таблицы main может быть и 1, и 2, и 7. Выдает ошибку.

Скрипт следующий на кнопке:
procedure frmAdd_Button1_OnAfterClick (Sender: TObject);
begin
SQLExecute( 'INSERT INTO parent (p_name_1, p_name_2, p_name_3, phone, id_main) VALUES ("' + frmAdd.add_parent_name_1.Text + '","' + frmAdd.add_parent_name_2.Text + '","' + frmAdd.add_parent_name_3.Text + '","' + frmAdd.add_phone.Text + '", "'+IntToStr(Last_Insert_id)+'")' )
end;

Post's attachments

Attachment icon Безымянный.png 19.6 kb, 102 downloads since 2020-09-25 

Re: [Решено] Сохранение в две таблицы

извиняюсь, моя ошибка

Last_Insert_id - получает идентификатор новой (созданной) записи, Last_Insert_id  сработает если Вы с начало создадите запись в таблице main .

SQLExecute('SELECT MAX(id) FROM ваша_таблица'); - Выберет из таблицу максимальный (то есть последний) идентификатор записи..