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

關于Ado,急求版主或高手幫忙

尚未結案
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-28 14:40:25 IP:218.17.xxx.xxx 未訂閱
是關于Ado會自動對關聯的查詢語句都要做相應的修改提交。其實我是要對其中一個表做編輯。這樣的問題我發表了﹐可現還得不到滿意的回復。求幫忙。 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26557
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-28 15:33:47 IP:61.221.xxx.xxx 未訂閱
比爾丐自 你好: 這樣的問題任誰也說不出所以然!!! 因為要在一個db元件上顯示2個以上資料表的資料 還要在同一個元件可以對其中一個資料表做異動 這好像不關db元件的問題,如果說一定要這樣做(堅持)的話 倒是可以利用 try ... except .. end; 就是說當在dbgrid上修改資料的時候就去update2個資料表 try update 第一個 except ..失敗了也不影響程式 end; 接著在 try update 第二個 except ..失敗了也不影響程式 end; 當然每個對應的欄位必須由你事先寫好
------
======================
昏睡~
不昏睡~
不由昏睡~
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-28 16:04:02 IP:218.17.xxx.xxx 未訂閱
引言: 比爾丐自 你好: 這樣的問題任誰也說不出所以然!!! 因為要在一個db元件上顯示2個以上資料表的資料 還要在同一個元件可以對其中一個資料表做異動 這好像不關db元件的問題,如果說一定要這樣做(堅持)的話 倒是可以利用 try ... except .. end; 就是說當在dbgrid上修改資料的時候就去update2個資料表 try update 第一個 except ..失敗了也不影響程式 end; 接著在 try update 第二個 except ..失敗了也不影響程式 end; 當然每個對應的欄位必須由你事先寫好
謝謝你﹐確實是這樣﹐BDE中的數據控件Tquery能查詢多個連接表而隻新增或修改其中的一個表,可用TupdateSQL對應,在Ado中沒有﹐要自己寫嗎﹖因我不用數據控件的話﹐比如用Edit保存時依次付值﹐可如果用Dbedit及DBGRID時均會ADOB出錯﹐我看了SQL的profiler則會去對兩個表做動作。如果不用DBgrid我別無它法﹐如果用DBEDIT時我可改用EDIT就一切ok,但用DBGRID時我無法下手﹖
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-28 17:20:47 IP:61.221.xxx.xxx 未訂閱
這樣吧!! 你試一下! 1.用ADODataSet來做 2.拉2個Button x2 一個用來做ADODataSet.open 一個用來做ADODataSet.post 3.拉一個DBGrid,及一個DataSource 設定好彼此的關係 4.將要使用的2個資料表中所有的field加到DBGrid裡面 5.在Button1中寫入 procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet.Close; ADODataSet.CommandText:='select a.* ,b.* from a ,b where a.ID=b.ID'; ADODataSet.Open; end; 6.在Button2中寫入 procedure TForm1.Button2Click(Sender: TObject); begin ADODataSet.Post; end; 7.試著變更DBGrid的資料看能否變更
------
======================
昏睡~
不昏睡~
不由昏睡~
anne17
一般會員


發表:4
回覆:4
積分:1
註冊:2003-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-30 00:30:47 IP:203.170.xxx.xxx 未訂閱
比爾丐自 你好: 你的問題我遇到很多次,都是sql語法上的問題(我是使用ADOStoredProc),以'select a.* ,b.* from a ,b where a.ID=b.ID'我只會用在查詢上, 當b Table只有一個欄位要顯示下,以'select A.* ,(select ID1 FROM B WHERE ID = A.ID) AS ID1 FROM A', 若多個欄位會用2個ADOStoredProc, 分別為ADOStoredProc1:SELECT * FROM A, ADOStoredProc2: SELECT * FROMB WHERE ID = @ID 在 ADOStoredProc1加所需欄位,ONCalcFields中將ADOStoredProc2 OPEN 再指定出所需欄位的值.
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-31 10:27:52 IP:218.17.xxx.xxx 未訂閱
引言: 這樣吧!! 你試一下! 1.用ADODataSet來做 2.拉2個Button x2 一個用來做ADODataSet.open 一個用來做ADODataSet.post 3.拉一個DBGrid,及一個DataSource 設定好彼此的關係 4.將要使用的2個資料表中所有的field加到DBGrid裡面 5.在Button1中寫入 procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet.Close; ADODataSet.CommandText:='select a.* ,b.* from a ,b where a.ID=b.ID'; ADODataSet.Open; end; 6.在Button2中寫入 procedure TForm1.Button2Click(Sender: TObject); begin ADODataSet.Post; end; 7.試著變更DBGrid的資料看能否變更
謝謝。當然不可以﹐ADODataSet都是相同的一個﹐只是移動了ADODataSet.Post的位置而已。且我本來打開查詢表跟保存不在一個按鈕中寫的.
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-31 10:42:33 IP:218.17.xxx.xxx 未訂閱
引言: 比爾丐自 你好: 你的問題我遇到很多次,都是sql語法上的問題(我是使用ADOStoredProc),以'select a.* ,b.* from a ,b where a.ID=b.ID'我只會用在查詢上, 當b Table只有一個欄位要顯示下,以'select A.* ,(select ID1 FROM B WHERE ID = A.ID) AS ID1 FROM A', 若多個欄位會用2個ADOStoredProc, 分別為ADOStoredProc1:SELECT * FROM A, ADOStoredProc2: SELECT * FROMB WHERE ID = @ID 在 ADOStoredProc1加所需欄位,ONCalcFields中將ADOStoredProc2 OPEN 再指定出所需欄位的值.
謝謝你﹐如果是一個欄位的話用Lookup或你所講的第一種辦法用子查詢. 而多欄時你用計算方法(ONCalcFields).我現也是這樣做的﹐可速度很慢。我不想用計算方法.
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-31 12:43:22 IP:61.221.xxx.xxx 未訂閱
你誤會我的意思了!!! 其實當ADODataSet對應的DBGrid中欄位名稱相同用 post就可以直接對該欄位異動,不需要在寫update... 至於你說的不行 
引言: 當然不可以﹐ADODataSet都是相同的一個﹐只是移動了ADODataSet.Post的位置而已。且我本來打開查詢表跟保存不在一個按鈕中寫的
其實我是要請你在開個新的專案test 而小弟測試的都沒問題....不知道跟你的問題有關嗎??
------
======================
昏睡~
不昏睡~
不由昏睡~
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-31 16:21:31 IP:218.18.xxx.xxx 未訂閱
其實我是要請你在開個新的專案test 而小弟測試的都沒問題....不知道跟你的問題有關嗎?? [/quote] ko兄弟你好﹐我現不明你的意思﹐能否給我一個test?你可用sql。現假設我設置一個表(在sql)中建立一個數據庫test,建表1:Products(proid(int自動唯一),proname(char(30)),prospec(char(30))﹔另一個表Orders(proid(跟Products表關聯),number(int)),現在Products表中隨便輸入几筆資料。 新建工程加入一表單現你能按我的意思是用ado連接.可只用DBGRID.是新增(Orders)。 當然現在DBGRID中要加入Orders的proid,表Products的proname,prospec.再加入Orders的number即可。(因為在輸入Orders不可以只有proid,應能看到自己輸入的是什么產品﹐當然要從Products表中拉過名稱及規格字樣),是新增或編輯﹐我只是想對表Orders可這時在后台會對Products表做動做﹐你可執行SQL的profiler來查看來証明.不知你所說的跟我的意思一樣嗎﹖這個問題我好煩﹐因我現急寫程序﹐第一次用ADO這個問題我一直不能解決﹐如果你做好可email壓縮給我,當然來時將所有的數據連接控件關掉﹐否則我打不開。多謝﹐我的email:szprgzy@163.com.當然你可不給我數據庫﹐我會建的跟你一樣的表就可以.現急用﹐忘這位兄弟能幫我﹐將感激不盡。
系統時間:2024-11-23 10:04:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!