powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета
25 сообщений из 31, страница 1 из 2
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #37061775
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C помощью команды AT() найди положение пробелов, затем с помощью команды substr() выбери нужные части предложения и присвой переменным, затем из переменных составь предложение которое тебе нужно
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37061833
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно....

У меня результат запроса в виде таблицы ...
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #37062063
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМУ меня результат запроса в виде таблицы ...
И в чем проблема? Просто указывай какие поля таблицы в каком месте выводить.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37062197
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

не получается в таком виде, в каком надо
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #37062841
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

А с помошью Crystal reports как-нибудь можно реализовать такой вид?
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37062948
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМА с помошью Crystal reports как-нибудь можно реализовать такой вид?
Не знаю. Я с Crystal Reports не работал. Но Вам все-равно придется каким-либо образом повторить прогон по тем же самым записям. И проще всего это сделать просто удвоив их количество.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37062957
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
Удвоение данных придется в процедуру на MSSQL добавлять видимо....
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37062965
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну сделайте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select ...,... 
From MyTab
Where ...
Union
Select ...,...
From MyTab
Where ...
на сервере и будет вам удвоение данных.
В первом селекте одни поля, во втором - другие.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #37062978
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если это еще и удваивается....то каков же будет запрос ...
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #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
Вопрос по формированию отчета
    #37063205
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМPS: Хотя, конечно, синтаксис Вашего запроса, мягко говоря, своеобразный Да не то слово . У нас тут все, мягко говоря, своеобразное
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067759
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем вечер. Что- то у меня совсем шарики за ролики заходят с этими отчетами. Не могу в foxpro в нужном порядке данные расположить. Содала отчет с группировкой по полю groupid, расположила в details 2 поля: ФИО и ДАТА. В print when ФИО ставлю groupid=1 в print when ДАТА groupid=2. Но выходит не так как надо....
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067778
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как источник данных отчета наполняется? И какой прядок следования считать "правильным"?
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067817
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порядок следования в 1 посте данной темы.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067821
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через SQLEXEC(gnconnhandle, procname,"curname") заполняю курсор - источник данных для отчета
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067835
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМДобрый всем вечер. Что- то у меня совсем шарики за ролики заходят с этими отчетами. Не могу в foxpro в нужном порядке данные расположить. Содала отчет с группировкой по полю groupid, расположила в details 2 поля: ФИО и ДАТА. В print when ФИО ставлю groupid=1 в print when ДАТА groupid=2. Но выходит не так как надо....Что-то сдаётся мне, что группировка там и не нужна. Уберите её вообще, и просто в Detail положите эти 2 поля (с вашими print when). Я, конечно, предполагаю, что procname у вас - запрос от ВладимирМ.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #37067851
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

Да по совету ВладимираМ, модифицировала свою процедуру.
...
Рейтинг: 0 / 0
Вопрос по формированию отчета
    #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
25 сообщений из 31, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по формированию отчета
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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