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

SQL資料庫關聯,DBGRID顯示兩個資料表內容

答題得分者是:deity
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-01 00:02:54 IP:61.218.xxx.xxx 未訂閱
我使用ADOConnection開啟MS-ACCESS,裡面有兩個資料表,所以我又用了兩組ADOQuery和DataSource來控制這兩個資料表,

ADOQuery1第一個資料表data1是個人資料如
學號 姓名 職業
A001 王先生 學生

ADOQuery2第二個資料表data2是成績如
學號 射擊 健行
A001 75 90

select * from data2 where 學號=''' ADOQuery1.FieldByName('學號').AsString '''

這樣沒有問題,但我想要的是第二個資料表做 DBGRID 時能夠顯示

學號 姓名 射擊 健行
A001 王先生 75 90

爬文找不到所以才發文,敬請先進指教,謝謝!

deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-01 17:28:46 IP:121.10.xxx.xxx 訂閱

===================引 用 pcernet 文 章===================
我使用ADOConnection開啟MS-ACCESS,裡面有兩個資料表,所以我又用了兩組ADOQuery和DataSource來控制這兩個資料表,

ADOQuery1第一個資料表data1是個人資料如
學號 姓名 職業
A001 王先生 學生

ADOQuery2第二個資料表data2是成績如
學號 射擊 健行
A001 75 90

select * from data2 where 學號=''' ADOQuery1.FieldByName('學號').AsString '''

這樣沒有問題,但我想要的是第二個資料表做 DBGRID 時能夠顯示

學號 姓名 射擊 健行
A001 王先生 75 90

爬文找不到所以才發文,敬請先進指教,謝謝!

select a.學號 ,b.姓名,a.射擊,a.健行 from data2 a inner join data1 on a. 學號 = b.學號 where a.學號=''' ADOQuery1.FieldByName('學號').AsString ''''

您好,试试上面的是不是您所要的效果!
編輯記錄
deity 重新編輯於 2008-07-01 17:34:26, 註解 無‧
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-01 18:08:31 IP:61.218.xxx.xxx 未訂閱
謝謝您的熱心答覆。

原本程式碼 select * from data2 where 學號=''' ADOQuery1.FieldByName('學號').AsString ''' 都正常
改成 select a.學號 ,b.姓名,a.射擊,a.健行 from data2 a inner join data1 on a. 學號 = b.學號 where a.學號=''' ADOQuery1.FieldByName('學號').AsString ''''

後出現 "cannot perform this operation on a closed dataset",雖然data2要關聯data1的人事資料,但同時間data1也由ADOQuery1正開啟使用著,data2能靠著學號找到姓名而不會影響ADOQuery1的運作嗎?嘗試找出方法中...

再次感謝您。
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-01 21:40:09 IP:121.10.xxx.xxx 訂閱
pcernet 您好:

ADOQuery1有没有Open?

ADOQuery1.open;
然后再做
select a.學號 ,b.姓名,a.射擊,a.健行 from data2 a inner join data1 on a. 學號 = b.學號 where a.學號=''' ADOQuery1.FieldByName('學號').AsString ''''
可以的话提供多点咨询。你可以单独用上面那句试试,看是不是你所要的效果,然后再找问题所在!




===================引 用 pcernet 文 章===================
謝謝您的熱心答覆。

原本程式碼 select * from data2 where 學號=''' ADOQuery1.FieldByName('學號').AsString ''' 都正常
改成 select a.學號 ,b.姓名,a.射擊,a.健行 from data2 a inner join data1 on a. 學號 = b.學號 where a.學號=''' ADOQuery1.FieldByName('學號').AsString ''''

後出現 "cannot perform this operation on a closed dataset",雖然data2要關聯data1的人事資料,但同時間data1也由ADOQuery1正開啟使用著,data2能靠著學號找到姓名而不會影響ADOQuery1的運作嗎?嘗試找出方法中...

再次感謝您。
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-02 12:14:22 IP:61.218.xxx.xxx 未訂閱
努力的扒文加上您的指點,可以了,謝謝。
系統時間:2024-11-23 6:22:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!