Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];




Вниз

Мастера, подскажите приемлимое решение, плиз 


Tornado   (2003-02-12 07:55) [0]

Есть таблица, допустим в ней 3 поля (Otdel_ab - название отдела и имя абонента, Tel - телефон абонента, ID - поле для группировки по отделам, скрытое)

Otdel_ab Tel ID

РУКОВОДСТВО 10
Иванов И.В. 22-22-22 11
Гришин И.В. 22-22-23 11
Белкин И.В. 22-22-24 11
УПРАВЛЕНИЕ СВЯЗИ 20
Петров И.В. 22-22-25 21
Смолин И.В. 22-22-26 21
Сидоров И.В. 22-22-27 21

и т.д.

Когда сортируется по полю ID (по возрастанию) все хорошо, таблица в нужном виде, т.е. отдел - абоненты, но нужно добавить возможность сортировки по полю Otdel_ab, это тоже конечно не сложно сделать но таблица потом приобретает немного нехороший вид, названия отделов просто перемешиваются с именами абонентов. Как бы мне исключить строки с названиями отделов при сортировке по полю Otdel_ab, чтобы не смущать пользователя лишними строками, в тоже время при сортировке по полю ID названия отделов должны быть (см. "таблицу" вверху). Подскажите решение, может быть эту задачу можно решить и каким-нибудь совсем другим способом? Я пока придумал только такой. Спасибо!



Наталия   (2003-02-12 08:02) [1]

Есть предложение хранить названия отделов и имена абонентов в разных таблицах. Или хотя бы в разных полях одной таблицы. Тогда проблемы с сортировкой должны исчезнуть.



Ксюша   (2003-02-12 08:29) [2]

если хочешь в одной, то усложни ID или еще поле заведи для признака, что это отдел



Tornado   (2003-02-12 08:30) [3]

> Наталия © (12.02.03 08:02)


Проблема в том что и отделы и абоненты должны быть в одном поле, как я приводил выше. (ОТДЕЛ, под ним абоненты этого отдела, следующий отдел - абоненты следующего отдела и т.д.). Требуется именно в таком виде, все это было сделано раньше в Excel, теперь вот в БД Access с оболочкой на Дельфи. А задача только скрывать названия отделов при сортировке по полю Otdel_ab и показывать отделы при сортировке по полю ID. Вот и вся проблема. Спасибо за совет



Жук   (2003-02-12 08:32) [4]

Делать сортировку сразу по двум полям : Otdel_ab и Tel, если у отдела поле Tel всегда пусто.



Наталия   (2003-02-12 08:40) [5]

>Проблема в том что и отделы и абоненты должны быть в одном поле, как я приводил выше
Проблема в том, что ты путаешь понятия: ХРАНЕНИЕ данных в базе и ОТОБРАЖЕНИЕ их для пользователя.



Tornado   (2003-02-12 08:47) [6]

> Наталия © (12.02.03 08:40)

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



Наталия   (2003-02-12 09:17) [7]

Отчёт с группировкой должен помочь.



Tornado   (2003-02-12 09:33) [8]

> Наталия © (12.02.03 09:17)

мне нужно такое отображение в DBGRID



Наталия   (2003-02-12 09:40) [9]

А зачем в DBGrid выводить всю таблицу? Я бы сделала вывод только выбранного отдела.



Юрий Жуков   (2003-02-12 10:05) [10]

GRID от devexpress.com тебе поможет.
То что тебе нужно называется группировка по отделу.



Tornado   (2003-02-12 10:32) [11]

> Юрий Жуков © (12.02.03 10:05)

Я использую Express Quantum Grid Pro, можно немножко поподробней? Спасибо



Imshanya   (2003-02-12 10:33) [12]

2 Tornado
Проблема кажется вот в чем, Вы хотите увидеть в гриде следующее:

Отдел Маркетинга
Иванов 22-22-22
Петров 22-22-23
Сидоров 22-22-24
Отдел внутреннего аудита
Баранов 22-22-25
Козлов 22-22-26
Ослов 22-22-27

Что-ж, желание понятное. Как такого добится? Я делал это при помощи не DBGRid а просто Grid. Но это - неверный подход. Здесь больше минусов, чем плюсов.Золотое правило - "не надо мудрить"(Наталия права "А зачем в DBGrid выводить всю таблицу? Я бы сделала вывод только выбранного отдела. "). Если это просто Ваше желание, то мой Вам совет - сбросьте прах ненужных амбиций. Так какие варианты остаются?

1. Написать свой компонент на основе TGrid, позволяющий такое отображение. Если Вы подразумеваете редактирование данных, то наверное, догадываетесь, каков уровень сложности данной задачи.

2. Написать свой компонент на основе TDBGrid. Здесь одна оговорка: скорее всего Вам придется умышленно нарушать нормализацию БД, а именно - вводить в таблицу с этими данными итоговые строки, которые будут осуществлять необходимую Вам группировку по отделам.Это все как-то коряво выглядит...

3. Найти такой компонент стороннего автора.

Я бы выбрал 1-й или 3-й вариант.
Первый - это круто, есть возможность набраться серьезного опыта.
Третий - разумный, особенно если время поджимает.



sniknik   (2003-02-12 11:01) [13]

Tornado © (12.02.03 07:55)
> возможность сортировки по полю Otdel_ab, это тоже конечно не сложно сделать но таблица потом приобретает немного нехороший вид, названия отделов просто перемешиваются с именами абонентов. Как бы мне исключить строки с названиями отделов при сортировке по полю Otdel_ab

именно исключить, запрос
SELECT Otdel_ab, Tel FROM Table101 WHERE (ID MOD 10)<>0 ORDER BY Otdel_ab
полностью отвечает требованию (ест-но все отделы должны но 0 кончатся)



sniknik   (2003-02-12 11:04) [14]

также можно пользоватся свойством Sort (для сотрировки по полю), при сортировке по Otdel_ab включать фильтр равный (ID MOD 10)<>0.
все.



Tornado   (2003-02-12 11:09) [15]

> sniknik © (12.02.03 11:01)

Огромное спасибо, я тоже пришел к этому :) Всем ответившим тоже еще раз спасибо, Вы мне очень помогли.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.033 c
14-5788           Lola                  2003-02-12 13:23  2003.03.03  
Шрифт для BarCode


14-5733           CrowD                 2003-02-12 12:17  2003.03.03  
Список в несколько колонок?


14-5745           Случайный прохожий    2003-02-16 00:23  2003.03.03  
Где взять Babylon?


3-5385            qwerty2               2003-02-12 11:00  2003.03.03  
Hint DBNavigator a


14-5743           Ricks                 2003-02-15 15:29  2003.03.03  
Вопрос про ICQ