Запрос с дублированием реквизитов | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Есть проблемка.
Есть собранный в ручную запрос, запрос содержит несколько связанных таблиц по ID. В одной из связанных таблиц ОБРАЗОВАНИЕ есть сотрудники у которых два образования. Реквизиты таблицы ОБРАЗОВАНИЕ рассчитаны на запись информации одного образования, второе записывается в следующей строке под первым с тем же ID (такая форма таблицы обязательна). Задача в чем собственно: Запрос должен строиться двумя вариантами: 1. Если у человека одно образование то количество реквизитов в выпадающем курсоре должно быть N. 2. Если у человека два образования то количество выпадающих реквизитов N+M, где M - реквизиты с информацией по второму образованию. Делать через IF стороить два разных запроса или есть другие пути? Но тут вопрос как в реквизиты первого образования поместить инфу по первому, а во вторые по второму? Если обычный Select делаю то он дублирует строку запроса друг под другом. Отличия в строках только инфа по образованию. Нет возможности прикрепить скрины ... надеюсь кто то поймёт меня) |
Re: Запрос с дублированием реквизитов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Такая же ситуация с телефонами (у человека м.б. 2 телефона). В отчетах выводим или 2 колонки для телефонов, 2я у большинства пустая. Или, в ячейке Экселя, многострочная запись с номерами.
Вопрос на засыпку: а если 3 образования, или больше, то какой должна быть выходная таблица? |
Re: Запрос с дублированием реквизитов | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Вряд ли это имеет отношение к запросу. Это вопрос к вашему UI. Как вы собираетесь это показывать. И уж зачем тут IF, даже придумать не могу. В обычном случае, (предположим у Иванов 2 образования) строя запрос вы получите Иванов образование1 реквизиты_образование1 Иванов образование2 реквизиты_образование2 Что и как вам надо, из вопроса не понятно ------------------ |
Re: Запрос с дублированием реквизитов | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Если у Иванова два образования должно быть в одну строку 3 реквизита. ФИО. Образование1. Образование2. Иванов Высшее-юридическое. Высшее-техническое. Если одно образование реквизита будет 2. |
Re: Запрос с дублированием реквизитов | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Пытаюсь сделать по следующей логики:
Только с таким select в случае выполнения условия lnCount>1 образования будут дублироваться скорее всего. Как распределить их по соответствующим реквизитам первого и второго образования? Исправлено 1 раз(а). Последнее : ptaxa888, 06.04.18 12:00 |
Re: Запрос с дублированием реквизитов | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Да с телефонами, с детьми все тоже самое. Данный запрос будет просматривать только одного человека, поэтому пустых полей не будет. Есть вторе образование - значит есть доп. реквизит. 3 и более не предусмотрено пока. |
Re: Запрос с дублированием реквизитов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
|
Re: Запрос с дублированием реквизитов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Зачем это всё разворачивать в курсоре?
Курсор с динамическим набором полей - это уже само по себе плохо. Это практически всегда вопрос отображения - а для отображения подобной информации не требуется не то что два поля, даже самого мега-запроса объединяющего 100500 таблиц не нужно. Будет группа простых запросов, и обработка их результатов с раскладыванием в элементы управления. Обычно для этого списки/гриды применяют, но можно и просто текстбоксы (их придётся динамически добавлять на форму в зависимости от того 2 образования, 5 или ни одного). Курсор - это ДАННЫЕ. Это не то что видит пользователь. Пользователь должен видеть формы с элементами управления, которые в свою очередь берут данные из курсора (или курсоров). И чтобы этого добиться абсолютно не требуется запихивать все данные в один курсор - тем более что там реально будут связи один-ко-многим, а не строго один-к-одному между разными исходными таблицами... ------------------ WBR, Igor |
Re: Запрос с дублированием реквизитов | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Игорь абсолютно верно все написал.
А теперь покажите форму, которая будет показывать для 2х (3х) образований. Если вы запихнете это в грид, то это всегда 1 запрос. А кол-во записей - кол-во образований. Иначе. Делаете класс контейнер, с набором реквизитов, и в зависимости от кол-ва записей, кол-во контейнеров. Все зависит от того, как вы это показываете. ------------------ |
Re: Запрос с дублированием реквизитов | |
---|---|
vnkor Сообщений: 324 Дата регистрации: 04.10.2007 |
Может, проще сделать всего 2 реквизита для всех: ФИО. Образование. Иванов Высшее-юридическое. Высшее-техническое. Петров Высшее-экономическое. Можно еще добавить поле "Количество дипломов". |
Re: Запрос с дублированием реквизитов | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
А в чём смысл реквизита - "Количество дипломов"? Ведь есть ситуации когда человек работает и учится, к примеру у него второе незаконченное образование и еще диплома нет. Юзер заполнит оба реквизита, а кол-во дипломов будет по факту - 1. И что? В чем фишка?
Вообще реализация задачи какая то не универсальная получается с выводом в разных реквизитах. У человека как правильно было замечено может быть более 2-х образований, плюс всевозможные курсы по которым тоже выдают дипломы или сертификаты, в том числе и международного образца. У меня был справочник примерно с такой структурой - Цитата: И данные выводились в грид. Т.е. ФИО сотрудника в простые контролы текстовые на форме, а образование было организовано в гриде, поскольку неизвестно с каким багажом придет сотрудник. Да и в течение его работы, он может повышать квалификацию, учиться и его данные пополняться. Вообще не понимаю зачем на такие вещи в лоб закладывать определённое число реквизитов. Образование, дети, история работы в других организациях и пр. инфа по персоне это переменные величины. Такие справочники изначально нужно проектировать универсальными. ИМХО Может я чего то недопонимаю ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... Исправлено 5 раз(а). Последнее : Божья_коровка, 06.04.18 19:35 |
Re: Запрос с дублированием реквизитов | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
+100500 Вот похожий случай. Заказы продукции Как правило, заказывают одну продукцию. И я сразу в заказе показываю эту продукцию. В случае больше одной продукции, я к имени продукции добавляю >>, что бы видно было что внутри есть еще что-то. Открыв заказ на редактирование, видно все. В общем, вариантов UI, очень много. И думать надо о пользователе, и том как он будет работать. В то же время, не очень идя на поводу (Он часто раб привычек) Решив как показывать, нарисовать получение, удобное для показа - 5 мин. ------------------ |
Re: Запрос с дублированием реквизитов | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Конечно, чудо-птички ">>" у новичков решают все вопросы. Но вы ведь и так все правильно описали. Есть такое понятие - "нормализация". Сведения об образовании и т.п. это не справочники, а самостоятельные таблицы с данными, связанные по ключевым полям с основной таблицей. Для работы с ними создаются свои страницы в PageFrame или отдельные формы со всеми необходимыми атрибутами. Добавьте в эту свою таблицу поле с птичкой - "Основное образование", в общих запросах фигурирует только оно. Для более подробных сведений об образовании создаются отдельные запросы. |
Re: Запрос с дублированием реквизитов | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Всем спасибо за участие и помощь. Результат получен, пусть не тем путем на который пытались направить но всё же. Признаю что пока мне сложно понимать и ориентироваться во многих вещах... надеюсь этот момент поправим, будем развиваться и брать на вооружение ваши советы.
Сделал путем копирования строки второго образования в новый курсор, затем поля этого курсора используются в запросе. Вроде работает)
Исправлено 1 раз(а). Последнее : ptaxa888, 09.04.18 01:53 |
Re: Запрос с дублированием реквизитов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это ужасно... Нет, даже ещё хуже...
В запросе можно несколько раз указывать одну и ту же таблицу-источник, связывая её по разным условиям с остальной частью запроса. Вопрос лишь в том как определить такое условие. Т.е. применимо к твоему случаю, как указать какая запись есть "первое образование", а какая - второе. Но я ещё раз повторюсь - так делать не надо. Не надо запихивать в один курсор всё на свете, тем более "списки" значений. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |