Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчет Квитанция-Извещение / 19 сообщений из 19, страница 1 из 1
15.08.2008, 20:37
    #35490653
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Здравствуйте, помогите мыслями.

Нужно печатать бланк Квитанции банковской в пакетном режиме.
Бланк отчета сделал Один-ко-многим. Одну квитанцию печатает нормально, но дело в том, что под ней надо печатать точно же такую-же, только слева писать "Извещение".
То есть:
Есть родительская таблица со списком, по которым печатать. Есть дочерние таблицы с данными о задолженности. Все это лежит в Data Enviroment. Есть отчет состоящий из Page Header, Group Header, Detail, Group Footer. По списку бланк распечатывается нормально, как мне надо, но загвоздка в том, что каждый бланк мне надо печатать в 2-х экземплярах друг под другом.

Как это сделать я не пойму - уже все перепробовал.

Если у кого есть мысли или пример - буду очень благодарен.
...
Рейтинг: 0 / 0
15.08.2008, 20:58
    #35490668
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Вот пример - заготовка, которую я пытался реализовать
...
Рейтинг: 0 / 0
15.08.2008, 20:59
    #35490669
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Detail сделай в два раза выше и скопипасти то что уже есть и допиши "Извещение".
...
Рейтинг: 0 / 0
15.08.2008, 21:27
    #35490695
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
не подходит, так как квитанция разделена группировкой на 2 части для 2-х поставщиков, в примере "11" и "22", и для каждого поставщика свой набор услуг с долгами. Мне надо повторить все то что в примере, с шапками и подписями.
...
Рейтинг: 0 / 0
15.08.2008, 21:53
    #35490718
Рома Б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Если среда разработки не предусматривает двух и более полос детализации (Detail), то есть, по крайней мере, 2 способа преодоления этой напасти:

1. Частный.

Делаешь UNION двух (или более) таблиц с добавлением поля-признака: номер таблицы. Если таблицы идентичны по типу или похожи, то этим способом можно воспользоваться. Если даже типы полей сильно отличаются, всегда можно свести их к одному – фиктивному – символьному полю. При этом все объекты отчёта (палки, лэйблы и пр.) активно используют опции «Print when» и «Remove line if blank» с оглядкой на поле-признак. (Твой случай.)

2. Общий.

Одинаково легко «сращивает» сколь угодно сильно отличающиеся по структуре таблицы. Опять создаётся одна общая таблица вида:

Признак Table1.Field1, Table1.Field2 … Table2.Field1, Table.Field2, Table3.Field1, Table3.Filed2 …

1 Данные Данные … NULL NULL … NULL NULL
1 Данные Данные … NULL NULL … NULL NULL

2 NULL NULL … Данные Данные … NULL NULL
2 NULL NULL … Данные Данные … NULL NULL

3 NULL NULL … NULL NULL … Данные Данные
3 NULL NULL … NULL NULL … Данные Данные

В шаблоне отчёта, дабы не лепить разнородные control’ы на одно место, рисуешь «полосы» детализации одна под другой, опять же, используя опцию «Print when» по признаку, а «Remove line if blank» выставляешь у всех (!) control’ов. Сбоку каждой «полосы» рисуешь вертикальную палку, которая никогда не печается (Print when .F. и с галкой «Remove line if blank») - она «съест» все вертикальные пробелы в «полосе».

С группированием ни разу не приходилось совмещать каждый из случаев. Наверно, можно чё-то придумать. Точно можно вообще отказаться от «официальных» полос группировки. Использовать вместо них верхнюю и нижнюю часть «подполосы» детализации. То же, кстати, и с заголовком отчёта. Выводишь их, когда первая или последняя запись и т.д.

В общем, геморрой, но можно. У меня с десяток отчётов так работают.
...
Рейтинг: 0 / 0
15.08.2008, 23:06
    #35490754
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Дело в том, что в мастер-таблице список клиентов - естесственно все записи уникальные, и перебором я по ним должен распечатать отчет. Проблема в том что у меня в отчете 2 поставщика и у каждого 2 услуги и их надо разделить. Так же имеется 1 заголовок и 1 подпись. И к тому же мне надо распечатать по 2 экземпляра каждого отчета. Набросал пример в Экселе для более понятного представления о проблеме.

Может я не по тому пути иду, можно как-нибудб по другому базы составить - я не против.
...
Рейтинг: 0 / 0
15.08.2008, 23:56
    #35490793
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Сделал так:
В Detail создал один большой бланк, сразу весь (обе части).
В него текстом вбил названия поставщиков и услуг.
На каждую услугу сделал отдельную базу, содержащую номер клиента (как в родительской таблице) и долги
Из Мастер таблицы связался во все 4 дочерних
И в отчет вставил ссылки на поля конкретных таблиц.
Все работает!

Завтра сделаю выборку в курсоры и все.
...
Рейтинг: 0 / 0
16.08.2008, 07:35
    #35490906
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Ну в общем то, что тебе изначально предлагали.
Как правило, простые отчеты (а квитанции, пожалуй, можно отнести к простым,
несмотря на большое количество контролов), именно так и делаются. Один
курсор, строка детайла и больше ничего.


Второй вариант (в твоем случае) - это задвоить колво записей в мастер
таблице и упорядочить.
При этом нечетные записи - это квитанция (первая третья пятая...), а
четные - это извещение (вторая, четвертая и т.д.)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.08.2008, 07:50
    #35490908
А. С.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Задваивать записи не хотелось - так как колхозить не хочется.

Спасибо всем за ответы - кое что учту на будущее.
...
Рейтинг: 0 / 0
16.08.2008, 07:53
    #35490910
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Задвоить записи не сложно - тотже select .. from .. ulion all select .. from
... into cursor .. order by ...
в курсор. Вот этот курсор и становится мастер таблицей для твоего отчета.

Для отчета в любом случае данные, как правило, заранее подготавливаются, а
не тупо по всей таблице строится отчет. А вот как подготовить данные - это
уже решать тебе.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.08.2008, 13:37
    #35491013
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Для печати извещений и квитанций я использую не report а label(этикетка) при этом на листе формата
А4 вмещается 3 извещения - квитанции(поперёк). Этот ? я поднимал
ТУТ
Поэтому ,если Вам это ещё нужно,то могу поделиться после выходных.
...
Рейтинг: 0 / 0
16.08.2008, 15:00
    #35491056
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Дожил до седых волос (фигурально), а до сих пор не знаю, в чем
принципиальное отличие lable от report.
Подскажите кто в курсе.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.08.2008, 18:24
    #35491128
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Galyamov Rinat
Дожил до седых волос (фигурально), а до сих пор не знаю, в чем
принципиальное отличие lable от report.
Подскажите кто в курсе.
VFP9 Reports in Visual FoxPro
Labels are multicolumn reports that have particular column settings designed to fit label paper.

Этикетки представляют собой многоколоночные отчеты, которые имеют особые установки колонок, разработанные для того, что вместить специальные подготовленные листы бумаги.
Т.е. Label предназначен для печати отчетов в несколько колонок.

Видели, наверное, такие специальные листы для стикеров (этикеток)? Лист стандратный - A4, но на этом листе много маленьких прямоугольничков, которые легко отклеиваются от подложки и приклеиваются к коробкам, ценникам, товарам и т.п.

Чтобы распечатать текст на этих стикерах, особенно, если на каждом надо печатать что-то индивидуальное (например, порядковый номер стикера), проще организовать печать по столбцам. Печатаем первый столбец, потом переходим на второй столбец этого же листа.

На самом деле, все то же самое может сделать и Report. Думаю, так просто "исторически сложилось". В VFP9, Report и Label вполне взаимозаменяемые. Команда Report может запускать печать файлов Label, а команда Label может запускать печать файлов Report. Более того, они имеют совершенно одинаковый формат файлов. Т.е. абсолютно. Отличаются только расширением.

Хотя Label Wizard именно что предлагает печать "этикеток". Т.е. печать на специально подготовленные листы бумаги.
...
Рейтинг: 0 / 0
16.08.2008, 21:19
    #35491215
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
> Т.е. Label предназначен для печати отчетов в несколько колонок.

> На самом деле, все то же самое может сделать и Report. Думаю, так
> просто "исторически сложилось".

Я правильно понимаю, что отличий нет?

А то я может извращаюсь с репортами там, где должны работать label`ы ? :)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.08.2008, 09:18
    #35491845
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Galyamov Rinat Дожил до седых волос (фигурально), а до сих пор не знаю, в чем
принципиальное отличие lable от report.
Подскажите кто в курсе.

В приложен. KWIT.RAR если запустить KWIT.PRG(см.ниже) ,то получим наглядный пример ,что такое этикетка.

Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
CLOSE TABLES ALL
SET DELETED ON
SELECT  0 
* Генератор этикетки KWIT.LBL построен на основании  2  курсоров CKWIT,CNAM
CREATE CURSOR ckwit ;
   (FIO C( 22 ),  N_KOM N( 3 ),ID_ZIL I( 4 ), ;
	SUMA1 N( 16 ),SUMA2 N( 16 ),SUMA3 N( 16 ),SUMA4 N( 16 ),SUMA5 N( 16 ),SUMA6 N( 16 ),SUMA7 N( 16 ),SUMA8 N( 16 ),SUMA9 N( 16 ), ;
	SUMA10 N( 16 ),SUMA11 N( 16 ),SUMA12 N( 16 ),SUMA13 N( 16 ),SUMA14 N( 16 ),SUMA15 N( 16 ))
  
SELECT  0 
CREATE CURSOR cnam ;
   (USL1 C( 20 ),USL2 C( 20 ),USL3 C( 20 ),USL4 C( 20 ),USL5 C( 20 ),USL6 C( 20 ),USL7 C( 20 ),USL8 C( 20 ),USL9 C( 20 ), ;
   USL10 C( 20 ),USL11 C( 20 ),USL12 C( 20 ),USL13 C( 20 ),USL14 C( 20 ),USL15 C( 20 ))
* Предполагается,что расчёты по квартплате хранятся в таблице из которой получается следующий курсор
*   (ID_ZIL I( 4 ),ID_USL I( 4 ),SUMA N( 10 ))
*  где ID_ZIL-идентификатор жильца,ID_USL-идентификатор услуги,SUMA(# 0 )-расч.сумма для данного жильца и данной усуги
* На основании выше указанного курсора получили  шахматку SXM следующей структуры:
*!*	   1  ID_ZIL      I( 4 , 0 )
*!*	   2  N_1         N( 16 , 0 )
*!*	   3  N_2         N( 16 , 0 )
*!*	   4  N_3         N( 16 , 0 )
*!*	   5  N_4         N( 16 , 0 )
*!*	   6  N_5         N( 16 , 0 )
*!*	   7  N_6         N( 16 , 0 )
*!*	   8  N_7         N( 16 , 0 )
*!*	   9  N_8         N( 16 , 0 )
*!*	  10  N_9         N( 16 , 0 )
*!*	  11  TOTAL       N( 18 , 0 )  
*!*	   
* ЗАПОЛНИМ КУРСОР CKWIT
USE SXM IN  0 
KPL=FCOUNT("SXM")
LISTP="(FIO,N_KOM,ID_ZIL"
FOR I= 2  TO KPL
	LISTP=LISTP+","+"SUMA"+LTRIM(STR(I- 1 ))+IIF(I=KPL,")","")
ENDFOR

INSERT INTO CKWIT &LISTP;
 SELECT SP_ZIL.FIO,SP_KOM.N_KOM,SXM.* FROM SXM,SP_ZIL,SP_KOM WHERE SP_ZIL.ID_ZIL=SXM.ID_ZIL AND SP_KOM.ID_KOM=SP_ZIL.ID_KOM ;
 	ORDER BY  2 
* Заполним курсор CNAM
 SELECT "N_"+PADR(ID_USL, 3 ) AS KODN,NAMU FROM SP_USL ;
 UNION SELECT DISTINCT "TOTAL" AS KODN,PADR("ВСЕГO", 20 ) AS NAMU FROM SP_USL INTO CURSOR CUSL
DIMENSION NM(KPL- 1 )
SELECT CUSL
FOR I= 2  TO KPL
	POL=PADR(FIELD(I,"SXM"), 5 ) 
	NM(I- 1 )=LOOKUP(NAMU,M.POL,KODN)
ENDFOR
SELECT CNAM
APPEND FROM ARRAY NM
SELECT CKWIT
KSTR=KPL- 1 
MSC="АВГУСТ"
SGOD="2008"
KWN= 1 
KWK= 99 
WYB= 2 
DO CASE
	CASE WYB= 1 
		LABEL FORM KWIT TO PRINTER PROMPT NOCONSOLE FOR BETWEEN(N_KOM,KWN,KWK)
	CASE WYB= 2 
		LABEL FORM KWIT PREVIEW FOR BETWEEN(N_KOM,KWN,KWK)
ENDCASE
...
Рейтинг: 0 / 0
18.08.2008, 09:55
    #35491893
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Да, но и репорт тоже умеет печатать колонками.

Или секрет в другом и я его не увидел?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.08.2008, 10:29
    #35491961
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Galyamov Rinat Да, но и репорт тоже умеет печатать колонками.

Или секрет в другом и я его не увидел?


Квитанции-извещения делал я когда-то в FOX 2.6 , то там репорт не умел печатать колонками.
Благодаря Вам выяснил ,что VFP-репорт может делать тоже ,что и этикетка
...
Рейтинг: 0 / 0
18.08.2008, 12:18
    #35492278
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
Galyamov Rinat
> Т.е. Label предназначен для печати отчетов в несколько колонок.

> На самом деле, все то же самое может сделать и Report. Думаю, так
> просто "исторически сложилось".

Я правильно понимаю, что отличий нет?
Правильно. Label - это "историческое наследие". Вопрос привычки. Многоколоночный Report уже можно было делать в VFP. Про 3 версию - не знаю, но в VFP6 уже можно было.
...
Рейтинг: 0 / 0
18.08.2008, 13:04
    #35492436
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчет Квитанция-Извещение
> Правильно. Label - это "историческое наследие". Вопрос привычки.
> Многоколоночный Report уже можно было делать в VFP. Про 3 версию - не
> знаю, но в VFP6 уже можно было.

Я как раз с 6-го фокса начал работать. И долго гадал, для чего выделен label
как отдельный контрол :)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчет Квитанция-Извещение / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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