關于Ado,急求版主或高手幫忙 |
尚未結案
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
比爾丐自 你好:
這樣的問題任誰也說不出所以然!!!
因為要在一個db元件上顯示2個以上資料表的資料
還要在同一個元件可以對其中一個資料表做異動
這好像不關db元件的問題,如果說一定要這樣做(堅持)的話
倒是可以利用
try
...
except
..
end;
就是說當在dbgrid上修改資料的時候就去update2個資料表
try
update 第一個
except
..失敗了也不影響程式
end;
接著在
try
update 第二個
except
..失敗了也不影響程式
end;
當然每個對應的欄位必須由你事先寫好
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
引言: 比爾丐自 你好: 這樣的問題任誰也說不出所以然!!! 因為要在一個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 發送簡訊給我 |
這樣吧!!
你試一下!
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 發送簡訊給我 |
比爾丐自 你好:
你的問題我遇到很多次,都是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 發送簡訊給我 |
引言: 這樣吧!! 你試一下! 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 發送簡訊給我 |
引言: 比爾丐自 你好: 你的問題我遇到很多次,都是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 發送簡訊給我 |
你誤會我的意思了!!!
其實當ADODataSet對應的DBGrid中欄位名稱相同用
post就可以直接對該欄位異動,不需要在寫update...
至於你說的不行
引言: 當然不可以﹐ADODataSet都是相同的一個﹐只是移動了ADODataSet.Post的位置而已。且我本來打開查詢表跟保存不在一個按鈕中寫的其實我是要請你在開個新的專案test 而小弟測試的都沒問題....不知道跟你的問題有關嗎??
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
其實我是要請你在開個新的專案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.當然你可不給我數據庫﹐我會建的跟你一樣的表就可以.現急用﹐忘這位兄弟能幫我﹐將感激不盡。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |