![]() |
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум | ![]() |
![]() |
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
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 ************************************************Алексей. ![]() |
||
© 2000-2018 Fox Club  |