全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:240
推到 Plurk!
推到 Facebook!

datasnap 如何觸發 tirgger 的功能

尚未結案
P.D.
版主


發表:553
回覆:3820
積分:3605
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-02-02 15:49:48 IP:59.120.xxx.xxx 未訂閱
請問各位

我的 server 端是搭 FireBird 2.x版資料庫, 使用 ClientDataSet(cds) 透過DataSanp 連結到工作端的電腦,
而在我的 xxx.gdb(Server端)的 Table 內含一個Trigger 的設定, 以往使用 IBX 元件可以指定IBQuery 要觸發的 Trigger name
但前端使用 cds 連 FB 時, 有沒有什麼方法可以在
ClientDataSet1.Append 時去觸發該 gdb 的 Trigger(這個Trigger 是 FireBird 自動累加序號的function),
而不用再寫另一個 Query 來取得 FB Trigger 自動產生出來的值?

謝謝!
leveon
資深會員


發表:29
回覆:381
積分:292
註冊:2012-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-02-05 20:04:18 IP:220.132.xxx.xxx 未訂閱
只能自己想辦法取值

http://docwiki.embarcadero.com/Libraries/Seattle/en/Data.DB.TDataSet.OnNewRecord

OnNewRecord 可能是個時機點




===================引 用 P.D. 文 章===================
請問各位

我的 server 端是搭 FireBird 2.x版資料庫, 使用 ClientDataSet(cds) 透過DataSanp 連結到工作端的電腦,
而在我的 xxx.gdb(Server端)的 Table 內含一個Trigger 的設定, 以往使用 IBX 元件可以指定IBQuery 要觸發的 Trigger name
但前端使用 cds 連 FB 時, 有沒有什麼方法可以在
ClientDataSet1.Append 時去觸發該 gdb 的 Trigger(這個Trigger 是 FireBird 自動累加序號的function),
而不用再寫另一個 Query 來取得 FB Trigger 自動產生出來的值?

謝謝!
P.D.
版主


發表:553
回覆:3820
積分:3605
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2017-02-11 21:07:42 IP:118.169.xxx.xxx 未訂閱
感謝 leveon 指導, 但這個方法並不能對 trigger 觸發事件, 可能只能自己再寫一段取值去找出最大號再手動填入了!
leveon
資深會員


發表:29
回覆:381
積分:292
註冊:2012-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2017-02-12 13:17:24 IP:220.132.xxx.xxx 未訂閱
基本上 這是基於你的提問做的回答
"ClientDataSet1.Append 時去觸發該 gdb 的 Trigger"


Function GetNO:string;
begin
result := 自己取回序號;
end;


procedure TForm1.ClientDataSet1NewRecord(DataSet: TDataSet);
begin
DataSet.fieldbyname('NO').asstring := GetNO;
end;

當ClientDataSet1.Append 時 便會觸發Clientdataset 上的OnNewRecord事件
並且填入序號

如果你試不行 或這不是你要的 你應該詳述你想要的效果才有辦法討論





===================引 用 P.D. 文 章===================
感謝 leveon 指導, 但這個方法並不能對 trigger 觸發事件, 可能只能自己再寫一段取值去找出最大號再手動填入了!
P.D.
版主


發表:553
回覆:3820
積分:3605
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2017-02-13 12:42:22 IP:59.120.xxx.xxx 未訂閱
感謝提供方法, 我先試著做看看, 如果還是不行, 再把整個trigger 的過程發上來, 謝謝!
===================引 用 leveon 文 章===================
基本上 這是基於你的提問做的回答
"ClientDataSet1.Append 時去觸發該 gdb 的 Trigger"


Function GetNO:string;
begin
result := 自己取回序號;
end;


procedure TForm1.ClientDataSet1NewRecord(DataSet: TDataSet);
begin
DataSet.fieldbyname('NO').asstring := GetNO;
end;

當ClientDataSet1.Append 時 便會觸發Clientdataset 上的OnNewRecord事件
並且填入序號

如果你試不行 或這不是你要的 你應該詳述你想要的效果才有辦法討論





===================引 用 P.D. 文 章===================
感謝 leveon 指導, 但這個方法並不能對 trigger 觸發事件, 可能只能自己再寫一段取值去找出最大號再手動填入了!
系統時間:2017-02-27 12:23:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!