Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR-11. Отчет-дерево / 13 сообщений из 13, страница 1 из 1
10.04.2006, 11:43
    #33655322
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Имеется обычное дерево: id, parent_id, name. Всего три уровня группировки (на данный момент, потом может будет и больше). В CR нужно сделать так, чтобы в левой части выводилось удобоваримое для пользователей дерево по полю name, что-нибудь вроде

Тетради
- тетради в клетку
-- 48 листов
-- 96 листов
- тетради в линейку
-- 48 листов
-- 96 листов

Надеюсь, мысль понятна. Если делать группировку по полям id и parent_id, то в левой части будут просто числовые коды, которые конечному пользователю совершенно неинтересны. Как же сделать так, чтобы группировка была по полям id и parnet_id, но при этом пользователь видел не коды, а иерархическое дерево с возможностью соответственно открывать нужный узел? Может кто сталкивался с подобной задачей?

С уважением, kkv
...
Рейтинг: 0 / 0
10.04.2006, 12:26
    #33655524
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
посмотреть в хелпе про "Customize Group Name Field"
...
Рейтинг: 0 / 0
10.04.2006, 12:35
    #33655559
dragonv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
там где поле группировки в закладке Options можно поставить (указать) имя поля.
...
Рейтинг: 0 / 0
10.04.2006, 12:44
    #33655593
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Спасибо, буду пробовать.

С уважением, kkv
...
Рейтинг: 0 / 0
10.04.2006, 13:20
    #33655739
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
С выводом названий полей я разобрался, а вот с деревом нет. Все дело в том, что при таком подходе, я имею в виду группировку по id и parent_id, не выводится дерево, которое ожидается. Кристал совершенно по-честному на первый уровень группировки ставит parent_id, на второй id - претензий не имею. Но нужно-то получить совершенно другое! Неважно какой грублины дерево, в отчете иерархия должна прослеживаться четко в зависимости от данных в узлах. Т.е. очевидно, что неправилен сам подход к формированию деревянного отчета. Нужно выводить не группировкой (или не только группировкой), но и как-то по другому. Вот только как?

С уважением, kkv
...
Рейтинг: 0 / 0
10.04.2006, 16:41
    #33656494
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Ну, раз никто не подсказал, то пришлось разобраться самому. В CR иерархические отчеты делаются элементарно. Сначала нужно задать уровень группировки по полю id, затем зайти в меню "Report" - "Hierarchical Group Options" и указать parent_id. Вот и все.

С уважением, kkv
...
Рейтинг: 0 / 0
17.04.2006, 17:23
    #33671814
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
http://www.sql.ru/forum/actualthread.aspx?tid=283493#2571506

Peter Kirillowя бы не стал извращатся с передачей отчету готового резалтсета. если в дизайнере все строится нормально, то отчет надо вызывать как есть с простой передачей ему параметров. и все. если поискать в форуме, то можно найти как это сделать через OLE. я пользуюсь явой только...В этом случае на каждой клиентской машине должен быть установлен Crystal. Дело здесь (теперь уже) даже не в технике передачи параметров (я их могу "зашить" в строку SQL, считав из формы), а в том, что вьювер некорректно отображает дерево. Вот как это побороть?

С уважением, kkv
...
Рейтинг: 0 / 0
18.04.2006, 13:42
    #33673501
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Private Sub cmdOpenReport_Click()
On Error GoTo errHandler

Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Crystal As CRAXDRT.Application
Dim Report As CRAXDRT.Report
Dim strSQL As String
Dim strFileName As String

'Строка подключения
Set Conn = New ADODB.Connection
Conn.CursorLocation = adUseClient
Conn.ConnectionString = "Provider=SQLOLEDB.1;" _
    & "Persist Security Info=False;" _
    & "User ID=USERNAME;" _
    & "Password=PASSWORD;" _
    & "Initial Catalog=DATABASE;" _
    & "Data Source=SERVERNAME"
Conn.Open

'Открываем файл отчета
strFileName = "d:\App\test\PriceList.rpt"
Set Report = Nothing
Set Report = m_Application.OpenReport(strFileName,  1 )
Report.DiscardSavedData 

'Получаем данные из ХП
Set rs = New ADODB.Recordset
strSQL = "exec UP_RPT_ACC_ENT_GOODS_PRICE_LIST " _
   & "@PRICE_ID = '" & txtPriceID.Text & "' " _
   & ", @CURRENCY_ID = '" & txtCurrencyID.Text & "' "
rs.Open strSQL, Conn, adOpenStatic, adLockReadOnly

'Прикручиваем рекордсет к вьюверу на форме
Report.Database.SetDataSource rs
CRViewer1.ReportSource = Report
CRViewer1.ViewReport

'Выход
rs.Close
Set rs = Nothing
Set Conn = Nothing
Set Crystal = Nothing
Set Report = Nothing
Exit Sub

'Ошибки
errHandler:
    MsgBox Err.Description, vbExclamation
End Sub

Если запускать файл отчета отдельно, то дерево формируется так как надо. Если же запускать из кода, то во вьювере все эти данные отображаются, но уже как-то криво. На картинке справа это то, что должно получиться, а слева - то, что получается из кода. (То что справа я наваял на .NET, но нужно прикрутить именно к VB6). Кривизна состоит в том, что все ветки дерева начиная со второй строки попадают в самую первую ветку, в данном случае "Товары для делопроизводства". В самом коде я нигде не проникаю внутрь вьювера, а просто тупо его подключаю. Может кто сталкивался с подобной задачей и знает как ее решить. В документации я не нашел ни одного примера о том как можно "включить" иерархичность во вьювере. Догадываюсь, что нужно каким-то образом пройтись по дереву в цикле, но как???

С уважением, kkv
...
Рейтинг: 0 / 0
18.04.2006, 14:36
    #33673688
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
попробовать включить программно
http://support.businessobjects.com/global/interactive/xi/om/RDC/content.html
...
Рейтинг: 0 / 0
18.04.2006, 14:50
    #33673739
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Peter Kirillowпопробовать включить программно
http://support.businessobjects.com/global/interactive/xi/om/RDC/content.htmlИменно этого я и добиваюсь, пример кода нужен. А по этой ссылке (объектная модель) я уже был. Все, что касается иерархичности, если я правильно понимаю, следует искать в свойстве EnableHierarchicalGroupSorting . А примера кода я там не нашел. Пробовал просто присваивать этому свойству значение true, но прога ругается (как именно уже не помню, т.к. перепробовал много способов). Подскажешь?

С уважением, kkv
...
Рейтинг: 0 / 0
18.04.2006, 15:10
    #33673819
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
поскольку я никогда не делал этого в VB, то для начала попробовал бы получить массив объектов Area и посмотреть на их свойства, а потом попробовать установить этот (EnableHierarchicalGroupSorting) флаг.
но, повторюсь, я бы попробовал всю задачу формирования репорта (резалтсет) оставить самому кристалу и делать так как написано по ссылке http://support.businessobjects.com/library/kbase/articles/c2004630.asp.
...
Рейтинг: 0 / 0
18.04.2006, 15:16
    #33673837
kkv
kkv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
Peter Kirillowно, повторюсь, я бы попробовал всю задачу формирования репорта (резалтсет) оставить самому кристалу и делать так как написано по ссылке http://support.businessobjects.com/library/kbase/articles/c2004630.asp Так ведь именно так я и сделал, только вот вьювер криво отрабатывает.
...
Рейтинг: 0 / 0
18.04.2006, 16:05
    #33674010
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-11. Отчет-дерево
здается мне, что это таки кривизна самого вьюера.
версия-то какая ?
какой тип данных у парента ?
если сделать тестовый репорт, где не будет русских символов, то будет работать через вьюер ?
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR-11. Отчет-дерево / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]