![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иерархические запросы
Елена © (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 таблицы. Первая - перечень пунктов, вторая документы, и третья - собственно состав документа со своей иерархией и ссылками на таблицу пунктов.
ЗЫ: И все таки я думаю, что вордовые шаблоны - это то что тебе надо.