for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

CursorAdapter: Авто-рефреш полей во время TABLEUPDATE.
Aleksey Tsingauz [MSFT]
Гость
Автор
Дата: 17.06.04 11:25:51ОтветитьЦитировать
Доброе утро/день/вечер!

Одно из новшеств 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: 33 ssa  and Guests: 32


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