Table問題解決? |
答題得分者是:channel
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
Table A 有EA_NO,EA_NAME... 等主要欄位
Table B 有EB_NO,EB_PNO,EB_PNAME...等主要欄位
Table C 有EC_NO,EC_PNO,EC_Date,EC_Content...等主要內容 Table c中資料有下列資料
EC_NO, EC_PNO, EC_DATE EC_Content
01 01
01 02
01 03
02 01
02 02
03 01
03 02
03 03
=================== 我想在1個Form上show出資料如下
在Panel1上顯示Table A, EA_NO ,EA_NAME相關資料
在Grid1上顯示 Table C, EC_PNO,EB_PNAME,EC_DATE,EC_Content資料
如
第一筆
01 AAA -------------------------Panel1
01, aaa_1,03/10,xyz ------Grid1
02, aaa_2,03/10,a11
03, aaa_3,03/10,222
第二筆 -------------------------Panel1
02 BBB
01, bbb_1,03/08,aaa ------Grid2
02, bbb_2,03/09,123
...
...
...
====================================== 請問我要Table間要如何做關聯才能做到上述需求 Thank You !
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
TQuery作法:
您可以用2個TQuery(及兩個TDataSource)
Query1設定如下:
SQL:Select EA_No, EA_Name From TableA
DataSource1之DataSet設為Query1 Query2設定如下:
SQL:Select EC_PNO,EB_PNAME,EC_DATE,EC_Content From TableC Where EC_PNo = :EA_No
再將Query2之DataSource設為DataSource1
DataSource2之DataSet設為Query2 TTable之作法:
Table1之TableName設為TableA
DataSource1之DataSet設為Table1 Table2之TableName設為TableC
Table2之MasterSource設為DataSource1
Table2設定MasterFields即可 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/10 14:13:21
------
~小弟淺見,參考看看~ |
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
我使用TQuery方式 Query2設定如下:
SQL:
Select EC_PNO,EB_PNAME,EC_DATE,EC_Content
From TableC ,TableB
Where EC_PNo = :EA_No and TableC.EC_PNO=TableB.EB_PNO
再將Query2之DataSource設為DataSource1
DataSource2之DataSet設為Query2 Query的結果秀在DBGrid上
但我想要修改EC_Date,EC_Content的資料----Query2.edit;
卻出現錯誤訊息 Cannot modify a read-only DataSet
我要如何解決這個問題
請channel前輩再幫忙 Thank You
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: Query2設定如下: SQL: Select EC_PNO,EB_PNAME,EC_DATE,EC_Content From TableC ,TableB Where EC_PNo = :EA_No and TableC.EC_PNO=TableB.EB_PNO 我猜測可能是sql中有取自於兩個Table的資料所以無法 用TQuery.edit的方式去處理 不知道是否正確? 我有試過單一table的tquery可以做新增,刪除,修改. 兩個以上的table就無法新增,刪除,修改. 那我要如何去做呢? 還是有別的辦法可以達到在DBGRid下修改資料的相同功能?您有兩個作法: 一、使用TUpdateSQL(Delphi5在Data Access頁夾,Delphi6在BDE頁夾)元件搭配CachedUpdates: 1.放置一個UpdateSQL1 2.Query2屬性的CachedUpdates設為True 3.Query2屬性的UpdateObject設為UpdateSQL1 4.對其UpdateSQL1 Double Click即跳出一個視窗 (1)先選擇Table Name:依據您的需求應該是TableC (2)選擇Key Fields:指Primary Key (3)選擇Update Fields:全選 (4)按Generate SQL鈕。 (5)按Ok即可 5.存檔時下:Query2.ApplyUpdates; 6.取消存檔時下:Query2.CancelUpdates; 二、您在Query2設定如下: 修改SQL如下: Select EC_PNO,EC_DATE,EC_Content From TableC Where EC_PNo = :EA_No 但您會問我的TableB的EB_PNAME如何取得,您可以使用Lookup Field,方法如下: 1、在Form1增加一個Query3,SQL: Select EB_NO,EB_PNO,EB_PNAME From TableB。 2、對原本的Query2 DblClick 叫出Fields Editor,按右鍵New Field。 3、New Field的設定如下: [Field Properties] Name:EB_PName Component:系統給定 Type:選擇EB_PName的型態 Size:給EB_PName的大小 [Field Type] 選擇Lookup [Lookup Definition] Key Fields:EC_PNO DataSet:Query3 Lookup Keys:EB_PNO Result Field:EB_PNAME 這樣應該就可以了!~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/11 17:32:12
------
~小弟淺見,參考看看~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |