|
|
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Выводится report format ... по алиасу, который создан через SPT-запрос к серверу по ODBC. Запрос возвращает 136 (ну или 82, 30 ...) записей с 11-ю колонками. Все они выводятся в отчете без каких-либо группировок, только сумма в конце отчета в summary band. В отчете задействованы заголовок (одна строка), detail (11 полей), page footer (с вызовом PageNo), summary - с суммой по 1 полю. Ориентация страницы - landscape. На страницу влазит 42 записи. Проблема такая. Пока все записи помещаются на 1 страницу - все путем. Как только более 1 страницы - записи начинают при выводе повторяться. Если выводить на экран (report format ... noconsole to printer prompt preview) - на второй и далее страницах все время повторяется первая строчка первой страницы. Если выводить на принтер (...noconsole to printer) - повторяются по несколько записей случайными блоками. Алиас нигде больше в программе не задействован. Пробовал убирать title, summary, page footer - эффект тот же. Косить на длинные возвращаемые сервером данные в колонках ? Так ни одной колонки больше 254 символов нет. Может, кто сталкивался ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 18:22:44 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Проблема неоднократно обсуждалась. Причина в потере текущей рабочей области. Надо: 1) Убрать фокус с Grid перед выполнением отчета 2) Явно перейти в нужную рабочую область перед выполнением отчета SELECT MyCursor REPORT FORM ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:31:57 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
К сожалению, причина не в этом. Грида там нет вообще, явный селект там есть :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 15:08:39 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
И похожих отчетов (с еще большим числом полей, с числом записей 5000) в программе - куча. И все они что на принтер, что на экран с листанием туда-сюда - как песня. Почему-то в одном этом - проблема :( Где ж копать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 15:14:45 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
И кстати. Если поставить susp перед report format ..., а потом эту же команду набрать в Command Window, то отчет нормально выводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 15:30:20 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Ну, и поставь перед командой REPORT команду DOEVENTS Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 17:32:07 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Накопал, что тут может быть виновата форма, с которой запускается отчет. На ней стоит обработчик события deactivate, в нем идут команды сброса "горячих клавиш" типа on key label F4. При запуске отчета последовательность событий такая: SetFocus на другую форму select mcurs report format ... - деактивируется форма срабатывает событие deactivate ? фокус опять переводится на форму ? запускается собственно отчет Вопрос. Действительно ли возникновение события deactivate для формы переводит фокус обратно на форму ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 18:23:29 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Ах да. doevents ничего не дает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 18:23:55 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
strizhSetFocus на другую форму select mcurs report format ... - деактивируется форма На какой объект попадает фокус по "SetFocus на другую форму"? Отчет сделан в Private DataSession или Default DataSession? Установлено ли свойство в отчете DataEnvironment.InitialSelectedAlias? Событие Deactivate ничего никуда не возвращает. Это просто событие, которое наступает, когда форма перестает быть активной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 18:45:36 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
ВоладимирМ 1) Убрать фокус с Grid перед выполнением отчета Простой SetFocus не помогает. Я для этих целей использую маленькую форму-пустышку (класс Print, например, размер 21 на 106, Caption = "" и TitleBar = .F.) и в методе печати отчета в базовом классе всех форм есть такой код: LOCAL loPrint m.loPrint = CREATEOBJECT("Print") m.loPrint.Show() ... REPORT... FORM... После выхода из метода, форма-пустышка закрывается (LOCAL...) С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 23:39:59 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
> На какой объект попадает фокус по "SetFocus на другую форму"? На поле ввода в другой форме, где нет грида, ControlSource для поля - переменная памяти. > Отчет сделан в Private DataSession или Default DataSession? Default. Я не знаю, как перенести код открытия SPT-курсора в Private Data Session. Где про это почитать ? Попробовал в лоб - вешать на событие OpenTables в DataEnv - отчет перестает видеть алиас. > Установлено ли свойство в отчете DataEnvironment.InitialSelectedAlias? Нет, так как в DataEnv нет никаких курсоров-таблиц. Совет Aleksey-K не помог. Единственное, чего я добился (что переводом фокуса в безопасное место :-), что созданием лишнего временного объекта), так это того, что на принтер печатается правильно (опять же - больше 4 страниц не пробовал). А вывод на экран все такой же корявый. Действительно, это как-то связано с гридом, который открыт в другой форме (неактивной, никак не связанной с отчетом). Пробовал открывать отчет без запуска всей программы - когда открыт только один алиас - все работает корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 10:48:02 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Ау ! Знатоки ! :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 20:07:10 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Тебе уже объяснили - теряется текущая рабочая область. Для проверки этого факта вставь в свой отчет объект печати в котором укажи функцию ALIAS() Именно так, без параметров. Эта функция должна вернуть алиас главной рабочей таблицы по которой и выполняется твой отчет. Если там оказалось не то, что тебе надо, то и ищи, где в коде происходит переключение на другую рабочую область. Как именно получен курсор: через SPT, Remote View или CREATE CURSOR не имеет никакого значения. Если отчет выполняется в Default DataSession, то можно в свойствах DataEnvironment самого отчета явно указать алиас курсора. Это свойство DataEnvironement.InitialSelectedAlias ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 11:45:49 |
|
||
|
Глюк - повторяются строчки в отчете по одной таблице
|
|||
|---|---|---|---|
|
#18+
Прошел в отладчике более тщательно. Все дело в том, что после report format ... исполнение программы идет дальше. Вспомнил про совет ВладимираМ про doevents, но поставил его сразу ПОСЛЕ report format - помогло !!! Всем спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 21:03:59 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33098182&tid=1594066]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 504ms |

| 0 / 0 |
