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

如何一次操控二個以上的table

答題得分者是:paul
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-29 23:41:07 IP:203.204.xxx.xxx 未訂閱
找了老半天都沒有答案。 請問要如何一次操控二個以上有關聯的表格。 目前的環境為: delphi or kylix mysql 目前做法是: 使用多階架構 大部份的例子只有一次一個表格,但是如果有關聯的表格,像學生和修課資料,總不能每跨一個表格就多加五個connection和dataset吧。那麼請問要如何做到呢?謝謝喔。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
paul
初階會員


發表:8
回覆:82
積分:28
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-30 01:06:03 IP:203.204.xxx.xxx 未訂閱
可新增一個 Data Modules 在其上放上 一個 database 或 ADOConnection 把資料庫連上去,可設定是否不用每次輸入資料庫登入密碼 再將您常用的 dataset 和 datsource 放在上面,各 dataset 的關連性也可在其上設定 以後您用引用時只要含入(uses)該 Data Modules 即可參考到其上的 dataset 和 datasource 和其相關的關連性設定 但根據經驗,在 data modules 上放的 dataset 和 datasource 不要放入太多,放入太多會有找不到或發生紊亂的現象,所以放在上面的原則為各dataset欄位的設定(如中文名稱)或者為大部份form都會用到的查詢Query,那些只是某個form專用的 dataset則放在各別的form內,這樣維護上會較好處理.
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-09-30 07:39:20 IP:203.204.xxx.xxx 未訂閱
很高興得到您的回言,至少已經得到一個頭緒。 因為我已經有了Kylix2的三本原廠Guide,和一些市售的Kylix和delphi的書籍,但是卻還是找不到相關的具體使用方法(可見書的品質,天下文章一大抄卻沒有抄到讀者想要的部份),如今得到您的指示ADOConnection為方向,剛才已經在delphi上試拉了這個物件出來,但是用法似乎和過去用的multi-tire配套物件(共五個),在用法上有許多不同,感覺上不知道如何使用。是否能夠說明具體一點,或是給我指示要買何本書有最好的範例和說明。再次感謝。    
引言: 可新增一個 Data Modules 在其上放上 一個 database 或 ADOConnection 把資料庫連上去,可設定是否不用每次輸入資料庫登入密碼 再將您常用的 dataset 和 datsource 放在上面,各 dataset 的關連性也可在其上設定 以後您用引用時只要含入(uses)該 Data Modules 即可參考到其上的 dataset 和 datasource 和其相關的關連性設定 但根據經驗,在 data modules 上放的 dataset 和 datasource 不要放入太多,放入太多會有找不到或發生紊亂的現象,所以放在上面的原則為各dataset欄位的設定(如中文名稱)或者為大部份form都會用到的查詢Query,那些只是某個form專用的 dataset則放在各別的form內,這樣維護上會較好處理.
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-09-30 07:55:04 IP:203.204.xxx.xxx 未訂閱
對了,大致講一下我的製作情況,使您更了解我的狀況。因為在製作專題,寫程式遇到這些問題。 就是我使用了一些data control,比如說dbtext,dblabel,dbedit,dbtext.....還有一些,而這一些分別代表著資料庫的某一些欄位,比如說:學生學號、姓名、修課課表、老師姓名、受傷原因、掛號時間.......等等。 而這些欄位因為正規化使得分開在不同的表格,但是因為設計的介面上要整合在一起,總不可能一個介面查一個表格,叫使用者自己腦中作組合吧。所以在列出資料時,我們自己要去做整合,至於如果是SQL的語法select id,name,hurt_reason from stmast,hurt where ......,在SQL上是已經完全沒有問題了,請放心。而且過去也曾經使用過 vb 存取 access 的經驗,只是目前要用的環境是 kylix 存取 mysql,而kylix才剛接觸,所以不知道如何使用。 提供以上線索,希望更容易得到更多的建議,謝謝。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
paul
初階會員


發表:8
回覆:82
積分:28
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-01 01:36:23 IP:203.204.xxx.xxx 未訂閱
不好意思, Kylix 我尚未安裝,沒實際測試過,但以 Delphi 為例,您可參考看看,我在上傳區上傳了一個 Delphi 5 連絡 MDB 檔的範例testADO,只是一個簡單的二個 ADOQuery 的連絡,實際應用仍要加上一些控制程式碼,因我不想用 updateSQL,所以我的作法都是用此方法,再加程式去控制各ADOQuery的動作,希望這是您想要的!
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-01 07:13:06 IP:203.204.xxx.xxx 未訂閱
其實用delphi也是一樣,因為我能夠將delphi的程式轉到kylix的環境下執行。 這個範例正是我要的,而且相當的符合,您的程式執行也正常。就是二個關聯的表格要在介面上展現出來。 您的程式我已經充分的展開來看了,可是還是有一些問題: 還是有一些問題想要請教一下:怎麼找不到 DataModule2.DataSource1 呢?還有其他像客戶和訂貨資料所連的 datasource 怎麼看不到?而且展開之後,也連接到ADOConnection,也找不到。 例如,如果拉了SQLConnection或Dataset 等等的元件,都會顯示在上面,至少也找得到。可是我都找不到。 如果我拉一個ADOConnection1,它也會顯示在表單上。 哦----現在看到了,原來另外開一個DataModule2,就放在裡面啊,原來如此, I see。 現在的問題又來了,找不到列出資料的語法,就是將資料列在 DBGrid 上的語法,或者是要怎麼樣列出來。 再來是,ADOConnection要連到資料庫的選項似乎沒有mySQL,那要怎麼辦? 還有,這一種連法和用dbExpress裡的 SQLConnection連法的作用、目的、用法和其他的操作方式的細節有什麼不一樣? 我現在手上幾本delphi的書都沒有介紹到ADO之類的書,也不知道要從何著手。 能不能再說明一下,上面的情況是如何產生的。 能不能介紹書是有關於此的。再次感謝您!!
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-01 17:53:56 IP:203.204.xxx.xxx 未訂閱
用delphi跑完您給的程式以後,本來信心滿滿, 以為kylix3enterprise一定沒有問題,想不到卻在kylix3enterprise找不到ADO的物件, 這下可真的不知道要怎麼辦了。 最後,終於已經使用TSQLConnection的方式,將二個表格弄上來了,但是卻無法像您的程式一樣,選上面的DBGrid,下面的DBGrid會跟著動,那是怎麼弄的呢? 可以用 TSQLConnection 和 TSQLDataset 做講解嗎? 再一次謝謝您。 發表人 - c905165 於 2002/10/01 23:25:32
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
paul
初階會員


發表:8
回覆:82
積分:28
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-02 00:46:42 IP:203.204.xxx.xxx 未訂閱
先前我做的範例,若您觀念通的話,不一定是用 TDatabase 或是用 TADOConnect, 因元件的不同而有不同的用法,在 BDE 用 TDatabase元件,在 ADO 用 TADOConnect,在其他元件組當然是用不同的元件,所以要多看點說明,多試試不同的場合用不同的元件. 至於 Master 和 Detail 連絡互動有兩種作法: 1.Query用法 MasterQry <---> MasterQDS DetailQry <---> DetailQDS 把 DetailQry 的 DataSource 設成 DetailQDS 和 DetailQry 的 SQL 指令設為 Select * from Detail where key=:key 注意 key 就是資料表的主鍵 再 MasterQry.Open DetailQry.Open 就可以了,自己多試試即可了解! 2.Table用法 MasterTbl <---> MasterDS DetailTbl <---> DetailDS 把 DetailTbl 的 MasterSource 設為 MasterDS 和 DetailTbl 的 MasterField 設為 關連的 key 再 MasterTbl.Open DetailTbl.Open 就可以了. 以上是最基本的DM做法,實際操作時,仍是自己加入程式碼,如 1.先新增 Master 再新增 Detail,在DetailNewRecord 要自己加上 Detail.FieldByName('key').value:=Master.FieldByName('key').value; 2.刪除 Master記錄 時要先刪除 Detail記錄 等等
系統時間:2017-12-14 12:25:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!