1 (edited by Alexandr 2021-09-18 09:49:51)

Topic: Прошу помощи со скриптом

Есть форма с двумя таблицами и форма для заполнения этих таблиц. Добавление новых записей происходит по одной кнопке, удаление также по одной кнопке. Проблема с редактированием записей..при редактировании создается новая запись, а не изменяется существующая...

Вопрос: как сделать чтобы редактировало записи также по одной кнопке?

Post's attachments

Attachment icon тест.zip 336.27 kb, 186 downloads since 2021-09-18 

Re: Прошу помощи со скриптом

Вам достаточно создать кнопку с функцией редактирования оной таблицы.

Re: Прошу помощи со скриптом

В свойствах формы есть dbAction - Содержит название действия кнопки, с помощью которой форма была вызвана. Возможные значения: NewRecord, ShowRecord, ShowForm. Пустое значение указывает на то, что форма была открыта с помощью скрипта. Свойство только для чтения.

анализируете и выполняете действие в SQL INSERT или UPDATE

procedure Form2_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
maxID:string;
begin

  if Form2.dbAction = 'ShowRecord' then ShowMessage('Редактирование');

  if Form2.dbAction = 'NewRecord' then ShowMessage('Новая запись');


   // запись в таблицу prodavec
   SQLExecute('INSERT INTO prodavec (nameS) VALUES ("'+Form2.Edit2.Text+'")');
   // получаем id последней записи в таблице prodavec
   maxID:= SQLExecute ('select max(id) from prodavec');
   // запись в таблицу client
   SQLExecute('INSERT INTO client (name, id_prodavec) VALUES ("'+Form2.Edit1.Text+'", "'+maxID+'")');
   Form1.TableGrid1.dbUpdate;
   Form1.TableGrid2.dbUpdate;
   Form2.Close;
end;

пример SQL UPDATE

UPDATE prodavec
SET nameS ='Сеня'
WHERE id = 3;

Можно пойти путем SQL запросов но нужно знать все нюансы таблиц и записей.

4 (edited by k245 2021-09-21 14:34:49)

Re: Прошу помощи со скриптом

Alexandr wrote:

Есть форма с двумя таблицами и форма для заполнения этих таблиц. Добавление новых записей происходит по одной кнопке, удаление также по одной кнопке. Проблема с редактированием записей..при редактировании создается новая запись, а не изменяется существующая...

Вопрос: как сделать чтобы редактировало записи также по одной кнопке?

Изменить процедуру:

procedure Form2_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  maxID:string;
begin
   if Form2.dbAction = 'NewRecord' then
   begin
     // запись в таблицу prodavec
     SQLExecute('INSERT INTO prodavec (nameS) VALUES ("'+Form2.Edit2.Text+'")');
     // получаем id последней записи в таблице prodavec
     maxID:= SQLExecute ('select max(id) from prodavec');
     // запись в таблицу client
     SQLExecute('INSERT INTO client (name, id_prodavec) VALUES ("'+Form2.Edit1.Text+'", "'+maxID+'")');
   end;
   if Form2.dbAction = 'ShowRecord' then
   begin
     // запись в таблицу prodavec
     SQLExecute('UPDATE prodavec SET nameS = "'+Form2.Edit2.Text+'" WHERE id = '+Form2.edtIDProdavec.Text );
     // запись в таблицу client
     SQLExecute('UPDATE client SET name = "'+Form2.Edit1.Text+'" WHERE id = '+IntToStr(Form1.TableGrid1.dbItemID) );
   end;
   Form1.TableGrid1.dbUpdate;
   Form1.TableGrid2.dbUpdate;
   Form2.Close;
end;

На форме добавить поле:

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8086&download=0


Вот только всё это зря вы затеяли ))) У вас есть две таблицы - клиенты и продавцы. И связь между ними. Почему такая структура данных?  И зачем понадобилось двойное редактирование? На практике стараются так не делать, потому что реляционные СУБД плохо приспособлены для хранения наследования объектов. Могу предположить, что вы хотели бы иметь иерархию:


Клиенты
    Покупатели
    Продавцы
    ...

На практике Продавцы не отливаются от Покупателей или от Клиентов по набору признаков, поэтому не стоит для них создавать отдельные сущности (таблицы), оставьте одну таблицу Клиенты и, если вам очень надо как-то их отличать,  добавьте признаки "Покупатель" и "Продавец". Именно признаки флаги, а не справочник "Тип клиента", так как на практике один и тот же клиент может быть как покупателем, так и продавцом. Но всё зависит от вашего ТЗ.

Post's attachments

Attachment icon изображение_2021-09-21_172129.png 39.65 kb, 88 downloads since 2021-09-21 

Визуальное программирование: блог и телеграм-канал.