:: Visual Foxpro, Foxpro for DOS
CursorAdapter: Авто-рефреш полей во время TABLEUPDATE.
Aleksey Tsingauz [MSFT]
Автор
Доброе утро/день/вечер!

Одно из новшеств VFP9 - поддержка авто-рефреша полей во время явнового или неявного TABLEUPDATE для CursorAdapter-а.
Можно конфигурировать какие поля должны быть рефрешнуты, как искать запись на сервере и, при желании, задать свою команду для поиска.

Вот простенький пример:
**************************************
CLOSE DATABASES all
SQLDISCONNECT(0)
CLEAR
SET MULTILOCKS ON
LOCAL nAutoRefreshConn as Integer
* Change connection string to connect to a different SQL Server
nAutoRefreshConn=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;")
IF (nAutoRefreshConn <1)
? "Failed to connect!"
AERROR(aerrs)
DISPLAY MEMORY LIKE aerrs
return
ENDIF
TEXT TO cSQL NOSHOW
CREATE TABLE #CAAutoRefreshDemo
(
f0 int NOT NULL IDENTITY PRIMARY KEY,
f1 int NOT NULL UNIQUE,
f2 varchar(10) NULL DEFAULT '00000',
f3 timestamp
)
ENDTEXT
IF SQLEXEC(nAutoRefreshConn ,cSQL)!=1
? "Failed to create demo table!"
AERROR(aerrs)
DISPLAY MEMORY LIKE aerrs
ENDIF
SQLEXEC(nAutoRefreshConn ,"INSERT INTO #CAAutoRefreshDemo (f1,f2) values (1,'demo1')")
SQLEXEC(nAutoRefreshConn ,"INSERT INTO #CAAutoRefreshDemo (f1,f2) values (2,'demo2')")
oCA=CREATEOBJECT("CAAutoRefreshDemo")
?oCA.AutoOpen()
SELECT CATest
INSERT INTO CATest (f1,f2) values (3,'demo3')
INSERT INTO CATest (f1,f2) values (4,'demo4')
GO RECNO()
MESSAGEBOX("Unique F1 should be entered for new records.",0)
BROWSE
SQLDISCONNECT(nAutoRefreshConn )
return
DEFINE CLASS CAAutoRefreshDemo AS CursorAdapter
Alias = "CATest"
DataSource= nAutoRefreshConn
DataSourceType="ODBC"
MapBinary= .T.
MapVarchar= .T.
SelectCmd="select * from #CAAutoRefreshDemo"
FetchMemo= .T.
Tables="#CAAutoRefreshDemo"
KeyFieldList="f0"
UpdatableFieldList="f1,f2"
UpdateNameList="f1 #CAAutoRefreshDemo.f1, f2 #CAAutoRefreshDemo.f2, "+ ;
"f3 #CAAutoRefreshDemo.f3, f0 #CAAutoRefreshDemo.f0"
TimestampFieldList="f3"
&& automatically refresh Timestamp field after each Insert/Update
RefreshTimestamp= .T.
&& automatically refresh IDENTITY field and f2 field after Insert
InsertCmdRefreshFieldList="f0,f2"
&& use alternative key to refresh fields after Insert as we don't know
&& the value for f0 (IDENTITY)
InsertCmdRefreshKeyFieldList="f1"
WhereType=4 && DB_KEYANDTIMESTAMP
ConflictCheckType= 3
ENDDEFINE
************************************************
Алексей.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 17 (Гостей: 17)

© 2000-2023 Fox Club 
Яндекс.Метрика