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

3 個關於dbgrid 的問題

答題得分者是:P.D.
guanto
一般會員


發表:1
回覆:1
積分:0
註冊:2010-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-12-21 09:16:42 IP:65.60.xxx.xxx 訂閱
 hilo,

INTRO:
I'm new here, Hi!
(1) 我的中文不是很好所以先請各位見諒。
(2) “新手必看”並不禁止一個文章內提出多於一個問題,但若此法非行於正道,請各位提出改正。我不敢第一次發表就新增四個文章。
(3) 多謝!

SETUP:
(1) MSSQL2008 R2
(2) Delphi2010

QUESTIONS:
(1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。
(2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items?
(3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎?
(4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位?

多謝!
冠頭





P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-12-22 10:34:46 IP:118.169.xxx.xxx 未訂閱
嗨, 你好, 有關你的問題都是可以處理, 但如要寫出來, 可能要花上好幾個小時, 所以就重點吧
(1), 重點 當 dbgrid 操作下的 sql 已產生所要的 record 時, 可用 combobox.Items.Clear 來清除舊data
dbgrid 一定 link 一組 dataset, 利用 while not table1.eof do 的 迴圈方式把每一筆你要加入 combobox 的欄位內容
加入 combobox.items.add(field)
(2) 上面提到, dbgrid 是 link 一組 dataset, 所以只要知道 dbgrid 中最重要的一組 properity --> columns
事情就容易辦了, columns 中有很多 properity, 可以在 dbgrid 上 double click 開啟 column editor 來研究一下, 這邊不提
要輸出到任何元件如 combobox 或 memo 等等
一樣都用 dataset 來做, 重點在如何取得每一個column 是那一個欄位, 我舉一個最直接容易懂的
dbgrid1.columns[0].fieldname ==> 這就是 dbgrid 第一組欄位對應的 dataset 欄位名稱, 有了名稱, 就可以取得
table1.fieldbyname(dbgrid1.columns[0].fieldname).value
那接下來要如何存入combobx 中, 應該不是難事
(3) 有關 sort , dbgrid本身並沒有提供, 這得完全靠你自己去寫, 單一sort會比較好處理, 就單一sort 來看
你必須先取得 user 是 click 在 dbgrid 那一個欄位 , dbgrid1.selectindex 可以得知, 知道 index 就等於是決定了
columns[index]的結果, 那再下來就按第2點方式取得是那一個欄位名稱, 你自己要用 sql 改寫 order by sortfield
至於多欄sort, 你要直接以 dbgrid 操作其實不簡單, 不妨建議你另外利用其他方式讓user選擇要排序的欄位,
然後再進行 sql order by ...
(4)這一項當然沒有問題, 重點在 dbgrid1.columns.clear清除舊設定, 再用
dbgrid1.columns.add -->加入一組空白column
然後每一個columns 下的 properity指定fieldname, title.caption等一切參數就可以
我很早以前有寫一支dbgrid 的欄位編輯功能, 就有你所要的功能, 但時代久遠, 目前我手上使用的
已經是改了很多, 有應用更多元件組合, 沒有辦法傳上來, 你就下載這支, 但當然會有很多附件不齊
可能造成程式是沒有辦法 compiler的, 不過重點不在於 compiller, 而是裡面的codeing還是存在的,
看code 的部份即可
http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=31340
===================引 用 guanto 文 章===================
QUESTIONS:
(1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。
(2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items?
(3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎?
(4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位?

多謝!
冠頭





編輯記錄
P.D. 重新編輯於 2010-12-21 19:35:44, 註解 無‧
P.D. 重新編輯於 2010-12-21 19:36:30, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-12-22 10:40:43 IP:59.120.xxx.xxx 未訂閱
以下以Delphi為例
A1: 假如您是要將Select 出來的某個欄位的所有的值填入ComboBox的話,可用迴圈來執行即可。
ex: for i := 0 to ADOQuery1.RecordCount - 1 do begin ..... end;
A2: 您所謂的"columns"是指欄位名稱?還是欄位資料? 假如是後者,那基本上您問的問題應該與第一點是一樣的吧
A3: "或許"(因為我手上沒有Delphi可以實測) 您可以在DBGrid的TitleClick事件中做也說不定。(可以爬問看看是否有此類的作法)
A4: 當然可以,方法有很多種。可先把欄位資料都先給確定好,然後再開一個Form 兩個ListBox,左邊的ListBox放所有的欄位給使用者選擇,右邊的ListBox是使用者所選出的欄位,然後確定好欄位後,再行Select 的動作也行。

ps: 文章標題說問了三個問題但實際卻是問四個問題@@?

噢~ P.D.大已經回應了
我多打了XD

===================引 用 guanto 文 章===================
hilo,

INTRO:
I'm new here, Hi!
(1) 我的中文不是很好所以先請各位見諒。
(2) “新手必看”並不禁止一個文章內提出多於一個問題,但若此法非行於正道,請各位提出改正。我不敢第一次發表就新增四個文章。
(3) 多謝!

SETUP:
(1) MSSQL2008 R2
(2) Delphi2010

QUESTIONS:
(1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。
(2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items?
(3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎?
(4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位?

多謝!
冠頭





編輯記錄
老大仔 重新編輯於 2010-12-21 19:41:26, 註解 無‧
老大仔 重新編輯於 2010-12-21 19:42:31, 註解 無‧
guanto
一般會員


發表:1
回覆:1
積分:0
註冊:2010-12-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-12-23 04:34:42 IP:65.60.xxx.xxx 訂閱
多謝兩位的幫忙。對一個新手來說,擁有兩個角度來看非常有幫助!


老大仔:
哈哈,真抱歉,多加了一個 bonus 問題 ( 100 分)。在發問的時候發現第一道問題應該拆開來。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-12-23 22:28:19 IP:118.169.xxx.xxx 未訂閱
插個花, 
老大仔言重了, 沒有多打, 每個人的思考都不同, 或許可以為初學者帶來不同的想法,
最近看老大仔的回覆還真多, 對Delphi這塊還真感謝老大仔這麼有心, 感恩啦~~~~(痛哭流涕中)
===================引 用 老大仔 文 章===================
...略
噢~ P.D.大已經回應了
我多打了XD
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-12-27 11:14:12 IP:59.120.xxx.xxx 未訂閱
我也插個花~
P.D. 大您也言重了
小弟我只是忙裡偷閒上上網幫忙回個文章唄
小弟也只算是個小新手
因為我的知識主要來自這裡 孤狗神
自己也曾在這裡提過問題、獲得解決方法
所以假如能夠幫忙上的地方也應當提供一些意見給發問者^^

嗯...是說~回了這些文
都是趁著上班的時候回的>"<
我上班還真是不認真XD
===================引 用 P.D. 文 章===================
插個花,
老大仔言重了, 沒有多打, 每個人的思考都不同, 或許可以為初學者帶來不同的想法,
最近看老大仔的回覆還真多, 對Delphi這塊還真感謝老大仔這麼有心, 感恩啦~~~~(痛哭流涕中)
===================引 用 老大仔 文 章===================
...略
噢~ P.D.大已經回應了
我多打了XD
系統時間:2024-05-02 17:44:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!