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

Master Detail ---ADO Detail's Record in DBGrid 不見了

尚未結案
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-14 16:57:35 IP:203.198.xxx.xxx 未訂閱
請問各大佬:     我的ADO pogram 上有個DBGrid1(Master)和DBGrid2(Detail),當我在DBGrid1(Master) 上輸入個record但post,之後在DBGrid2(Detail)上輸入一個record,但當我按post時,這個record在DBGrid2就不見了,之後我在DBGrid1(Master)按post,也見不到Detail那隻record. 之後我要將個DBGrid1(Master)'s pointer 移去其他record,然後移回剛才新增之Master Record,才可見回剛才新增之Detail record。 但我測試過,如果我在新增Detail record之前,把Master Record 先post,然後再新增Detail record,就沒有問題。 但我在BDE是可以Master 未post,但Detail也可以加record, 究竟有什麼方法可解決< >< >< > < >
richcomp
中階會員


發表:18
回覆:66
積分:51
註冊:2002-10-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-15 17:32:16 IP:61.177.xxx.xxx 未訂閱
引言: 請問各大佬: 我的ADO pogram 上有個DBGrid1(Master)和DBGrid2(Detail),當我在DBGrid1(Master) 上輸入個record但post,之後在DBGrid2(Detail)上輸入一個record,但當我按post時,這個record在DBGrid2就不見了,之後我在DBGrid1(Master)按post,也見不到Detail那隻record. 之後我要將個DBGrid1(Master)'s pointer 移去其他record,然後移回剛才新增之Master Record,才可見回剛才新增之Detail record。 但我測試過,如果我在新增Detail record之前,把Master Record 先post,然後再新增Detail record,就沒有問題。 但我在BDE是可以Master 未post,但Detail也可以加record, 究竟有什麼方法可解決< >< >< > < > < face="Verdana, Arial, Helvetica"> 好像是ADO的Bug,Delphi5沒此問題,我以前用ADO Delphi5但是有於MDAC2.6以上版本衝突,升級後有同樣問題,目前只能在grid(detail)--onenter事件中加 if (masterds.state=dsinsert) or (masteds.state=dsedit) then masterds.post;
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-17 17:38:36 IP:203.198.xxx.xxx 未訂閱
我現在也是這樣做,但真沒有方法嗎?    richcomp兄: 小弟一愚見,如果你的coding這寫會較比不用寫這麼長:    if (masterds.state in [dsinsert,dsedit]) then masterds.post;    如果覺得小弟都寫得不好,請指教...... 《觸不到問題人》 來無影,去無踪, 問題總是一羅羅。
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-24 16:39:31 IP:211.21.xxx.xxx 未訂閱
引言: 請問各大佬: 我的ADO pogram 上有個DBGrid1(Master)和DBGrid2(Detail),當我在DBGrid1(Master) 上輸入個record但post,之後在DBGrid2(Detail)上輸入一個record,但當我按post時,這個record在DBGrid2就不見了,之後我在DBGrid1(Master)按post,也見不到Detail那隻record. 之後我要將個DBGrid1(Master)'s pointer 移去其他record,然後移回剛才新增之Master Record,才可見回剛才新增之Detail record。 但我測試過,如果我在新增Detail record之前,把Master Record 先post,然後再新增Detail record,就沒有問題。 但我在BDE是可以Master 未post,但Detail也可以加record, 究竟有什麼方法可解決< >< >< > < > < face="Verdana, Arial, Helvetica"> problemman兄: 不知您問題解決了嗎? 近來我也在用ADO開發程式(之前都是用BDE),我也是遇到與您相同的問題,雖然Borland把MicroSoft的ADO包成與BDE的元件很像,但事實上只是一個幻像,ADO真的沒有BDE好用,就像我當初放棄VB,選擇Delphi一樣,MicroSoft的東東真是只可遠觀而不可亵玩焉....嘻....話題扯遠了,目前這一個問題我已經解決,有兩種方式: 使用TClientDataSet DataSetProvider(在Midas頁夾): Master的部份維持現況,從Detail下手 將DataSetProvider的DataSet指向Detail的DataSet ClientDataSet的Provider Name指向DataSetProvider 如此將原本的Detail的ADOQuery(ADOTable,ADODataSet)只是一個資料的提供者,增、刪、修、查的功能便由ClientDataSet來代勞,如此才有可能達到Master 未post,但Detail也可以加record的功能 另一個方法是我目前用的方法,我將他Post在發問是的另一篇: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28710 補充:您必須使用UpdateBatch模式,即是將Lock Type設為ltBatchOptimistic ~小弟淺見,參考看看~ 發表人 - channel 於 2003/04/24 16:45:22
------
~小弟淺見,參考看看~
系統時間:2024-06-26 23:27:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!