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

На входе месяца задолженностей клиентов, а на выходе запись в отчете в таком виде по каждому клиенту.
...
Рейтинг: 0 / 0
Как вывести из таблицы ДАТЫ в виде периодов.
    #36003536
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
Как вывести из таблицы ДАТЫ в виде периодов.
    #36003561
IrinaМ1403
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dag,

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

Попробовала- все хорошо, но проблема в том, что охватывает полностью весь период
декабрь 08-ноябрь 09, а периодов несколько, т.к. отсутствует май и август. Должно получиться следующее: "декабрь 08-апрель 09, июнь 09-июль 09, сентябрь 09, ноябрь 09", а не "декабрь 08-ноябрь 09". Спасибо.
...
Рейтинг: 0 / 0
Как вывести из таблицы ДАТЫ в виде периодов.
    #36003721
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
Как вывести из таблицы ДАТЫ в виде периодов.
    #36003736
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
Как вывести из таблицы ДАТЫ в виде периодов.
    #36003893
IrinaМ1403
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, теперь всё красиво получилось. Спасибо за помощь!!!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вывести из таблицы ДАТЫ в виде периодов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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