Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета / 25 сообщений из 31, страница 1 из 2
17.01.2011, 09:23
    #37061768
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Доброе всем утро. Помогите сформировать отчет..запуталась я что-то. Есть запрос, результатом которого являются строки

Дата /серия/ номер/ сума/ сумма прописью/ год/ номер договора/ ФИО
07.04.2010 16:17 ДМ 727690901 2655 Две тысячи шестьсот пятьдесят пять 2009 72769 ГРЫМОВА НАТА АНАТОЛЬЕВНА

21.01.2008 0:00 ДМ 35186080 1935 Одна тысяча девятьсот тридцать пять 2007 35 ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА

21.01.2009 0:00 ДМ 35225174 2635 Две тысячи шестьсот тридцать пять 2007 35 ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА

30.04.2010 0:00 ДМ 35271151 2730 Две тысячи семьсот тридцать 2009 35 ГРЫМОВА ИРИНА АНАТОЛЬЕВНА



необходимо сделать чтобы выглядело так

ГРЫМОВА НАТА АНАТОЛЬЕВНА - 2655 (Две тысячи шестьсот пятьдесят пять)
ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА -1935 ( Одна тысяча девятьсот тридцать пять)
ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА - 2635 (Две тысячи шестьсот тридцать пять)
ГРЫМОВА ИРИНА АНАТОЛЬЕВНА - 2730 ( Две тысячи семьсот тридцать)




Дата оплаты: 07.04.2010 16:17
Дата оплаты: 21.01.2008 0:00
Дата оплаты: 21.01.2009 0:00
Дата оплаты: 30.04.2010 0:00

Предполагаю что надо сделать группировку в отчете по полям Дата и ФИО. Поправьте, если не так
...
Рейтинг: 0 / 0
17.01.2011, 09:29
    #37061775
Scorp1978
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
C помощью команды AT() найди положение пробелов, затем с помощью команды substr() выбери нужные части предложения и присвой переменным, затем из переменных составь предложение которое тебе нужно
...
Рейтинг: 0 / 0
17.01.2011, 10:13
    #37061833
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Не совсем понятно....

У меня результат запроса в виде таблицы ...
...
Рейтинг: 0 / 0
17.01.2011, 11:28
    #37061987
Вопрос по формированию отчета
n="07.04.2010 16:17 ДМ 727690901 2655 Две тысячи шестьсот пятьдесят пять 2009 72769ГРЫМОВА НАТА АНАТОЛЬЕВНА"

Код: plaintext
1.
2.
? GETWORDNUM(n,  13 )+" "+ GETWORDNUM(n,  14 )+" "+ GETWORDNUM(n,  15 )+" - "+ GETWORDNUM(n,  5 );
+" ("+ GETWORDNUM(n,  6 )+" "+GETWORDNUM(n,  7 )+" "+GETWORDNUM(n,  8 )+" "+GETWORDNUM(n,  9 )+" "+GETWORDNUM(n,  10 );
+" "+GETWORDNUM(n,  11 )+")"
...
Рейтинг: 0 / 0
17.01.2011, 11:57
    #37062063
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМУ меня результат запроса в виде таблицы ...
И в чем проблема? Просто указывай какие поля таблицы в каком месте выводить.
...
Рейтинг: 0 / 0
17.01.2011, 12:39
    #37062197
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
ВладимирМ,

не получается в таком виде, в каком надо
...
Рейтинг: 0 / 0
17.01.2011, 12:43
    #37062210
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
получается в перемешку вот так.

ГРЫМОВА НАТА АНАТОЛЬЕВНА - 2655 (Две тысячи шестьсот пятьдесят пять)
Дата оплаты: 07.04.2010 16:17

ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА -1935 ( Одна тысяча девятьсот тридцать пять)
Дата оплаты: 21.01.2008 0:00

ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА - 2635 (Две тысячи шестьсот тридцать пять)
Дата оплаты: 21.01.2009 0:00

ГРЫМОВА ИРИНА АНАТОЛЬЕВНА - 2730 ( Две тысячи семьсот тридцать)
Дата оплаты: 30.04.2010 0:00
...
Рейтинг: 0 / 0
17.01.2011, 14:45
    #37062602
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМДоброе всем утро. Помогите сформировать отчет..запуталась я что-то. Есть запрос, результатом которого являются строки

Дата /серия/ номер/ сума/ сумма прописью/ год/ номер договора/ ФИО
07.04.2010 16:17 ДМ 727690901 2655 Две тысячи шестьсот пятьдесят пять 2009 72769 ГРЫМОВА НАТА АНАТОЛЬЕВНА

21.01.2008 0:00 ДМ 35186080 1935 Одна тысяча девятьсот тридцать пять 2007 35 ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА

21.01.2009 0:00 ДМ 35225174 2635 Две тысячи шестьсот тридцать пять 2007 35 ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА

30.04.2010 0:00 ДМ 35271151 2730 Две тысячи семьсот тридцать 2009 35 ГРЫМОВА ИРИНА АНАТОЛЬЕВНА



необходимо сделать чтобы выглядело так

ГРЫМОВА НАТА АНАТОЛЬЕВНА - 2655 (Две тысячи шестьсот пятьдесят пять)
ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА -1935 ( Одна тысяча девятьсот тридцать пять)
ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА - 2635 (Две тысячи шестьсот тридцать пять)
ГРЫМОВА ИРИНА АНАТОЛЬЕВНА - 2730 ( Две тысячи семьсот тридцать)




Дата оплаты: 07.04.2010 16:17
Дата оплаты: 21.01.2008 0:00
Дата оплаты: 21.01.2009 0:00
Дата оплаты: 30.04.2010 0:00

Предполагаю что надо сделать группировку в отчете по полям Дата и ФИО. Поправьте, если не так
Думается мне, что исходную таблицу нужно пересканировать, создавая курсор, например, с одним текстовым полем размером 200 символов, где записи расположить в нужном порядке.
Потом вывести его на печать.
...
Рейтинг: 0 / 0
17.01.2011, 14:50
    #37062617
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
А, теперь понял. Вам надо сначала вывести все имена, потом все даты (в том же порядке)

Это можно решить только удвоением исходных данных. Ну, или связью по set relation со спец.таблицей, которая сделает то же самое, но другими средствами.

Другими словами, делаете примерно следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
* Создаю курсор, структура которого дублирует структуру таблицы, но с добавлением одного поля
select  0  as GroupId, * from MyTab into cursor curReport ReadWrite where  1 = 2 

* Копирую в него данные из таблицы
select curReport
append from MyTab

* Для дополнительного поля устанавливаю значение  1 
update curReport set GroupId =  1  where GroupId =  0 

* Второй раз копирую данные из таблицы
select curReport
append from MyTab

* Для дополнительного поля устанавливаю значение  2 
update curReport set GroupId =  2  where GroupId =  0 

Вот теперь можно делать отчет с группировкой по полю GroupId. Причем установить разное условие Print When для разных объектов отчета. Для объектов первой группы установить соответственно GroupId = 1, а для объектов второй группы GroupId = 2
...
Рейтинг: 0 / 0
17.01.2011, 16:11
    #37062841
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
ВладимирМ,

А с помошью Crystal reports как-нибудь можно реализовать такой вид?
...
Рейтинг: 0 / 0
17.01.2011, 17:00
    #37062948
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМА с помошью Crystal reports как-нибудь можно реализовать такой вид?
Не знаю. Я с Crystal Reports не работал. Но Вам все-равно придется каким-либо образом повторить прогон по тем же самым записям. И проще всего это сделать просто удвоив их количество.
...
Рейтинг: 0 / 0
17.01.2011, 17:05
    #37062957
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
ВладимирМ,
Удвоение данных придется в процедуру на MSSQL добавлять видимо....
...
Рейтинг: 0 / 0
17.01.2011, 17:10
    #37062965
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Ну сделайте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select ...,... 
From MyTab
Where ...
Union
Select ...,...
From MyTab
Where ...
на сервере и будет вам удвоение данных.
В первом селекте одни поля, во втором - другие.
...
Рейтинг: 0 / 0
17.01.2011, 17:17
    #37062975
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
У меня такая вот процедура получения данных

Код: 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.
ALTER procedure [dbo].[mn_paydms]
@number int,
@fio varchar( 50 ),
@syear int,
@eyear int
as
begin
select 
--sum(case when year(datepay)=datepay then 1 else 0 end) as hosp35,

@number as number, dbo.fio1(insur.insured_id)as fio, insur.inn,	p.startdate, p.enddate, p.spolis, p.npolis, sum(payment) as payment, 
pp.payform, dbo.NumPhrase(sum(payment), 1 ) as strpayment, year(pp.datepay) as datepay , p.n_dog, pp.datepay as datepay2, ' 'as fioz, ' 'as ids, ' ' as idz
from insured insur inner join polis p on insur.insured_id=p.insured_id
		           inner join polispay pp on p.polis_id=pp.polis_id
			       inner join contract c on p.contract_id=c.contract_id
		     
where  1  =  1 
	and @fio=.dbo.fio1(insur.insured_id)
	--and insur.insured_id=@insured_id
	and pp.payertype= 2 
	and year(pp.datepay) between @syear and @eyear
	and c.type= 3 
	-- учитывать только страховой взнос по факту type=2
	and pp.type in ( 2 , 19 ) --Факт + возврат

    group by year(pp.datepay), p.n_dog, pp.payform, pp.datepay, insur.insured_id, insur.inn, p.startdate, p.enddate, p.spolis, p.npolis

union

select 

@number as number,dbo.fio1(ci.insurant_id) as fio, null as inn, date_b as startdate, date_e as enddate, p.spolis, p.npolis, 
sum(cpt.payment) as payment, cpt.payform, dbo.NumPhrase(sum(cpt.payment), 1 )as strpayment, year(cpt.datepay) as datepay, c.n_dog, cpt.datepay as datepay2,

ltrim(rtrim(i.surname)+' '+rtrim(i.name)+' '+rtrim(i.secname))as fioz, i.insured_id as idz, ci.insurant_id as ids

from contrint ci inner join contract c on ci.contract_id=c.contract_id
				 inner join contrpmt cpt on cpt.contract_id=c.contract_id, polis p, insured i

where 
--ci.insurant_id=@insured_id
      @fio=.dbo.fio1(ci.insurant_id)
	 and year(cpt.datepay) between @syear and @eyear
	 and cpt.payertype= 2 
	 and c.type <> 3 
	 and cpt.type in ( 2 , 19 )
     and p.contract_id=c.contract_id
     and p.insured_id=i.insured_id
     group by year(cpt.datepay), c.n_dog, cpt.payform, p.spolis, p.npolis, cpt.datepay, i.surname, i.name, i.secname, i.insured_id, ci.insurant_id, date_b, date_e



end


в разных случая выбираются разные данные ...
...
Рейтинг: 0 / 0
17.01.2011, 17:18
    #37062978
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
если это еще и удваивается....то каков же будет запрос ...
...
Рейтинг: 0 / 0
17.01.2011, 17:58
    #37063068
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМесли это еще и удваивается....то каков же будет запрос ...

я фик его знает, шо Вы там деите,
но за ф-и в ограничении убил бы

@fio=.dbo.fio1(ci.insurant_id)
and year(cpt.datepay) between @syear and @eyear

а вместо year() пишется тупо
set @cYear = '2010'
Set @cBegDate = @cYear + '0101'
Set @cEndDate = @cYear + '3112'

cpt.datepay between @cBegDate and @cEndDate
...
Рейтинг: 0 / 0
17.01.2011, 18:45
    #37063138
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМесли это еще и удваивается....то каков же будет запрос ...
Зачем же сам запрос удваивать. Удваивайте его результат.

Для MS SQL это можно сделать, в данном случае, через временные таблицы


Код: 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.
ALTER procedure [dbo].[mn_paydms]
	@number int,
	@fio varchar( 50 ),
	@syear int,
	@eyear int
as
begin

set nocount on;
-- Перестраховка, на случай, если таблица уже создана
-- В принципе, такого быть не может, но, мало ли
if object_id('tempDB..#tmpResult') is not null drop table #tmpResult

-- Собственно основной запрос, но результат записывается во временную таблицу
select ...
into #tmpResult
from ...
inner join ...
union
select ...
from ...
inner join ...

-- А вот теперь выгружаем данные во вне
select  1  as GroupId, * from #tmpResult
union all
select  2  as GroupId, * from #tmpResult
-- Для гарантии правильности следования записей в выборке нужен еще ORDER BY
-- Но какие поля перечислить кроме первого - Вам виднее
order by GroupId

end

PS: Хотя, конечно, синтаксис Вашего запроса, мягко говоря, своеобразный
...
Рейтинг: 0 / 0
17.01.2011, 19:28
    #37063205
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
ВладимирМPS: Хотя, конечно, синтаксис Вашего запроса, мягко говоря, своеобразный Да не то слово . У нас тут все, мягко говоря, своеобразное
...
Рейтинг: 0 / 0
19.01.2011, 19:51
    #37067759
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Добрый всем вечер. Что- то у меня совсем шарики за ролики заходят с этими отчетами. Не могу в foxpro в нужном порядке данные расположить. Содала отчет с группировкой по полю groupid, расположила в details 2 поля: ФИО и ДАТА. В print when ФИО ставлю groupid=1 в print when ДАТА groupid=2. Но выходит не так как надо....
...
Рейтинг: 0 / 0
19.01.2011, 20:09
    #37067778
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
А как источник данных отчета наполняется? И какой прядок следования считать "правильным"?
...
Рейтинг: 0 / 0
19.01.2011, 20:48
    #37067817
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Порядок следования в 1 посте данной темы.
...
Рейтинг: 0 / 0
19.01.2011, 20:56
    #37067821
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
через SQLEXEC(gnconnhandle, procname,"curname") заполняю курсор - источник данных для отчета
...
Рейтинг: 0 / 0
19.01.2011, 21:10
    #37067835
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
НадеждаМДобрый всем вечер. Что- то у меня совсем шарики за ролики заходят с этими отчетами. Не могу в foxpro в нужном порядке данные расположить. Содала отчет с группировкой по полю groupid, расположила в details 2 поля: ФИО и ДАТА. В print when ФИО ставлю groupid=1 в print when ДАТА groupid=2. Но выходит не так как надо....Что-то сдаётся мне, что группировка там и не нужна. Уберите её вообще, и просто в Detail положите эти 2 поля (с вашими print when). Я, конечно, предполагаю, что procname у вас - запрос от ВладимирМ.
...
Рейтинг: 0 / 0
19.01.2011, 21:33
    #37067851
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
tanglir,

Да по совету ВладимираМ, модифицировала свою процедуру.
...
Рейтинг: 0 / 0
20.01.2011, 11:57
    #37068724
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по формированию отчета
Совсем запуталась...Имена и даты выводятся в нужном порядке, но вот если я хочу сгруппировать их по номеру договора и ставлю чтобы каждый новый договор начинался с новой страницы, то выводятся сначала все имена на разных страницах по разным договорам, а затем даты по тем же договорам.

Как объединить, чтобы имена и даты по одному договору выводились на одной странице?

страница 1
номер договора 72769

ГРЫМОВА НАТА АНАТОЛЬЕВНА - 2655 (Две тысячи шестьсот пятьдесят пять)
Дата оплаты: 07.04.2010 16:17

страница 2
номер договора 35

ГРЫМОВА АНАСТАСИЯ АНАТОЛЬЕВНА -1935 ( Одна тысяча девятьсот тридцать пять)
ГРЫМОВА ВИКТОРИЯ АНАТОЛЬЕВНА - 2635 (Две тысячи шестьсот тридцать пять)
ГРЫМОВА ИРИНА АНАТОЛЬЕВНА - 2730 ( Две тысячи семьсот тридцать)

Дата оплаты: 21.01.2008 0:00
Дата оплаты: 21.01.2009 0:00
Дата оплаты: 30.04.2010 0:00
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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