|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
количество колонок (PB 7.0.3 b.10312) Поясню в чем вопрос: выражение n_col = long(ds_addendum.Describe("DataWindow.Column.Count")) выдает n_col = 3 (должно быть 63) n_row = ds_addendum.RowCount() выдает 300 (и должно быть столько же) Реально в CrossTab'е 63 колонки и я могу обращаться к любой из них ru = ds_addendum.Object.Data[i,j] и получать необходимые данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 12:32 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
А так пробывал: Long(ds_addendum.Object.DataWindow.Column.Count) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 14:57 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Пробовал! АНАЛОГИЧНО!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 15:21 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Реально в твоём CrossTabе DataWindow.Column.Count выдаст столько, сколько элементов в его SQL SELECTе... Если ты хошь вот это - Property for Crosstab Value Columns (exp) A string containing a comma- or tab-separated list of the names of columns that make up the columns of the crosstab. These are the columns that display across the top of the crosstab (Painter: Columns option) Тогда надо Describe("DataWindow.Crosstab.Columns") делать и парсать результат... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 18:52 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
И опять ничего хорошего не получилочь! Describe выдал одно-единственное название колонки, а не реальные 63 штуки! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 19:51 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
То есть ты не смог правильно пропарсать a comma- or tab-separated list of the names of columns? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 20:11 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Я сделал так columns = ds_addendum.Describe("DataWindow.Crosstab.Columns") И получил строку columns = "value_date" value_date - это из столбец sql-выражения select a,b,c,value_date,d from ...., который лежит в основе DW ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 20:21 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Это означает, что в CrossTab Definition, в коробочке под названием Columns у тебя сидит одна колонка - value_date ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2003, 20:48 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Я, вероятно, не совсем корректно сформулировал вопрос. Попробую более подробно. В sql-запросе, лежащем в основе DW, из некой таблицы выбираются четыре поля. Одно из этих полей определяет строки CrossTable, второе (value_date) - колонки, а два оставшихся определяют данные на пересечении. Собственно, это остатки в рублях и валюте на разных балансовых счетах (строки) за разные дни (колонки): value_date 01/01/2003 02/01/2003 03/01/2003 ../../..... balance ru cu ru cu ru cu 30201 10 5 10 5 11 5 ... 30202 20 1 19 1 19 2 ... 30203 15 0 16 2 16 0 ... ... ... ... ... ... Простое выполнение запроса выдает 9703 записи из четырех полей. DataWindow (CrossTab) выдает на экране 313 строк (кол-во балансов) и 63 столбца (первый -баланс, остальные - остатки на них в рублях и валюте за 31 день). Будучи прикрепленным к DataStore, получаем следующие значения (как я уже и указывал выше): n_row = ds_addendum.RowCount() выдает 313 СТРОК CrossTab'a n_col = long(ds_addendum.Describe("DataWindow.Column.Count")) выдает n_col = 3 (вероятно это ПОЛЯ value_date,ru и cu) columns = ds_addendum.Describe("DataWindow.Crosstab.Columns") выдает строку columns = "value_date" (Это означает, что в CrossTab Definition, в коробочке под названием Columns у тебя сидит одна колонка - value_date ... (С)Филипп ) А откуда, собственно, получить количество столбцов CrossTab'a, которое у меня 63. Ведь я, применяя эти выражения: ru = ds_addendum.Object.Data[i,j] cu = ds_addendum.Object.Data[i,j + 1] ( где i - номер СТРОКИ, а j - номер СТОЛБЦА, max(j + 1) = 63 ) , получаю реальные значения из CrossTab'a. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2003, 10:25 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Ты вначале переведи свой кросстаб после заполнения данными в статический режим, а затем считай колонки. Иначе ничего не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2003, 17:27 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
PaulJB , с точки зрения тех Describов, которые уже были urvasом опробованы, переведение в статический режим ничего не изменит. У меня такое впечатление, что нужно просто Describe("DataWindow.objects") делать и парсить... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2003, 20:06 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
PaulJB абсолютно прав Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2003, 20:58 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
На то, что возвращает Describe ("DataWindow.Objects") static/dynamic mode влияет, на Describы ("DataWindow.Crosstab.*") - НЕ влияет ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2003, 22:10 |
|
Как в DataStore типа CrossTab определить
|
|||
---|---|---|---|
#18+
Я в основном нигде не использую ф-ции Describe( ... )/Modify( ... ) и по этому не знаю их поведение в разных случаях. Вот такая конструкция в одной из моих программ работает: dw_stato_report.retrieve() dw_stato_report.object.DataWindow.Crosstab.StaticMode='yes' dw_stato_report.object.DataWindow.column.count - выдает кол-во колонок в кросстабе. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2003, 15:28 |
|
|
start [/forum/topic.php?fid=15&msg=32302220&tid=1339448]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 498ms |
0 / 0 |