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

Table問題解決?

答題得分者是:channel
ooctiger
一般會員


發表:25
回覆:46
積分:14
註冊:2002-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-10 13:54:48 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-10 14:12:28 IP:211.21.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-11 15:41:22 IP:61.219.xxx.xxx 未訂閱
我使用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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-11 15:51:56 IP:211.21.xxx.xxx 未訂閱
引言: 但我想要修改EC_Date,EC_Content的資料----Query2.edit; 卻出現錯誤訊息 Cannot modify a read-only DataSet 我要如何解決這個問題
TQuery要作新增、刪除、修改: 將TQuery屬性中的RequestLive設為True。 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/11 15:52:36
------
~小弟淺見,參考看看~
ooctiger
一般會員


發表:25
回覆:46
積分:14
註冊:2002-07-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-11 16:54:26 IP:61.219.xxx.xxx 未訂閱
已將TQuery屬性中的RequestLive設為True 程式執行出現Table is read only訊息 我猜測可能是sql中有取自於兩個Table的資料所以無法 用TQuery.edit的方式去處理 不知道是否正確? 我有試過單一table的tquery可以做新增,刪除,修改. 兩個以上的table就無法新增,刪除,修改. 那我要如何去做呢? 還是有別的辦法可以達到在DBGRid下修改資料的相同功能?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-11 17:03:33 IP:211.74.xxx.xxx 未訂閱
Query1->DataSource1,,,Query2->DataSource2 Query2.SQL應該是這樣喔 Select EC_PNO,EB_PNAME,EC_DATE,EC_Content From TableC Where EC_PNo = :EA_No 再將DataSource設為DataSource1,然後再去Query1設定Params參數EA_No 型態.. TRY TYR SEE..
channel
尊榮會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-11 17:30:45 IP:211.21.xxx.xxx 未訂閱
引言: 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
------
~小弟淺見,參考看看~
系統時間:2024-07-05 12:03:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!