Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Передача данных из формы ввода сразу в несколько т


Автор: maxkov 23.9.2010, 15:03
Нужно организовать ввод ввод данных из одной формы сразу в несколько таблиц БД. Таблицы имеют одинаковые поля, т.е., к примеру, "Поле1" есть и в таблице "А" и в таблице "Б". Все компоненты Table и DateSource cобаны в отдельном DataModule. Как сделать так чтобы при вводе данных в DBEdit они передавались и в таблицу "А" и в таблицу "Б"? А затем отображались а своих DBGrid.

Автор: Данкинг 23.9.2010, 15:55
Вносить в первую таблицу, а затем запросами заполнять остальные.

Автор: Akella 23.9.2010, 16:51
Цитата(maxkov @  23.9.2010,  15:03 Найти цитируемый пост)
Как сделать так чтобы при вводе данных в DBEdit они передавались и в таблицу "А" и в таблицу "Б"?

Используй событие BeforPost в главной таблице и в нём заполняй все остальные.

Автор: okkonst 23.9.2010, 17:42
А еще, сдается мне, что-то тут неправильно с нормализацией. С какой это радости в 2-х таблицах есть одинаковое редактируемое пользователем поле?? 

Автор: Antimol 23.9.2010, 20:11
Цитата(okkonst @ 23.9.2010,  17:42)
А еще, сдается мне, что-то тут неправильно с нормализацией. С какой это радости в 2-х таблицах есть одинаковое редактируемое пользователем поле??

Так может идет речь просто о ключевых полях, которые используются для связи 2-х таблиц (например id )

Автор: cat512 23.9.2010, 20:14
Цитата(okkonst @ 23.9.2010,  17:42)
А еще, сдается мне, что-то тут неправильно с нормализацией. С какой это радости в 2-х таблицах есть одинаковое редактируемое пользователем поле??

Как вариант Аудитные таблицы, а их в системе может быть много, имеют одинаковое поле USER, или USER_ID. Но вообще-то в теме был задан вопрос о другом

Добавлено через 6 минут и 6 секунд
Цитата(maxkov @ 23.9.2010,  15:03)
Нужно организовать ввод ввод данных из одной формы сразу в несколько таблиц БД. Таблицы имеют одинаковые поля, т.е., к примеру, "Поле1" есть и в таблице "А" и в таблице "Б". Все компоненты Table и DateSource cобаны в отдельном DataModule. Как сделать так чтобы при вводе данных в DBEdit они передавались и в таблицу "А" и в таблицу "Б"? А затем отображались а своих DBGrid.

Если реч идёт о связанных фрэймах, которые например отображают детэйл информацию, по ID основной таблицы, то вот тебе подсказка: используй систему сообщений После поста в таблицы, обрабатывай сообщение, и делай точечный рефреш по id

Автор: okkonst 23.9.2010, 20:27
Цитата(Antimol @ 23.9.2010,  20:11)
Так может идет речь просто о ключевых полях, которые используются для связи 2-х таблиц (например id )

Угу. И это, разумеется, редактируемые пользователем данные. Ты много естественных внешних ключей в своей жизни видел? Я - ни одного (кроме тех, за которые хотелось убить)

Добавлено через 2 минуты и 3 секунды
Цитата(cat512 @ 23.9.2010,  20:14)
Как вариант Аудитные таблицы, а их в системе может быть много, имеют одинаковое поле USER, или USER_ID. Но вообще-то в теме был задан вопрос о другом

Эти поля НЕ РЕДАКТИРУЕМЫ пользователем. И вопрос все о том же. Боюсь, вопрос о том, как правильно снимать штаны через голову.

Автор: Deniz 24.9.2010, 07:10
ТС задал непонятный вопрос, и вот начались баталии, "а зачем?", "так нельзя" и т.д.
Хочет, пусть делает, только вот непонятно в чем проблема.
ТС не может взять значение из DBEdit и запихнуть его в другие таблицы?
ИМХО, пока он вопрос не переделает и не предоставит хоть часть кода, который не получается, смысла рассуждать нет.

Автор: cat512 24.9.2010, 09:13
Цитата(okkonst @ 23.9.2010,  20:27)
Эти поля НЕ РЕДАКТИРУЕМЫ пользователем. И вопрос все о том же. Боюсь, вопрос о том, как правильно снимать штаны через голову.

Во первых: Какие "эти"???
Во вторых: Если речь идёт в контексте аудитных таблиц, то почему они не редактируемы??? Они могут быть как не редактируемыми (заполняться на сервере) так и редактируемыми (заполнятся с клиента) например если в систему нужно передавать доменного пользователя

Автор: okkonst 25.9.2010, 12:07
Цитата(cat512 @ 24.9.2010,  09:13)
Во вторых: Если речь идёт в контексте аудитных таблиц, то почему они не редактируемы??? Они могут быть как не редактируемыми (заполняться на сервере) так и редактируемыми (заполнятся с клиента) например если в систему нужно передавать доменного пользователя

Уточню: не редактируемы DBEdit'ами. Юзер в эти поля ничего не вводит. А речь в вопросе идет именно об этом: взять значение поля из DBEdit и запихнуть в несколько датасетов. Чисто дельфийскими средствами (без изменения запросов и применения триггеров или хранимок) это можно реализовать несколькими способами (навскидку придумал 3). Плюс - несколько способов с использованием SQL (в зависимости от примененной СУБД), что я бы безусловно предпочел в случае не аксесса и ему подобного. Вообще, чем больше думаю, тем более склоняюсь к мысли, что задача поставлена именно о снятии штанов через голову.

Автор: cat512 27.9.2010, 09:26
Цитата(okkonst @ 25.9.2010,  12:07)
Вообще, чем больше думаю, тем более склоняюсь к мысли, что задача поставлена именно о снятии штанов через голову.

С этим согласен. 

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