方法:
(A)在公司端, 比較源表src和目標(biāo)表dst:
  (1)源表src中記錄在目標(biāo)表dst不存在的記錄加入刪除標(biāo)記寫入查詢
     DeleteSQL='select 2 as AowStatA,dst.* from dst right join src on (dst.所有字段=src.所有字段) where src.第一個(gè)字段 is null';
  (2)目標(biāo)表src中記錄在源表dst不存在的記錄加入新增標(biāo)記寫入查詢
     InsertSQL='select 4 as AowStatA,src.* from src left  join dst on (src.所有字段=dst.所有字段) where dst.第一個(gè)字段 is null';
  (3)對(duì)上面兩個(gè)查詢結(jié)果用 PRovider.GetRecords 分別得到 一個(gè) OleVariant ,轉(zhuǎn)換為 string 寫入xml文件:
       分別刪除<FIELD attrname="AowStatA" fieldtype="r8"/> 接點(diǎn),然后合并兩XML文件,再把“AowStatA”該為“RowState”.
       得到一個(gè)數(shù)據(jù)補(bǔ)丁(XML文件).
  (4)數(shù)據(jù)補(bǔ)丁(XML文件)中一行 <PARAMS ... /> 該為 <PARAMS DATASET_DELTA="1" MD_SEMANTICS="3"/>
 
(B)在客戶端,收到數(shù)據(jù)補(bǔ)丁(XML文件)后對(duì)源表src進(jìn)行以下操作:
  (1)數(shù)據(jù)補(bǔ)丁(XML文件)作為 string 讀出,并轉(zhuǎn)換為 OleVariant .
  (2)源表src對(duì)應(yīng)的 Provider 執(zhí)行 applyUpdates() 方法. 
(C) 注意: :
    (1) 如表結(jié)構(gòu)改變了,在客戶端先按新結(jié)構(gòu)創(chuàng)建一個(gè)新表,
        并對(duì)已存在字段源表src中的數(shù)據(jù)全部導(dǎo)入新表,再進(jìn)行 (B) 操作
    (2) Paradox庫 的 SQL 例:
       select "zzj.db".*,"tmp.db".* from zzj.db inner join tmp.db    //表名用雙引號(hào) 
       on "zzj.db".keyf="tmp.db".keyf where 1=2                      // 不能用 where false
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注