Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / PRINT WHEN В ЭТИКЕТКЕ / 9 сообщений из 9, страница 1 из 1
29.07.2008, 12:13
    #35457425
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
При формировании извещений и квитанций об уплате квартплаты формируется крос-таблица,число столбцов (kpl) в этой таблице не постоянно.
Для печати извещений и квитанций используется генератор этикеток Label.
Попытка создать объекты в этикетке типа Field по схеме:

Expression:EVAL(FIELD(16)) ,Print When : kpl> 15
Expression:EVAL(FIELD(17)) ,Print When : kpl> 16
...........
Expression:EVAL(FIELD(20)) ,Print When : kpl> 19

Выдаёт ошибку например на поле EVAL(FIELD(17)),если kpl>17.
Поэтому пришлось создать объекты в этикетке типа Field по схеме:

Expression:IIF(KPL>16,EVAL(FIELD(17)),0),Format:Blank if zero,Print When: пусто

Вопрос:можно чтобы вначале шёл анализ выражения в Print When,а потом всего остального. Получается,что создатели генератора этикеток не предусмотрели такой ситуации или имели ввиду что-то другое.
...
Рейтинг: 0 / 0
29.07.2008, 17:02
    #35458566
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
"Генеральная линия партии" при работе с любой реляционной базой данных - это фиксированное (неизменное) количество полей (столбцов) и переменное количество строк. Под эту идеологию и "заточены" все объекты и вообще любая работа с таблицами.

Разумеется, Вы можете "выпендрится" и сделать "переменное" количество полей. Но это уже будут Ваши проблемы. Придется постоянно "придерживать пальцем" и искать обходные пути.

Гораздо разумнее всегда формировать курсор (таблицу) с фиксированным (максимальным) количеством столбцов. Тогда не надо будет никаких макроподстановок. Какая разница, есть столбец или нет, если факт его печати все-равно блокируется по Print When?
...
Рейтинг: 0 / 0
29.07.2008, 21:59
    #35459041
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
Сейчас как раз делаю такую этикетку, с переменным кол-вом и строк и столбцов, извращение ещё то. Никакие условия в When не помогут, надо отдавать репорту готовый курсор, который предварительно формировать (и структуру и данные). У меня этикетка ещё и многоязычная :)

Сначала попытался работать напрямую с кросс-таблицей на форме, очень сложный код выходит, неудобно. Переделал код для работы с двумя образами одной таблицы - нормальная таблица, которую пользователь не видит, служит для обработки данных, и её зеркальная кросс-подруга - для отображения на форме и в отчете. Так лучше.
...
Рейтинг: 0 / 0
30.07.2008, 07:33
    #35459253
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
А формировать сам frx на лету?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.07.2008, 09:30
    #35459378
sergej_57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
А я вопрос с переменным числом столбцов в отчете решал с помощью массивов. Каждое поле - элемент массива. В отчете на каждой странице расположено максимально возможное число заготовок для данных столбцов.
И при выходе они заполняются по необходимости. Недостаток - на печати видны не заполненные болванки стобцов. В ширину у меня число листов тоже плавает. Пользователь пустые столбцы обрезает.
...
Рейтинг: 0 / 0
30.07.2008, 10:03
    #35459457
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
Код: plaintext
1.
2.
Разумеется, Вы можете "выпендрится" и сделать "переменное" количество полей. Но это уже будут Ваши проблемы. Придется постоянно "придерживать пальцем" и искать обходные пути.

Гораздо разумнее всегда формировать курсор (таблицу) с фиксированным (максимальным) количеством столбцов. Тогда не надо будет никаких макроподстановок.

Я Вас понял ВладимирМ ,но в моём случае кодирование с переменным количеством полей проще,поэтому в этикетке буду использовать выражения:IIF()
...
Рейтинг: 0 / 0
30.07.2008, 10:13
    #35459481
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
LUCIAN
Код: plaintext
1.
2.
Разумеется, Вы можете "выпендрится" и сделать "переменное" количество полей. Но это уже будут Ваши проблемы. Придется постоянно "придерживать пальцем" и искать обходные пути.

Гораздо разумнее всегда формировать курсор (таблицу) с фиксированным (максимальным) количеством столбцов. Тогда не надо будет никаких макроподстановок.

Я Вас понял ВладимирМ ,но в моём случае кодирование с переменным количеством полей проще,поэтому в этикетке буду использовать выражения:IIF()
Казимирыч, тебе дело говорят. Подумай еще.
...
Рейтинг: 0 / 0
30.07.2008, 10:48
    #35459577
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
Код: plaintext
Казимирыч, тебе дело говорят. Подумай еще.
Алексеич , это моя 2-я программа по квартплате .1-ю сделал для бухгалтера ЖСК, и там сделал просто
т.е. имеется таблица с полями №кв,ФИО,сумма услуги1,.....,сумма услуги12 и таблица ценник услуг.
2-ую программу делаю для общежития родного предприятия и решил сделать её более универсальной.
И основная хранимая таблица расчётов имеет примерно такую структуру:№кв,код услуги,сумма услуги
Поэтому вот и получается такое "выпендривание"
...
Рейтинг: 0 / 0
30.07.2008, 10:53
    #35459581
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PRINT WHEN В ЭТИКЕТКЕ
Пришли на известный тебе е-мыл на посмотреть.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / PRINT WHEN В ЭТИКЕТКЕ / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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