Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вывести из таблицы ДАТЫ в виде периодов. / 9 сообщений из 9, страница 1 из 1
23.05.2009, 18:29
    #36003510
IrinaМ1403
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Подскажите, пожалуйста, как вывести из таблицы ДАТЫ в виде периодов.
Например, есть даты:
20081201
20090101
20090201
20090301
20090401
20090601
20090701
20090901
20091101
Нужно вывести в следующем виде: декабрь 08-апрель 09, июнь 09-июль 09, сентябрь 09, ноябрь 09
...
Рейтинг: 0 / 0
23.05.2009, 18:36
    #36003513
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
То что вы показываете - не очень-то и даты, скорее результат функции dtos()Что должно получиться в приведенном случае? декабрь 08-ноябрь 09
...
Рейтинг: 0 / 0
23.05.2009, 18:44
    #36003520
IrinaМ1403
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Dag,

На входе месяца задолженностей клиентов, а на выходе запись в отчете в таком виде по каждому клиенту.
...
Рейтинг: 0 / 0
23.05.2009, 19:20
    #36003536
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Нечто типа этого
Код: 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.
sele  dtos(date_r) as cdate, xpMonthru(MONTH(date_r)) as mes, SUBSTR(ALLTRIM(STR(year(date_r))), 3 , 2 ) as god from dolgi into cursor tmpDolg where id_Dolgnika==[ид должника] order by cdate

IF Tally> 0 
go top in tmpDolg
lcNachalo=alltrim(mes)+' '+god
go bottom in tmpDolg
lcKonez=alltrim(mes)+' '+god
IF lcNachalo==lcKonez
lcRetVal=lcNachalo
else
lcRetVal=lcNachalo+" - "+lcKonez
endif
endif
wait wind lcRetVal

PROCEDURE xpMonthru
LPARAMETERS N
local s
STORE '' TO s
DO CASE
CASE N= 1 
	s='январь'
CASE N= 2 
	s='февраль'
CASE N= 3 
	s='март'
CASE N= 4 
	s='апрель'
CASE N= 5 
	s='май'
CASE N= 6 
	s='июнь'
CASE N= 7 
	s='июль'
CASE N= 8 
	s='август'
CASE N= 9 
	s='сентябрь'
CASE N= 10 
	s='октябрь'
CASE N= 11 
	s='ноябрь'
CASE N= 12 
	s='декабрь'
ENDCASE
RETURN PADL(s, 8 ,SPACE( 1 ))
endproc

...
Рейтинг: 0 / 0
23.05.2009, 20:01
    #36003561
IrinaМ1403
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Dag,

Большое спасибо!!! Буду пробовать.
...
Рейтинг: 0 / 0
23.05.2009, 21:10
    #36003613
IrinaМ1403
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Dag,

Попробовала- все хорошо, но проблема в том, что охватывает полностью весь период
декабрь 08-ноябрь 09, а периодов несколько, т.к. отсутствует май и август. Должно получиться следующее: "декабрь 08-апрель 09, июнь 09-июль 09, сентябрь 09, ноябрь 09", а не "декабрь 08-ноябрь 09". Спасибо.
...
Рейтинг: 0 / 0
24.05.2009, 00:35
    #36003721
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Код: 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.
*********************************************************************
Local lcMonth As String, lcWord As String, lcYear As String, lnValueFinish As Number,;
lnValuePeriod As Number, lnValueStart As Number  lnDecimals
lnDecimals=Set("Decimals" )
Set Decimals To  0 
*sele distinct SUBSTR(dtos(date_r), 1 , 6 ) as ddate from dolgi into cursor tmpDolg where id_Dolgnika==[ид должника] order by ddate
Select Distinct Val(Substr(Dtos(date_r), 1 , 6 )) As ddate From sert Into Cursor tmpDolg Order By ddate
 
If _Tally> 0 
	Go Top In tmpDolg
	lcWord=Space( 0 )

	Do While .Not.Eof()
		lnValueStart=ddate
		lnValueFinish=ddate
		lnValuePeriod=lnValueFinish
		Do While (lnValueFinish-lnValuePeriod < 2 ) and not eof()
			lnValuePeriod=lnValueFinish
			Skip
			lnValueFinish=ddate
		Enddo
		lcYear=Substr(Alltrim(Str(lnValueStart)), 3 , 2 )
		lcMonth=xpMonthru(Val(Substr(Alltrim(Str(lnValueStart)), 5 , 2 )))
		lcWord=lcWord+", "+lcMonth+" "+lcYear

		If 	lnValueStart!=lnValuePeriod
			lcYear=Substr(Alltrim(Str(lnValuePeriod)), 3 , 2 )
			lcMonth=xpMonthru(Val(Substr(Alltrim(Str(lnValuePeriod)), 5 , 2 )))
			lcWord=lcWord+" - "+lcMonth+" "+lcYear
		Endif
	Enddo
lcWord=substr(lcWord, 3 )
Endif

Set Decimals To (lnDecimals)
Wait window lcWord

...
Рейтинг: 0 / 0
24.05.2009, 00:58
    #36003736
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Или поточнее так.
Код: 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.
Local lcMonth As String, lcWord As String, lcYear As String, lnValueFinish As Number,;
lnValuePeriod As Number, lnValueStart As Number, lnDecimals As Number
lnDecimals=Set("Decimals" )
Set Decimals To  0 
Select Distinct Val(Substr(Dtos(date_r), 1 , 6 )) As ddate From dolgi Into Cursor tmpDolg;
Where id_Dolgnika==[ид должника] Order By ddate

If _Tally> 0 
	Go Top In tmpDolg
	lcWord=Space( 0 )

	Do While .Not.Eof()
		lnValueStart=ddate
		lnValueFinish=ddate
		lnValuePeriod=lnValueFinish
		Do While Inlist(lnValueFinish-lnValuePeriod, 0 , 1 , 89 ) And Not Eof()
			lnValuePeriod=lnValueFinish
			Skip
			lnValueFinish=ddate
		Enddo
		lcYear=Substr(Alltrim(Str(lnValueStart)), 3 , 2 )
		lcMonth=xpMonthru(Val(Substr(Alltrim(Str(lnValueStart)), 5 , 2 )))
		lcWord=lcWord+", "+lcMonth+" "+lcYear

		If 	lnValueStart!=lnValuePeriod
			lcYear=Substr(Alltrim(Str(lnValuePeriod)), 3 , 2 )
			lcMonth=xpMonthru(Val(Substr(Alltrim(Str(lnValuePeriod)), 5 , 2 )))
			lcWord=lcWord+" - "+lcMonth+" "+lcYear
		Endif
	Enddo
	lcWord=Substr(lcWord, 3 )
Endif

Set Decimals To (lnDecimals)
Wait Wind lcWord
Процедура xpMonthru из предыдущего поста естественно присутствует.
...
Рейтинг: 0 / 0
24.05.2009, 12:32
    #36003893
IrinaМ1403
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести из таблицы ДАТЫ в виде периодов.
Да, теперь всё красиво получилось. Спасибо за помощь!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вывести из таблицы ДАТЫ в виде периодов. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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