Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 несколько таблиц в отчете VFP 9  [new]
Johnny_lcool
Member

Откуда: Новороссийск
Сообщений: 67
Собственно тема. Поискал по форуму - ничего похожего не нашел. А суть такова - надо, чтобы в отчете выводилось 3 различных таблицы одна следом за другой.
Попытка создать три data-области привели к тому, что записи из 3 таблиц всего лишь чередуются одна за другой. Да и добавить заголовок к таблице не представляется возможным.
Может есть вариант как это дело обойти или я просто чего-то не знаю. Нужна помощь!
С уважением!
26 апр 08, 10:40    [5599647]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
Johnny_lcool
Member

Откуда: Новороссийск
Сообщений: 67
прочитал здесь

но проблема в том, что таблицы попадают из SQL server - 3 разных по строению и содержанию таблицы.
26 апр 08, 12:13    [5599754]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Johnny_lcool
Собственно тема. Поискал по форуму - ничего похожего не нашел. А суть такова - надо, чтобы в отчете выводилось 3 различных таблицы одна следом за другой.
Попытка создать три data-области привели к тому, что записи из 3 таблиц всего лишь чередуются одна за другой. Да и добавить заголовок к таблице не представляется возможным.
Может есть вариант как это дело обойти или я просто чего-то не знаю. Нужна помощь!
С уважением!

Нет ничего в этом сложного:
1. Создаешь фиктивный курсор (таблицу) с одной записью:
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )
2. Создаешь во всех своих трех таблицах фиктивные индексы и связь с фиктивным курсором через SET RELATION:
SELECT MyTable1
INDEX ON .T. TAG Fix
SELECT MyTable2
INDEX ON .T. TAG Fix
SELECT MyTable3
INDEX ON .T. TAG Fix
SELECT FalseCursor
SET RELATION TO .T. INTO MyTable1 ADDITIVE
SET RELATION TO .T. INTO MyTable3 ADDITIVE
SET RELATION TO .T. INTO MyTable3 ADDITIVE
3. В отчете делаешь три Detail Band с ОБЯЗАТЕЛЬНЫМ указанием в их свойстве "Target alias expression" имен своих таблиц в виде строковых констант (или переменных).
Например, для первой таблицы в свойстве "Target alias expression" первого Detail Band должно быть: "MyTable1". Кавычки обязательны!
Для каждого Detail Band создаешь свой Header и Footer, путем выбора свойства "Associated header and footer band". Добавляешь в эти Header-ы и Footer-ы необходимые элементы дизайна данной таблицы.
4. Выводишь в каждом из Detail Band поля "своей" таблицы с обязательным указанием алиаса перед названием поля.
5. Выбираешь фиктивную таблицу (см. п.1) и запускаешь отчет:
SELECT FalseCursor
REPORT FORM ....
С уважением, Алексей
26 апр 08, 19:12    [5600292]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
Johnny_lcool
Member

Откуда: Новороссийск
Сообщений: 67
Проверено! Работает просто отлично! Можно тему оставить на будущее...
11 май 08, 17:13    [5648013]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: несколько таблиц в отчете VFP 9  [new]
А. С.
Member

Откуда:
Сообщений: 153
Подниму тему.
Реализован данным методом отчет, состоящий из двух одинаковых Details. То есть в Details1 и в Details2 выводятся данные с одного курсора, сделано для того, чтобы распечатать на одном листе 2 копии квитанции.
Проблема вылезла при печати отчета, в котором строк больше в курсоре, Details которых не умещается на одной странице.
Попробовал в свойствах Details2 указать значение поля "Start detail set on new page when less then:" - 14.00, то есть чуть меньше половины листа А4. Предполагая что если на листе остается меньше 14 см - то печать Details2 начнется на новом.
Так и произошло, первый печатается нормально, второй лист печатается шапка и подвал тоже нормально, а вот значение из курсора выводится только первая запись.

Попробовал сделать клон первого курсора, в Details2 указал откуда взять данные - та же петрушка.
вот текст:
SELECT * FROM cMyCursor1 INTO CURSOR cMyCursor2 NOFILTER
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )

SELECT cMyCursor1
INDEX ON .T. TAG Fix
SELECT cMyCursor2
INDEX ON .T. TAG Fix
SELECT FalseCursor
SET RELATION TO .T. INTO cMyCursor1
SET RELATION TO .T. INTO cMyCursor2 ADDITIVE
REPORT FORM MyReport Preview
24 мар 14, 10:54    [15775902]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
ArDo
Member

Откуда:
Сообщений: 224
Еще раз рискну тему поднять.

В принципе, половину подобных тем можно было бы закрыть, если бы была возможность напечатать подряд несколько отчетов на одном листе.
Как такое организовать, да еще бы и на лазернике с дуплексом?
7 май 14, 11:43    [15984491]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
glamis
Member

Откуда:
Сообщений: 603
ArDo,

SElect file1
report form rep1 NOPAGEEJECT
SElect file2
report form rep2 NOPAGEEJECT
SElect file3
report form rep3
7 май 14, 12:21    [15984744]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
ArDo
Member

Откуда:
Сообщений: 224
Не получается.
Такая примочка на матричном принтере работала. А лазерный лист выбрасывает по любому...
7 май 14, 13:30    [15985263]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
John Smit
Member

Откуда:
Сообщений: 20
Aleksey-K
Нет ничего в этом сложного:
1. Создаешь фиктивный курсор (таблицу) с одной записью:
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )
2. Создаешь во всех своих трех таблицах фиктивные индексы и связь с фиктивным курсором через SET RELATION:
SELECT MyTable1
INDEX ON .T. TAG Fix
SELECT MyTable2
INDEX ON .T. TAG Fix
SELECT MyTable3
INDEX ON .T. TAG Fix
SELECT FalseCursor
SET RELATION TO .T. INTO MyTable1 ADDITIVE
SET RELATION TO .T. INTO MyTable3 ADDITIVE
SET RELATION TO .T. INTO MyTable3 ADDITIVE

3. В отчете делаешь три Detail Band с ОБЯЗАТЕЛЬНЫМ указанием в их свойстве "Target alias expression" имен своих таблиц в виде строковых констант (или переменных).
Например, для первой таблицы в свойстве "Target alias expression" первого Detail Band должно быть: "MyTable1". Кавычки обязательны!
Для каждого Detail Band создаешь свой Header и Footer, путем выбора свойства "Associated header and footer band". Добавляешь в эти Header-ы и Footer-ы необходимые элементы дизайна данной таблицы.
4. Выводишь в каждом из Detail Band поля "своей" таблицы с обязательным указанием алиаса перед названием поля.
5. Выбираешь фиктивную таблицу (см. п.1) и запускаешь отчет:
SELECT FalseCursor
REPORT FORM ....

С уважением, Алексей


Помогите, делал по этому методу выдает такую ошибку:
MyTable2 is not related to the current work area. (Имена таблиц конечно другие, и у меня их 2 а не 3, но это неважно)
Очень нужно помогите плиз
10 июн 14, 09:20    [16146652]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
IgorNG
Member

Откуда: Москва
Сообщений: 956
John Smit
Aleksey-K
Нет ничего в этом сложного:
1. Создаешь фиктивный курсор (таблицу) с одной записью:
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )
2. Создаешь во всех своих трех таблицах фиктивные индексы и связь с фиктивным курсором через SET RELATION:
SELECT MyTable1
INDEX ON .T. TAG Fix
SELECT MyTable2
INDEX ON .T. TAG Fix
SELECT MyTable3
INDEX ON .T. TAG Fix
SELECT FalseCursor
SET RELATION TO .T. INTO MyTable1 ADDITIVE

SET RELATION TO .T. INTO MyTable3 ADDITIVE
SET RELATION TO .T. INTO MyTable3 ADDITIVE

3. В отчете делаешь три Detail Band с ОБЯЗАТЕЛЬНЫМ указанием в их свойстве "Target alias expression" имен своих таблиц в виде строковых констант (или переменных).
Например, для первой таблицы в свойстве "Target alias expression" первого Detail Band должно быть: "MyTable1". Кавычки обязательны!
Для каждого Detail Band создаешь свой Header и Footer, путем выбора свойства "Associated header and footer band". Добавляешь в эти Header-ы и Footer-ы необходимые элементы дизайна данной таблицы.
4. Выводишь в каждом из Detail Band поля "своей" таблицы с обязательным указанием алиаса перед названием поля.
5. Выбираешь фиктивную таблицу (см. п.1) и запускаешь отчет:
SELECT FalseCursor
REPORT FORM ....

С уважением, Алексей


Помогите, делал по этому методу выдает такую ошибку:
MyTable2 is not related to the current work area. (Имена таблиц конечно другие, и у меня их 2 а не 3, но это неважно)
Очень нужно помогите плиз
10 июн 14, 10:06    [16146869]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
John Smit
Member

Откуда:
Сообщений: 20
А где собственно сам ответ???
10 июн 14, 10:37    [16147081]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
IgorNG
Member

Откуда: Москва
Сообщений: 956
John Smit,
А где, собственно, MyTable2 ?
10 июн 14, 10:55    [16147222]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
John Smit
Member

Откуда:
Сообщений: 20
IgorNG
John Smit,
А где, собственно, MyTable2 ?


Да причем здесь MyTable2, ну описался человек, или вы хотите сказать что со 2 таблицей связи не надо устанавливать? - чушь то не говорите.

у меня вообще 2 таблицы а не три, дело не в числе таблиц.
Вот человек пишет
Johnny_lcool
Проверено! Работает просто отлично!

значит конструкция такая должна работать. Хотя у меня на работе такую констр. никто не встречал.
10 июн 14, 11:56    [16147811]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
IgorNG
Member

Откуда: Москва
Сообщений: 956
John Smit
IgorNG
John Smit,
А где, собственно, MyTable2 ?


Да причем здесь MyTable2, ну описался человек, или вы хотите сказать что со 2 таблицей связи не надо устанавливать? - чушь то не говорите.

у меня вообще 2 таблицы а не три, дело не в числе таблиц.
Вот человек пишет
Johnny_lcool
Проверено! Работает просто отлично!

значит конструкция такая должна работать. Хотя у меня на работе такую констр. никто не встречал.


По-моему, чушь Вы говорите.

John Smit
Помогите, делал по этому методу выдает такую ошибку:

MyTable2 is not related to the current work area.



Чем, в таком случае, помочь?

John Smit
(Имена таблиц конечно другие, и у меня их 2 а не 3, но это неважно)


Так не проще было бы привести Ваш код?
10 июн 14, 12:05    [16147921]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
John Smit
Member

Откуда:
Сообщений: 20
IgorNG

John Smit
(Имена таблиц конечно другие, и у меня их 2 а не 3, но это неважно)


Так не проще было бы привести Ваш код?


Ну если вам тяжело подставить вместо MyTable2 иное имя таблицы, то вот код:

SELECT 1
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )
SELECT 2
USE d:\....\pero.dbf EXCLUSIVE
INDEX ON .T. TAG Fix
SELECT 3
USE d:\....\repin1.dbf EXCLUSIVE
INDEX ON .T. TAG Fix
SELECT 1
SELECT FalseCursor
SET RELATION TO .T. INTO pero ADDITIVE
SET RELATION TO .T. INTO repin1 ADDITIVE
CREATE REPORT
SELECT FalseCursor
REPORT FORM Report1 Preview

после чего ошибка: repin1 is not related to the current work area

хотелось бы по существу ответ
10 июн 14, 13:17    [16148507]     Ответить | Цитировать Сообщить модератору
 Re: несколько таблиц в отчете VFP 9  [new]
IgorNG
Member

Откуда: Москва
Сообщений: 956
CREATE CURSOR FalseCursor (Fix I)
INSERT INTO FalseCursor (Fix) VALUES ( 1 )
USE d:\....\pero.dbf IN 0 EXCLUSIVE
INDEX ON .T. TAG Fix
USE d:\....\repin1.dbf IN 0 EXCLUSIVE
INDEX ON .T. TAG Fix
SELECT FalseCursor
SET RELATION TO .T. INTO pero ADDITIVE
SET RELATION TO .T. INTO repin1 ADDITIVE

Из командного окна выполни этот код и посмотри что получится в Data Session.
Если Relations нормально создадутся, проверь что в DE отчета
10 июн 14, 14:10    [16148907]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить