|
|
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
Есть поле в отчёте, значение которого я вычисляю на OnFormat, как сумму некоторых полей. (поле находится в Footere) Вижу его на экране (к примеру 2) Печатаю отчёт - вижу 4. Кто-нибудь сталкивался с подобным? Кстати, почему не могу написать в этом поле в Cotrol Sourse: =Sum([поле_из_details]) - получаю: #Error ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:21 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
Может потому, что событие Format возникает не один раз? >Кстати, почему не могу написать в этом поле в Cotrol Sourse: >=Sum([поле_из_details]) - получаю: #Error ? Может потому, что [поле_из_details] не входит в RecordSource данного отчета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:29 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
я breakpoint поставил на OnFormat, не заходим туда после того, как я на печать посылаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:33 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
В событие Format передается параметр FormatCount Вот его и проверять. Если не равно 1 - то не суммировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:35 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
да, в RecordSource не входит - это некое выражение с IIf. Тогда Sum по нему не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:37 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>я breakpoint поставил на OnFormat, не заходим туда после того, как я на печать посылаю. А такое разве может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:38 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
стас1 писаля breakpoint поставил на OnFormat, не заходим туда после того, как я на печать посылаю. Это как не заходим? Если не заходим - значит событие и не работает ни фига, можешь его выкинуть нафих и искать куда ты таки заходишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:39 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>да, в RecordSource не входит - это некое выражение с IIf. >Тогда Sum по нему не работает? Конечно не работает Включите вычисляемое поле в запрос для отчета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:40 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
заходим, когда отчёт на экран выводится, а когда я на принтер посылаю - не заходим. проверка на FormatCount = 1 - не помогла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:44 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
К совету ЛП добавлю выдержку из Help: ========= В некоторых случаях Microsoft Access возвращается к предыдущим разделам отчета для выполнения форматирования в несколько проходов. При возврате к каждой предыдущей секции отчета происходит событие Возврат (Retreat), а событие Форматирование возникает несколько раз для каждого раздела. В процедурах обработки событий или в макросах, связанных с событием Возврат, допускается отмена всех изменений, которые были внесены при возникновении события Форматирование в данном разделе. Этот прием применяется в тех случаях, когда в процедурах обработки события или в макросах, связанных с событием Форматирование, выполняются действия, например, вычисление итоговых сумм по странице или изменение размеров раздела, которые необходимо выполнить для каждого раздела только один раз. ========= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:44 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>заходим, когда отчёт на экран выводится, а когда я на принтер посылаю - >не заходим. Покажите код, как вы это проверяете (извините, но у меня большие сомнения в достоверности вашего утверждения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:47 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
If (FormatCount = 1) Then суммирую End If а проверяю, что не заходим, когда на принтер посылаю - поставив breakpoint на OnFormat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 21:53 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>а проверяю, что не заходим, когда на принтер посылаю - поставив >breakpoint на OnFormat Это не очень достоверная проверка (тем более я не вижу на какую строку вы поставили breakpoint) Впишите сразу после описания процедуры строчку Debug.Print "Format " & Now И посмотрите, сколько она раз появится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 22:02 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>If (FormatCount = 1) Then >суммирую >End If Понимаете, при выводе на экран своя процедура печати, при выводе на принтер своя, поэтому FormatCount будет=1 и при выводе на экран и при последующей печати. А значение поля остается. И если вы при суммировании пишите [ИмяПоля]=[ИмяПоля]+КакоеТоЗначение То естественно, что при в последующей печати (после вывода на экран) значение поля удваивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 22:11 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
спасибо, буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 22:46 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
1. Накапливать значения в переменной рекомендуется по OnPrint, с учетом значения PrintCount. 2. При печати отчета, выведенного на экран все события разделов повторяются. Поэтому и результат удваивается. Обнуляйте переменную по событию Format заголовка отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 10:48 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
обнулил переменную по событию Print заголовка отчета - стало хорошо. >Конечно не работает >Включите вычисляемое поле в запрос для отчета не понял, что это значит. связать это поле напрямую в Control Source? но у меня это должно быть IIf(x=0,0,x). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:06 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
Что такое IIf(x=0,0,x)? Чем это отличается от просто x? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:09 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
ничем. у меня, скажем: IIf(x=0,0,y/x) - это отличается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:25 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>не понял, что это значит. связать это поле напрямую в Control Source? > IIf(x=0,0,y/x) Я же не знаю, что такое у вас x и у. Но я знаю, что в запрос тоже можно добавлять вычисляемое поле, например SELECT field1, field2, iif(field1=0,0,field2/field1) as field3 FROM ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:33 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
я сделал так, перенес IIf в SELECT. теперь поле_1 привязано напрямую к field3 в Control Source. = Sum([поле_1] - всё равно #Error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:50 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
А почему не =Sum(Field3)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:53 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
то же самое, получаю #Error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 19:59 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>я сделал так, перенес IIf в SELECT. Запрос с данной инструкцией открывается нормально? В поле field3 данные есть? Упрошайте задачу, сделайте простую таблицу, простой запрос с вычисляемым полем, на нем постройте отчет с полем суммирующим вычисляемое поле. Все должно получиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 20:41 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
Может IIF глючит, может переделать iif в функцию function f(arg1,arg2) select case arg1 case 0 f=0 case else f=arg2/arg1 end select end function? и написать SELECT field1, field2, f(field1,field2) as field3 FROM ...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 20:53 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
стас1 , Ну как, разглючил или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 20:08 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
нет, =Sum([поле_из_details]) получаю стабильно #Error не зависимо от того связано поле_из_details напрямую с Cotrol Sourse или нет. приходится вручную писать на OnFormat: X = X + поле_из_details но теперь столкнулся с новой проблемой: на выходе из OnFormat заполняю поле_из_Footere = X, и вижу на экране предпоследнее значение X. т.е. в последней строчке details вижу в дебагере, что выполнилось: 105 = 103 + 2, а на экране 103. Непонятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 23:14 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
>нет, =Sum([поле_из_details]) получаю стабильно #Error Я все же не пойму, почему вы упорно пишите [поле_из_details]? Может в этом и ошибка? Данное поле может вообще отсутствовать в Detail, главное, чтобы поле с таким именем было в RecordSource отчета. У вас в запросе оно так и называется [поле_из_details]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 09:44 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
так то же пробовал - получаю #Error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 10:51 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
вы не ответили на вопрос >Запрос с данной инструкцией открывается нормально? Данные в поле, по которому проводится суммирование есть? Показали бы SQL База большая? Если не лень вырежьте все лишнее и пришлите архив на sgsoft@mail.ru Ну не верится мне в то, о чем вы говорите :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 11:06 |
|
||
|
глюк: удвоение значения поля при печати отчёта
|
|||
|---|---|---|---|
|
#18+
отвечаю на вопрос: Запрос с данной инструкцией открывается нормально. Данные в поле, по которому проводится суммирование есть. Но в поле, у которого в Cotrol Sourse пишу =Sum([поле_из_details]) - получаю стабильно #Error. 2Саныч: А почему не =Sum(поле_из_select) - #Error. Просто не хочет оно суммироваться, и всё тут. Но, решил свои проблемы так: суммирую в коде на Detail_Print, обнуляю значения сум. поля на PageHeaderSection_Print и вывожу сумму на экран на PageFooterSection_Print. Согласен, это не здоровое решение, но хорошо ужу, что есть такое. Serge, у Вы не сталкивались с подобным в отчётах? =Sum([поле]) - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 14:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1677688]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 390ms |

| 0 / 0 |
