1 (edited by agatlogic101 2019-10-22 14:19:41)

Topic: Как реализовать?

Есть таблица с городами(1), выбираю в ней интересующий меня город, открываю. Дальше появляется таблица с мероприятиями(2) привязанная к этому городу, открываю это конкретное мероприятие. В нём есть таблица с выручками от разных работников. Добавляю запись работника(3), пишу выручку, и тут возникает неудобство. Мне нужно что бы моя БД понимала что эта выручка была сделанна в определённом городе, поэтому я снова в последней таблице, ищу этот город(4) из списка и сохраняю запись, что в итоге выглядит как: Имя, фамилия, выручка, мероприятие, город. Но, город пришлось выбирать второй раз вручную. Каким скриптом дать понять БД при добавлении выбранный ранее город автоматически? Я же по сути его уже выбирал в первом пункте, и второй раз это делать уже не хотелось бы
https://b.radikal.ru/b23/1910/21/638b4f48f1c7.jpg

Re: Как реализовать?

в этом случае сделайте отдельную таблицу для выручки
свяжите таблицы ( выручка -> город ) ..

теперь скрипт ..
с начало получаем id записи выбранного города
после сожраняем этот id в ключе и саму выручки в таблице выручка

procedure sumsity;
var
idSity:integer;
begin
 
 idSity:=SQLExecute('SELECT id FROM ваша_таблица WHERE id=' +form1.tablegrid1.dbItemID); 
  
 SQLExecute('INSERT INTO таблица_выручки (id_таблица_городов, поле_выручка) VALUES ("'+idSity+'", "'+Form1.edit1.text+'")');
end;

Re: Как реализовать?

Спасибо за ответ. Немного запутался, так как мне кажется там больше связей, так как у меня не 2 связи, а три. Сделал образец для примера, можно на нём увидеть как это?

Post's attachments

Attachment icon пример.rar 294.3 kb, 232 downloads since 2019-10-23 

Re: Как реализовать?

пример скриптом

Post's attachments

Attachment icon пример.7z 5.54 kb, 237 downloads since 2019-10-23 

Re: Как реализовать?

Вот теперь более понял в чём недопонимание) Ваш способ решает всё выбором на главной форме
https://d.radikal.ru/d12/1910/02/9ed01d58575d.png
Но у меня такое в программе будет не удобно, и в моём случае важно что бы данные вводились на 4 форме, которая постепенно за счёт выбора идёт после второй формы, и третьей. Так вот, есть ли возможность что бы на 4 форме вручную опять этот город не выбирать? А запомнить выбор из первой еще формы. (там если кликнуть по городу, то откроется форма два, и так далее)
https://c.radikal.ru/c38/1910/93/8e53cef3fe4c.png
Так как пример упрощенный вариант, и там нет другой информации которая не имеет отношения к делу, но логика будет рушиться если будут вводить все данные на первой форме

6 (edited by sibprogsistem 2019-10-23 14:58:17)

Re: Как реализовать?

пишите любую форму - это не имеет значения..

переменные:

var
idCity,idPeople: string;

являются глобальными и они хранять информацию на всем протяжении работы программы..

Вы просто помещаете в переменные значения и можете их использовать когда Вам угодно

7 (edited by agatlogic101 2019-10-24 17:25:28)

Re: Как реализовать?

Спасибо, получилось. А можно сделать так что бы переменная была не id a Data? Просто опять, что бы в скрипт, добавить запись даты мероприятия, которая была введена в предыдущей форме.
что то типо
idEvent:= SQLExecute('SELECT id FROM event WHERE id=' + города.TableGrid1.sqlValue );, но только для DateTimePicker1, который расположен на предыдущей для выбора форме
или если перефразировать вопрос, можно ли дату сделать переменной?

Re: Как реализовать?

можно

var
wDate : string;
begin
   wDate : = FormatDateTime('yyyy-mm-dd',Form1.DateTimePicker1.DateTime);
end;