powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / функции системной даты
16 сообщений из 16, страница 1 из 1
функции системной даты
    #35890774
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно организовать БД в которой будет происходить отсчет времени до определенной даты. (БД должников).
ВОПРОС:
Как можно это организовать?
Заранее спасибо.
...
Рейтинг: 0 / 0
функции системной даты
    #35890870
homik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://forum.foxclub.ru/read.php?32,177182,321849#msg-321849
...
Рейтинг: 0 / 0
функции системной даты
    #35890915
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
огромное спасибо - теперь розберусь
...
Рейтинг: 0 / 0
функции системной даты
    #35903886
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже решил сразу же написать функции
только не пойму, на минутах выдает 0, хоть ты тресни

? datediff('minute',DATETIME(2009,03,31),DATETIME())

Секунды, часы, дни, недели, месяцы, кварталы и года отрабатывают нормально.
вот же меня уже как глючить стало, ноне могу найти, в чем собака порылась.
Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
**********************
*как одноименная в t_SQL
***********************
FUNCTION dateDiff
PARAMETERS lcEdinica,ldstrDate, ldDate
*year | quarter | month | week | day | hour | minute | second |
LOCAL lnReturn as Integer 
lnReturn= 0 
ldTmpDate=ldstrDate
IF !((VARTYPE(ldDate)='D' AND VARTYPE(ldstrDate)='D') OR (VARTYPE(ldDate)='T' AND VARTYPE(ldstrDate)='T')) OR ldstrDate > ldDate 
	MESSAGEBOX('Неверный параметр')
	RETURN lnReturn
ENDIF 
IF VARTYPE(ldstrDate)='D'
	DO CASE
		CASE INLIST(lcEdinica,'year','yy','yyyy')
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn* 12 )
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'quarter','qq', 'q')	
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn* 3 )
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'month','mm','m')
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn)
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'week','ww','wk') 
			lnReturn=INT((ldDate-ldstrDate)/ 7 )
		CASE INLIST(lcEdinica,'day','dd','d')
			lnReturn=ldDate-ldstrDate	
		OTHERWISE 
			MESSAGEBOX('Неверный параметр')	
	ENDCASE
ELSE 	
	DO CASE
		CASE INLIST(lcEdinica,'year','yy','yyyy')
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn* 12 )
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'quarter','qq', 'q')	
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn* 3 )
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'month','mm','m')
			DO WHILE ldTmpDate =< ldDate
				lnReturn=lnReturn+ 1 
				ldTmpDate=GOMONTH(ldstrDate,lnReturn)
			ENDDO 
			lnReturn=lnReturn- 1 
		CASE INLIST(lcEdinica,'week','ww','wk') 
			lnReturn=INT((ldDate-ldStrDate)/ 604800 )
		CASE INLIST(lcEdinica,'day','dd','d')
			lnReturn=INT((ldDate-ldStrDate)/ 86400 )					
		CASE INLIST(lcEdinica,'hour','hh')	
			lnReturn=INT((ldDate-ldStrDate)/ 3600 )
		CASE INLIST(lcEdinica,'minute','mi','n')	
			lnReturn=INT((ldDate-ldStrDate)/ 60 )	
		CASE INLIST(lcEdinica,'second','ss','s')	
			lnReturn=ldDate-ldStrDate
		OTHERWISE 
			MESSAGEBOX('Неверный параметр')	
	ENDCASE 	
ENDIF 
RETURN 	lnReturn
ENDFUNC
...
Рейтинг: 0 / 0
функции системной даты
    #35904118
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включаешь отладчик, проходишь процедуру по шагам и видишь, что у тебя сработает сравнение для месяца (!)

Код: plaintext
CASE INLIST(lcEdinica,'month','mm','m')

Почему? По той причине, что по умолчанию, используется настройка

SET EXACT OFF

т.е. выполняется сравнение до истечения символов в правой части оператора сравнения. В данном случае

Код: plaintext
'minute' = 'm'

Чтобы этого избежать надо установить точное сравнение

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
* Установка настроек
LOCAL lcExact
lcExact = SET("EXACT")
SET EXACT ON

(выполнение сравнения)

* Восстановление настроек
IF m.lcExact = "OFF"
	SET EXACT OFF
ENDIF
...
Рейтинг: 0 / 0
функции системной даты
    #35904123
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, можно еще делать дополнение пробелами справа

Код: plaintext
1.
2.
lcEdinica = PADR(m.lcEdinica,  10 )

CASE INLIST(lcEdinica,PADR('month', 10 ),PADR('mm', 10 ),PADR('m', 10 ))

Т.е. привести все строки к одинаковой длине. Тогда настройка SET EXACT роли не играет
...
Рейтинг: 0 / 0
функции системной даты
    #35904160
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вот что значит свежая голова :-)
...
Рейтинг: 0 / 0
функции системной даты
    #35953615
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни спасибо. Просьба я роботаю с построителями и конструкторми и даже не знаю что с готовым вашим кодом делать? куда его впысывать?
Подскажите плыз или укажите место где об этом доступно написано.
Ещё раз спс.
...
Рейтинг: 0 / 0
функции системной даты
    #35964236
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так как мне организовать этот код и куда его прописать чтобы он заработал.
Понимаю что тупой вопрос, но никак не могу розобратся.
...
Рейтинг: 0 / 0
функции системной даты
    #35964820
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, очень уж вас замедленная реакция: задали вопрос, а реакция на ответ - через месяц. Стоит ли вообще что-то объяснять?

Во-вторых, вы так и не написали, что же вы хотите получить в результате? Что означает фраза "происходить отсчет времени?" Пользователь включил приложение, а у него на экране часы с обратным отсчетом? Не так? А как? ЧТО должно происходить? Какие действия вы ожидаете от приложения?
...
Рейтинг: 0 / 0
функции системной даты
    #35965909
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Извеняюсь за поздний ответ.
Делаю правильную формулировку задания (надеюсь).
У меня есть база даных в которой хранится информация о людях которые обращаются в организацию. Их обращения болжны быть розсмотрены до определённой даты, мне нужно что бы за 5 дней до этой даты было какоето напоминание.
Вобщем нужно что бы в любой момент можно было посмотреть записи обращений до окончания розсмотрения которых осталось 5 и меньше дней.
Если что-то непонятно пишите, обещаю что отвечу в этот же день.
Спасибо.
...
Рейтинг: 0 / 0
функции системной даты
    #35965933
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDoom,

Есть таблица запросов населения с датами срока выдачи ответа

Разница даты срока выдачи и текущей даты даст Вам оставшийся срок выполнения
...
Рейтинг: 0 / 0
функции системной даты
    #35965936
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо,но этоя знаю меня интересует сама реализация.
Как это можно реализовать?.
...
Рейтинг: 0 / 0
функции системной даты
    #35965939
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashk,

Спасибо, но это я знаю.
Меня интересует как можно это организовать?.
...
Рейтинг: 0 / 0
функции системной даты
    #35965985
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDoomУ меня есть база даных в которой хранится информация о людях которые обращаются в организацию. Их обращения болжны быть розсмотрены до определённой даты, мне нужно что бы за 5 дней до этой даты было какоето напоминание.
Вобщем нужно что бы в любой момент можно было посмотреть записи обращений до окончания розсмотрения которых осталось 5 и меньше дней.
Если что-то непонятно пишите, обещаю что отвечу в этот же день.
Спасибо.
Задача формулируется так:

Есть таблица с полем типа дата (не позднее какого числа должно быть рассмотрено). Надо отобрать записи, значение даты в которых отстоит от текущей даты не более, чем на 5 дней. При этом надо исключить из рассмотрения записи, которые имеют признак "рассмотрено".

Текущая дата - это функция Date(). Разница двух дат - это количество дней. Таким образом, условие отбора тривиальное

Код: plaintext
SELECT ... FROM ... WHERE "Крайний_Срок_Рассмотрения" - date() <=  5  AND "не_рассмотрено"

Кстати, в эту выборку попадут и просроченные записи. Срок рассмотрения которых уже прошел. Поскольку разница с текущей датой даст отрицательное значение, которое также меньше 5.

Далее делаешь кнопку на форме, по нажатию на которую и выводишь результат подобного запроса. Или при открытии приложения. Или как сам придумаешь...
...
Рейтинг: 0 / 0
функции системной даты
    #35966029
AlexDoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, проверил - работает.
У меня есть следующая просьба:
Вот мой запрос
SELECT піб FROM головна WHERE дата_надходження - DATE() <=5
Как организовать вывод піб на форму в любой элемент (мне всё равно,там Memo, Edit...)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / функции системной даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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