Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Иерархические запросы


Страницы:   1 2 3 4

Елена ©   (2006-03-09 09:25:00) 

день добрый. Столкнулась со следующей проблемой - храние  документов  произвольной структуры в бд.
Значит так - есть документ, есть абзацы у него,  у этих абазцев могут быть пункты и подпункты произвольной вложенности.
структура таблички в БД
1)id
2)idDok (номер договора=1 к примеру)
3)name (текст абзаца)
4)NVP (номер вышестоящего пункта)

как распечатать документ с нумерацией? в БД следующее
1 1  ПРЕДМЕТ              0
2 1  Заказчик должен.. 1
3 1  Все работы ..        1
4 1  ТЕХ УСЛОВИЯ        0
5 1  Исполнитель вправе 4
6 1  работать                 5
7 1  не работать             5
8 1  Заказчик может       4
9 1  требовать                8

Вот.. Подскажите, как распечатать эту табличку с нумерацией типа
1.ПРЕДМЕТ
1.1.Заказчик должен..
1.2.Все работы ..    
2.ТЕХ УСЛОВИЯ        
2.1. Исполнитель вправе
2.1.1.работать                
2.1.2.не работать                
2.2.Заказчик может
2.2.1. требовать          

А может структуру надо как-нибудь изменить?
Буду благодарна за любые советы


Sergey13   (2006-03-09 12:32:00) [41]

2[22] msguns ©   (09.03.06 12:13)
>Замечательно.
Я рад, что тебе понравилось. 8-)
Если не понравилось (ну вдруг) и это сарказм - объясни мне, как сортировать пункты одного уровнябез сохраненной нумерации?

2[23] Елена   (09.03.06 12:21)
Ты не спрашиваешь, как выбирать иерархию, значит тебе понятно как это сделать. Но если при этом тебе непонятно как приделать при этом номер, то тут уже не понятно мне - в чем загвоздка то?


Елена   (2006-03-09 12:26:00) [42]

понятно , ртфм


msguns   (2006-03-09 12:22:00) [43]

>Елена   (09.03.06 12:21) [23]
>Постановка задачи - как распечать документ, пронумеровав при этом пункты документа, учитывая произвольность вложения пунктов

html


Елена   (2006-03-09 12:21:00) [44]

нет, нумерацию хранить точно смысла нет, храним ссылку на вышестоящее поле,этого должно быть достаточно.
Постановка задачи - как распечать документ, пронумеровав при этом пункты документа, учитывая произвольность вложения пунктов


msguns   (2006-03-09 12:13:00) [45]

>Sergey13 ©   (09.03.06 11:55) [21]
>то можно нумерацию и в БД хранить

Замечательно. Если в документе из 100 глав, в которой куча разделов и подразделов (1.4.7.12) понадобиться добавить главу в самое начало, то надо будет перенумеровать весь "горшок", модифицировав каждуюзапись.
И уж совсем непонятно, как все это будет работать при параллельном юзании такой БД.

ИМХО, сама постановка задачи бредовая от начала и до конца.


Sergey13   (2006-03-09 11:55:00) [46]

2[20] Елена   (09.03.06 11:46)
>как пронумервоать, согласно иерархии..
Смотря как выбирать будешь. Можно и на клиенте пронумеровать. А если у тебя каждый пункт относится к конкретному документу, то можно нумерацию и в БД хранить (кстати и выбирать по этой нумерации проще будет).


Елена   (2006-03-09 11:46:00) [47]

как пронумервоать, согласно иерархии..


Sergey13   (2006-03-09 11:32:00) [48]

2[17] Елена   (09.03.06 11:25)
>В данном случае -  основнйо вопрос не в том, как хранить, а как "красиво вывести на печать"
Так неправильно думать в принципе. Печать фигня, рюшечка. Главное структура.
А печатать - элементарно. Выбери все записи согласно твоей иерархии в один датасет и отправь на печать.


msguns   (2006-03-09 11:30:00) [49]

Может, не до конца ососзнал, но все же..
А почему нельзя все это хранить в html, "пункты" описывать отдельными файлами, а в нужные документы вставлять фрэймами. При этом вся "красота" делается легко и просто.


Елена   (2006-03-09 11:25:00) [50]

ну варианты храниения есть..
хранение в пунктах  -один из них, который пришел в голову.
В данном случае -  основнйо вопрос не в том, как хранить, а как "красиво вывести на печать"


Sergey13   (2006-03-09 11:18:00) [51]

2[14] Елена   (09.03.06 11:11)
Мне непонятна задача.
Я предложил 3 таблицы, так как думал, что пункты везде идентичны, и достаточно хранить ссылки на них, а не сами тексты. Если они хоть немного отличаютсяв разных документах, тогда это не проходит. Но мне до сих пор непонятно желание хранить пункты, а не документ в целом. Если будет 1000 документов и в каждом "немного свой" пункт допустим "1.1.Заказчик должен..", то какой смысл хранить этот документ, как сборник пунктов?


Елена   (2006-03-09 11:15:00) [52]

Стоп, поняла предлагемую вами структуру. А как же произольная вложенность и подчиненность одного пункта другому? см что должно быть на выходе
2.1. Исполнитель вправе
2.1.1.работать                
2.1.2.не работать


Елена   (2006-03-09 11:11:00) [53]

э... мне это не нравится!
Вы предоложили использовать "Тогда, ИМХО, целесообразно завести 3 таблицы. Первая - перечень пунктов, вторая документы,  и третья  - собственно состав документа со своей иерархией и ссылками на таблицу пунктов."
у меня их две - документ и состав  документа, в этот состав и входят всякие пункты\подпункты. ПОэтому и спросила.. ЗАчем?


Sergey13   (2006-03-09 10:57:00) [54]

2 [11] Елена   (09.03.06 10:50)
>а почему пункты надо выносить отдельно?
Мне это нравится! Это я у тебя спрашиваю - зачем тебе отдельные пункты? 8-)


Елена   (2006-03-09 10:55:00) [55]

Не будет навигации по  пунктам(не нужна). Потом  сделаю поиск по  номеру или по дате документа - чтобы его повторно можно было распечатать, не  более.


Елена   (2006-03-09 10:50:00) [56]

Sergey13, в моем случае таблица документов существует отдельно
Номер документа , его название  и др. атрибуты
а почему пункты надо выносить отдельно?


Sergey13   (2006-03-09 10:49:00) [57]

2[9] Елена   (09.03.06 10:38)
> нет, не полностью. могут быть одинаковыми, а могут быть разными.
Тогда еще более не понятна потребность хранить пункты. Если там будут расхождения (хоть в одну букву) таких вариантов этих пунктов через полгода станет столько, что придется делать отдельную навигацию по ним и долго анализировать, чем один отличается от другого.
ИМХО, создать несколько врдовых шаблонов на разные типы договоров. Их можно и в БД хранить при желании для сохранности. На основании шаблона формировать новый документ, и после правки сохранять готовый в БД, одним куском в БЛОБ-е. При необходимости сохранять новый документ как новый шаблон.
Я бы так стал делать.


Елена   (2006-03-09 10:38:00) [58]


> Sergey13 ©   (09.03.06 10:10) [7]
>
> 2[5] Елена   (09.03.06 09:42)
> И некий произвольный подпункт одного документа полностью
> идентичен такому же в другом документе?

нет, не полностью. могут быть одинаковыми, а могут быть разными.


Nikolay M.   (2006-03-09 10:15:00) [59]


> Вот.. Подскажите, как распечатать эту табличку с нумерацией
>
> А может структуру надо как-нибудь изменить?


Например, прочитать очень полезную статью об организации деревьев в БД. Примеры запросов там тоже есть

http://sdm.viptop.ru/articles/sqltrees.html


Sergey13   (2006-03-09 10:10:00) [60]

2[5] Елена   (09.03.06 09:42)
И некий произвольный подпункт одного документа полностью идентичен такому же в другом документе? На 100%? Тогда какой смысл хранить их в разных местах?
Тогда, ИМХО, целесообразно завести 3 таблицы. Первая - перечень пунктов, вторая документы,  и третья  - собственно состав документа со своей иерархией и ссылками на таблицу пунктов.

ЗЫ: И все таки я думаю, что вордовые шаблоны - это то что тебе надо.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо