在Delphi中利用Tbatch元件完成資料批處理

2021-05-23 14:48:12 字數 2602 閱讀 4989

(1)將 一 個 數 據 集 中 的 數 據 追 加 到 一 個 表 中。. 

(2)從 一 個 表 中 刪 除 滿 足 條 件 的 記 錄。 

(3)按 舊 表 結 構 生 成 一 個 新 表, 若 欲 生 成 的 新 表 已 存 在, 則 覆 蓋。 

具 體 的 操 作 要 通 過 設 置tbatchmove 的mode 屬 性 後 再 調 用execute 方 法 來 完 成。 為 舉 例 說 明 問 題, 我 們 在 別 名 數 據 庫dbdemos 中 先 創 建 兩 個dbase 格 式 的 表test1.dbf 和test2.dbf。 二 者 的 結 構 如 下 表:

test1.dbf         test2.dbf

namec 10 

namec 10

code c 3 code c 3

其 中 表test2.dbf 在 字 段code 上 建 立 有 唯 一 索 引。 同 時 假 設 表 單 中 已 有 兩 個table 控 件tsource 和tdest 和 一 個tbatchmove 組 件batchmove1。tsource 和tdest 的databasename 屬 性 均 設 為dbdemos。batchmove1 的source 屬 性 設 為tsource,destination 屬 性 設 為tdest。 

在 使 用tbatchmove 組 件 時, 必 須 牢 記: 所 有 的 操 作 都 是 以 源 表 為 標 準 針 對 目 的 表 進 行 的, 下 面 就 分 別 舉 例 說 明tbatchmove 的 各 種 操 作 模 式: 

batchmove1.source=tsource; 

batchmove1.destination=tdest2 ; 

batchmove1.execute; 

(2)batupdate 更 新 模 式 用 源 表 中 匹 配 目 的 表 的 記 錄 替 換 目 的 表 中 的 相 應 記 錄。 目 的 表 必 須 事 先 存 在 且 有 一 已 定 義 的 索 引 用 來 匹 配 源 表 中 的 記 錄。 

tdest.indexfieldnames:='code'; 

batchmove1.source=tsource; 

batchmove1.destination=tdest ; 

batchmove1.mode:=batupdate; 

batchmove1.execute; 

tdest.indexfieldnames:='code'; 

batchmove1.source=tsource; 

batchmove1.destination=tdest ; 

batchmove1.execute; 

(4)batcopy 拷 貝 模 式 按 源 表 結 構 生 成 新 表, 源 表 中 的 數 據 同 時 拷 貝 到 目 的 新 表 中。 如 果 要 生 成 的 新 表 已 存 在, 則 覆 蓋。 

// 按test1.dbf 生 成 新 表***.dbf 

// 如 果 不 指 定 擴 展 名dbf, 生 成 的 新 表 將 是paradox 格 式 的***.db。 

tdest.tablename:='***.dbf'; 

batchmove1.source=tsource; 

batchmove1.destination=tdest ; 

batchmove1.mode:=batcopy; 

batchmove1.execute; 

(5)batdelete 刪 除 模 式 刪 除 目 的 表 中 與 源 表 匹 配 的 記 錄。 目 的 表 必 須 事 先 存 在 且 有 一 已 定 義 的 索 引 用 來 匹 配 源 表 中 的 記 錄。 

tdest.indexfieldnames:='code'; 

batchmove1.source=tsource; 

batchmove1.destination=tdest ; 

batchmove1.mode:=batdelete; 

batchmove1.execute; 

tbatchmove 還 有 一 個 重 要 屬 性changedtablename, 在 實 際 運 用 中, 通 過 指 定changedtablename 屬 性 可 以 創 建 一 個paradox 表, 該 表 用 來 保 存 目 的 表 中 被 更 改 數 據 的 原 始 備 份, 有 了 這 個 備 份 表 就 可 以 確 保 恢 復 目 的 表 中 的 數 據。 

順 便 提 一 句, 如 果 要 刪 除 某 一 個 表 中 的 全 部 記 錄, 可 以 採 用table 組 件 的emptytable 方 法, 例 如tdest.emptytable 將 清 空tdest 所 指 定 的 表test2.dbf。 

本 文 中 是 以 同 構 的dbf 表 進 行 的 示 例, 在 實 際 運 用 中, 源 表 和 目 的 表 可 能 同 購, 也 可 能 異 構, 異 構 時,delphi 的bde 會 自 動 進 行 類 型 和 長 度 上 的 轉 換, 具 體 類 型 間 的 關 系 可 以 有 關bde 的 幫 助。 本 文 中 各 種 操 作 模 式 的 實 際 結 果 均 可 以 從delphi 的database desktop 中 查 看 到

在DELPHI中利用ADO元件訪問資料庫的步驟

今天我在delphi中利用ado元件成功連線了資料庫,下面是一般步驟 1.新建工程 2.在窗體中新增tadoconnection元件,並設定其connectionstring屬性,以便連線資料庫。3.新增tadotable元件,並設定其connection屬性為adoconnection1.從tab...

在Delphi中操作Mysql

以前在vc中使用過mysql,當時是找的乙個現成的c mysql類。最近在delphi中又需要操作mysql,最初找了個封閉過的類,但已經是七八年以前的程式了,我機器上裝的是mysql5.1,使用了5.1中的libmysql.dll 2.25mb 連線正常 查詢乙個字段正常,但查詢兩個欄位就只能獲取...

關於 delphi中with在Python中的討論

下面這段是我昨天在python乙個討論群裡對delphi中with在python中的討論,希望能對大家有所啟發,同時我也將這個討論記錄下來,有時間多體會體會。不要小看這段,最後 seewind 說的話很經典。江南 23 46 27 其實 我覺得是想找 python中類似 delphi 的 with ...