線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2649
推到 Plurk!
推到 Facebook!

如何存回資料庫

答題得分者是:Fishman
ladies
一般會員


發表:7
回覆:18
積分:5
註冊:2007-08-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-10 16:36:15 IP:59.120.xxx.xxx 訂閱
想跟前輩們請教一個問題
正在學習多層資料庫的應用!
目前我做的一個練習程式
中間層是有四個元件,為Database1、Query1、DataSource1、DBGrid1
再一個DataSetProvider1
clinet端有
ClientDataSet1、DataSource2、insertBot、deleteBot、saveBot
我想在client端新增刪除,然後把資料存回資料庫
insert跟delete都有作用,但是我save那個bot就不行
資料還是原本的,請問可能會是什麼原因呢??

save的bot我是這麼寫的,其他兩個也是

procedure TForm1.Button3Click(Sender: TObject);
begin
ClientDataSet1.Post;
end;

謝謝大大指點
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-10 17:29:42 IP:59.124.xxx.xxx 未訂閱
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.Button3Click(Sender: TObject); begin ClientDataSet1.ApplyUpdates(-1); end; </textarea>
------
Fishman
ladies
一般會員


發表:7
回覆:18
積分:5
註冊:2007-08-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-10 17:51:15 IP:59.120.xxx.xxx 訂閱
fishman還是不行耶!>"<
明明ctrl space有post可以選為什麼我點下去卻沒有作用呢???
真是讓我百思不得其解。
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-11 01:00:34 IP:59.105.xxx.xxx 未訂閱
Append Edit .. Post 只是 ClientDataSet 的 Buffer 處理並不會異動 "資料庫"
要執行 ApplyUpdate 才會執行異動資料庫的動作!
ApplyUpdate 也不會異動? 這可奇怪了!
您在 ApplyUpdate 前, 可以先檢查一 ChangeCount , 資料改變的筆數! 看看是不是你認為的筆數!
不過要注意, 把資料由 A 改為 B (ChangeCount 會加1), 再把 B 改為 A, 這時視同沒有變更!
ladies
一般會員


發表:7
回覆:18
積分:5
註冊:2007-08-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-11 09:30:23 IP:59.120.xxx.xxx 訂閱
只要有insert或delete不是post後就能存回資料庫嗎??
書上是匠寫的呀!= =還是我會錯意呢??
還是說在post之前就必須利用ApplyUpdate讓資料更新呢??

剛剛試了很多次,就是沒辦法將資料寫進去更新。
唉....或許該想想別的方法@@
編輯記錄
ladies 重新編輯於 2007-09-11 11:34:06, 註解 無‧
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-11 15:15:08 IP:59.124.xxx.xxx 未訂閱
<textarea class="delphi" rows="10" cols="60" name="code">If ClientDataSet.State IN [dsEdit,dsInsert] Then ClientDataSet.Post; If ClientDataSet.ChangeCount > 0 Then ClientDataSet.applyupdates(-1); </textarea> 順便 TRACE 一下是否執行 Appluupdates 動作! 若不行,建議POST上程式 & DB,已方便快速找出問題癥結
------
Fishman
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-09-11 17:43:38 IP:59.105.xxx.xxx 未訂閱
那一本書? 您的問題是三層, 不是二層!
三層一定要執行 ApplyUpdates 才會異動資料庫!
insert或delete post後只會放在 CDS 的Buffer! 不會存回資料庫
必須再執行 ApplyUpdates 才能異動 "資料庫"!
把您的程式碼 PO 上來!
===================引 用 ladies 文 章===================
只要有insert或delete不是post後就能存回資料庫嗎??
書上是匠寫的呀!= =還是我會錯意呢??
還是說在post之前就必須利用ApplyUpdate讓資料更新呢??

剛剛試了很多次,就是沒辦法將資料寫進去更新。
唉....或許該想想別的方法@@
ladies
一般會員


發表:7
回覆:18
積分:5
註冊:2007-08-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-09-12 10:32:41 IP:59.120.xxx.xxx 訂閱
D5 實務經典,不過已經跟同事們找出問題所在!
程式雖然有執行到update那行,但是資料庫卻沒有變動。
所以一致覺得是table有問題,不好意思,讓大家白忙一場。
^__^"

系統時間:2017-12-15 6:34:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!