powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с датой в запросе.
5 сообщений из 5, страница 1 из 1
Проблема с датой в запросе.
    #36327586
Demy85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Возможно кто знает как правильно написать запрос в следующем коде:

Код: 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.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
SET EXCLUSIVE OFF
SET MULTILOCKS ON 
SET DELETED ON
CLOSE DATABASES ALL

CLEAR 

IF NOT FILE('TestTable.dbf')

	CREATE DBF TestTable (        ;
		Id_Doc   Integer AUTOINC, ;
		Time_Doc DateTime,        ;
		Type_Doc Integer          ;
	)
	
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('01.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('02.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('03.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('04.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('05.01.2009 00:00:00'),  1 )
	
	USE 
	
ENDIF && NOT FILE

oCA=CREATEOBJECT('CTest')

IF !oCA.AutoOpen()    
	AERROR(aerrs)  
	DISPLAY MEMORY LIKE aerrs  
	RETURN   
ENDIF && !oCA.AutoOpen()
  
BROWSE NORMAL    

DEFINE CLASS CTest AS CursorAdapter 
	
	Alias              = 'TestTable'
	DataSourceType     = 'ADO'
	CursorSchema       = 'Id_Doc I, Time_Doc T, Type_Doc I'
	Tables             = 'TestTable'

	SelectCmd =                                      ;
	'SELECT Id_Doc, Time_Doc, Type_Doc'            + ; 
	'FROM TestTable'                               + ;
	'WHERE Time_Doc > CTOT("03.01.2009 00:00:00")' && Здесь возникает проблема
    
	PROCEDURE Init	
		LOCAL llReturn
		DO CASE 
			CASE not PEMSTATUS(This, '__VFPSetup',  5 )
				This.AddProperty('__VFPSetup',  0 )
			CASE This.__VFPSetup =  1 
				This.__VFPSetup =  2 
			CASE This.__VFPSetup =  2 
				This.__VFPSetup =  0 
				RETURN 
		ENDCASE 

		SET MULTILOCKS ON 
		llReturn = DODEFAULT()

		LOCAL loConnDataSource
		loConnDataSource = CREATEOBJECT('ADODB.Connection')
		loConnDataSource.Open(                      ;
			'Provider=VFPOLEDB.1;'            + ;
			'Data Source=C:\Test;'            + ;
			'Mode=ReadWrite|Share Deny None;' + ;
			'Password="";'                    + ;
			'Collating Sequence=MACHINE;'       ;
		)

		This.DataSource = CREATEOBJECT('ADODB.RecordSet')
		This.DataSource.CursorLocation   =  3   && adUseClient
		This.DataSource.LockType         =  3   && adLockOptimistic
		This.DataSource.ActiveConnection = loConnDataSource

		IF This.__VFPSetup =  1 
			This.__VFPSetup =  2 
		ENDIF 

		RETURN llReturn
	ENDPROC && Init
	
	PROCEDURE AutoOpen
		IF NOT PEMSTATUS(This, '__VFPSetup',  5 )
			This.AddProperty('__VFPSetup',  1 )
			This.Init()
		ENDIF 
	ENDPROC && AutoOpen
	
ENDDEFINE && DEFINE CLASS CTest

Если использовать запрос без проверки даты, то все выводится как надо.
Код: plaintext
1.
2.
3.
4.
SelectCmd =                                      ;
'SELECT Id_Doc, Time_Doc, Type_Doc'            + ; 
'FROM TestTable'                               + ;
'WHERE Type_Doc = 2' && Проблемы не возникает.
...
Рейтинг: 0 / 0
Проблема с датой в запросе.
    #36327638
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
oCA=CREATEOBJECT('CTest')

private pdDate
pdDate = ctod("03.01.2009")
IF !oCA.AutoOpen()    
	AERROR(aerrs)  
	DISPLAY MEMORY LIKE aerrs  
	RETURN   
ENDIF && !oCA.AutoOpen()

...

SelectCmd =                                      ;
	'SELECT Id_Doc, Time_Doc, Type_Doc'            + ; 
	'FROM TestTable'                               + ;
	'WHERE Time_Doc > ?pdDate'

...
Рейтинг: 0 / 0
Проблема с датой в запросе.
    #36327682
Demy85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимоесли так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
oCA=CREATEOBJECT('CTest')

private pdDate
pdDate = ctod("03.01.2009")
IF !oCA.AutoOpen()    
	AERROR(aerrs)  
	DISPLAY MEMORY LIKE aerrs  
	RETURN   
ENDIF && !oCA.AutoOpen()

...

SelectCmd =                                      ;
	'SELECT Id_Doc, Time_Doc, Type_Doc'            + ; 
	'FROM TestTable'                               + ;
	'WHERE Time_Doc > ?pdDate'



Так тоже не получается.
...
Рейтинг: 0 / 0
Проблема с датой в запросе.
    #36327688
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем там АДО и использование оле провайдера?

все проще с родными табличками
Код: 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.
SET EXCLUSIVE OFF
SET MULTILOCKS ON 
SET DELETED ON
CLOSE DATABASES ALL

CLEAR 

IF NOT FILE('TestTable.dbf')

	CREATE DBF TestTable (        ;
		Id_Doc   Integer AUTOINC, ;
		Time_Doc DateTime,        ;
		Type_Doc Integer          ;
	)
	
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('01.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('02.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('03.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('04.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('05.01.2009 00:00:00'),  1 )
	
	USE 
	
ENDIF && NOT FILE

oCA=CREATEOBJECT('CTest')
Private pdDate
pdDate = Ctod("03.01.2009")
IF !oCA.cursorfill()  
	AERROR(aerrs)  
	DISPLAY MEMORY LIKE aerrs  
	Return
Else
	Select MyAlias
	brow
ENDIF && !oCA.AutoOpen()
Return   
   

DEFINE CLASS CTest AS CursorAdapter 
	
	Alias              = 'MyAlias'
	DataSourceType     = "Native"
	CursorSchema       = 'Id_Doc I, Time_Doc T, Type_Doc I'
	Tables             = 'TestTable'
	WhereType =  4 
	ConflictCheckType =  1 
	KeyFieldList = "Id_Doc"
	SelectCmd =  'SELECT Id_Doc, Time_Doc, Type_Doc ' + ;
	'FROM TestTable ' + ;
	'where Time_Doc>pdDate' 
	
ENDDEFINE && DEFINE CLASS CTest
...
Рейтинг: 0 / 0
Проблема с датой в запросе.
    #36327742
Demy85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимозачем там АДО и использование оле провайдера?

все проще с родными табличками
Код: 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.
SET EXCLUSIVE OFF
SET MULTILOCKS ON 
SET DELETED ON
CLOSE DATABASES ALL

CLEAR 

IF NOT FILE('TestTable.dbf')

	CREATE DBF TestTable (        ;
		Id_Doc   Integer AUTOINC, ;
		Time_Doc DateTime,        ;
		Type_Doc Integer          ;
	)
	
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('01.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('02.01.2009 00:00:00'),  1 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('03.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('04.01.2009 00:00:00'),  2 )
	INSERT INTO TestTable (Time_Doc, Type_Doc) VALUES(CTOT('05.01.2009 00:00:00'),  1 )
	
	USE 
	
ENDIF && NOT FILE

oCA=CREATEOBJECT('CTest')
Private pdDate
pdDate = Ctod("03.01.2009")
IF !oCA.cursorfill()  
	AERROR(aerrs)  
	DISPLAY MEMORY LIKE aerrs  
	Return
Else
	Select MyAlias
	brow
ENDIF && !oCA.AutoOpen()
Return   
   

DEFINE CLASS CTest AS CursorAdapter 
	
	Alias              = 'MyAlias'
	DataSourceType     = "Native"
	CursorSchema       = 'Id_Doc I, Time_Doc T, Type_Doc I'
	Tables             = 'TestTable'
	WhereType =  4 
	ConflictCheckType =  1 
	KeyFieldList = "Id_Doc"
	SelectCmd =  'SELECT Id_Doc, Time_Doc, Type_Doc ' + ;
	'FROM TestTable ' + ;
	'where Time_Doc>pdDate' 
	
ENDDEFINE && DEFINE CLASS CTest

Огромное спасибо :). Все работает.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с датой в запросе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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