Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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)

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



Страницы: 1 вся ветка

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

Наверх









Память: 0.87 MB
Время: 0.045 c
1-5637
avch
2003-02-20 13:36
2003.03.03
Создание компонента


3-5421
IUSUPp
2003-02-12 23:21
2003.03.03
Не работает поиск после добавления нового абонента


3-5476
Tornado
2003-02-13 19:42
2003.03.03
Поле типа


4-5928
GROL
2003-01-15 14:35
2003.03.03
Компонент выходит за пределы формы


14-5799
jack128
2003-02-12 23:46
2003.03.03
Win2k





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский