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

Adoquery及DBGIRD取值的問題

答題得分者是:老大仔
shineweare
一般會員


發表:3
回覆:4
積分:1
註冊:2011-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-01-17 11:57:24 IP:211.22.xxx.xxx 訂閱
各位先進

小弟最近剛踏入Delphi的世界中,也在ktop裡面爬了不少文,獲得各位前輩的豐富經驗

謝謝各位無私奉獻

小弟我現在在delphi中使用adoqurey查詢資料且顯示到DBGrid中

有一點問題就是

假設我現在有4筆資料,可依據選取的列取出該列所有資料送到EDIT中

分別為
A01 1 2 A
A01 1 2 B
A01 1 2 C
A01 1 2 D

我想請教的是 ,如何能取出的資料為
A01 1 2 A
B
C
D

不需要判斷資料是否不同,只是想瞭解如何取得DBGRID中"指定的不同欄位"的值


或許這樣說有些抽象,不知道能否貼一張簡單的圖更方便說明我的想法

在麻煩各位,抽空指導
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-01-17 22:14:49 IP:118.169.xxx.xxx 未訂閱
1.看不懂你要表達的涵意
2.要附圖上來最好, 如果不會的話, 最簡單方式就是回帖時上傳一張JPG圖檔, 我們再手動打開即可
或者可以在貼圖區先上傳一張圖檔, 取得該圖檔的網址, 然後在回帖區把該網址以上面"插入/編輯影像'方式貼上,
就可以直接在發帖中秀出圖形了
shineweare
一般會員


發表:3
回覆:4
積分:1
註冊:2011-01-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-01-18 09:31:44 IP:211.22.xxx.xxx 訂閱
感謝P.D前輩抽空指點

附上圖檔輔助說明




目前我所使用的方法是使用Adoquery下查詢條件,將結果show在Dbgrid中
再使用ADOQueryAfterScroll將指標停留的位置將值傳送到Edit中

我的資料欄位中,前幾筆資料是固定不變的,只有後幾個欄位資料有所不同(如圖)
現在查詢出四筆資料,遊標停留在第一筆,可將第一筆的資料送進EDIT5-EDIT7

想請教的是如何把第二筆第三筆的資料 也送進其他的欄位中
如EDIT8,EDIT9

[code delphi]
Edit2.Text:=ADOQuery1.FieldByName('CofO').AsString;
Edit3.Text:=ADOQuery1.Fieldbyname('Ptlno').AsString;
Edit4.Text:=ADOQuery1.Fieldbyname('CNO').AsString;
Edit5.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit6.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit7.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit8.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit9.Text:=ADOQuery1.Fieldbyname('Vend').AsString;

[/code]



我這做法是要將資料傳送到印表機做列印,所以才選擇這樣做法

或是我的方法錯了,有其他適合的方式也期望各位前輩抽空指導


===================引 用 P.D. 文 章===================
1.看不懂你要表達的涵意
2.要附圖上來最好, 如果不會的話, 最簡單方式就是回帖時上傳一張JPG圖檔, 我們再手動打開即可
或者可以在貼圖區先上傳一張圖檔, 取得該圖檔的網址, 然後在回帖區把該網址以上面"插入/編輯影像'方式貼上,
就可以直接在發帖中秀出圖形了
老大仔
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-01-18 10:13:12 IP:59.120.xxx.xxx 未訂閱
姑且以四筆來說
您所需要的應該是將四筆資料分別放入Edit1~Edit12
而每一筆資料是三個Edit
以此類推的話可寫成:


[code delphi]
j := 1;
ADOQuery1.First;
for i := 1 to 4 do
begin
(Form1.FindChildControl('Edit' IntToStr(j )) as TEdit).Text := ADOQuery1.FieldByName('model').AsString;
(Form1.FindChildControl('Edit' IntToStr(j 1)) as TEdit).Text := ADOQuery1.FieldByName('.....').AsString;
(Form1.FindChildControl('Edit' IntToStr(j 2)) as TEdit).Text := ADOQuery1.FieldByName('.....').AsString;
ADOQuery1.Next;
j := j 3;
end;

[/code]

===================引 用 shineweare 文 章===================
感謝P.D前輩抽空指點

附上圖檔輔助說明




目前我所使用的方法是使用Adoquery下查詢條件,將結果show在Dbgrid中
再使用ADOQueryAfterScroll將指標停留的位置將值傳送到Edit中

我的資料欄位中,前幾筆資料是固定不變的,只有後幾個欄位資料有所不同(如圖)
現在查詢出四筆資料,遊標停留在第一筆,可將第一筆的資料送進EDIT5-EDIT7

想請教的是如何把第二筆第三筆的資料 也送進其他的欄位中
如EDIT8,EDIT9

[code delphi]
Edit2.Text:=ADOQuery1.FieldByName('CofO').AsString;
Edit3.Text:=ADOQuery1.Fieldbyname('Ptlno').AsString;
Edit4.Text:=ADOQuery1.Fieldbyname('CNO').AsString;
Edit5.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit6.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit7.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit8.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit9.Text:=ADOQuery1.Fieldbyname('Vend').AsString;

[/code]



我這做法是要將資料傳送到印表機做列印,所以才選擇這樣做法

或是我的方法錯了,有其他適合的方式也期望各位前輩抽空指導


===================引 用 P.D. 文 章===================
1.看不懂你要表達的涵意
2.要附圖上來最好, 如果不會的話, 最簡單方式就是回帖時上傳一張JPG圖檔, 我們再手動打開即可
或者可以在貼圖區先上傳一張圖檔, 取得該圖檔的網址, 然後在回帖區把該網址以上面"插入/編輯影像'方式貼上,
就可以直接在發帖中秀出圖形了
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-01-18 18:28:15 IP:118.169.xxx.xxx 未訂閱
那些值送到那個EDIT?

前幾筆資料是固定不變的
是那幾個欄位?

資料送進EDIT5-EDIT7
前幾筆資料是固定不變的,只有資料送進EDIT5-EDIT7

想請教的是如何把第二筆第三筆的資料 也送進其他的欄位中
如EDIT8,EDIT9

[code delphi]
? Edit2.Text:=ADOQuery1.FieldByName('CofO').AsString;
? Edit3.Text:=ADOQuery1.Fieldbyname('Ptlno').AsString;
? Edit4.Text:=ADOQuery1.Fieldbyname('CNO').AsString;
? Edit5.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit6.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit7.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit8.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit9.Text:=ADOQuery1.Fieldbyname('Vend').AsString;

[/code]



我這做法是要將資料傳送到印表機做列印,所以才選擇這樣做法

或是我的方法錯了,有其他適合的方式也期望各位前輩抽空指導
編輯記錄
P.D. 重新編輯於 2011-01-18 03:29:13, 註解 無‧
P.D. 重新編輯於 2011-01-18 03:29:48, 註解 無‧
shineweare
一般會員


發表:3
回覆:4
積分:1
註冊:2011-01-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-01-19 09:34:45 IP:61.222.xxx.xxx 訂閱
感謝老大仔的回覆,等會馬上試試。
另外也發現,如果小弟使用迴圈方式來寫是不是會比較好呢?
因資料筆數不一定,採用寫死的方式好像也不是百分百適用

在麻煩指教!

===================引 用 老大仔 文 章===================
姑且以四筆來說
您所需要的應該是將四筆資料分別放入Edit1~Edit12
而每一筆資料是三個Edit
以此類推的話可寫成:


[code delphi]
j := 1;
ADOQuery1.First;
for i := 1 to 4 do
begin
(Form1.FindChildControl('Edit' IntToStr(j )) as TEdit).Text := ADOQuery1.FieldByName('model').AsString;
(Form1.FindChildControl('Edit' IntToStr(j 1)) as TEdit).Text := ADOQuery1.FieldByName('.....').AsString;
(Form1.FindChildControl('Edit' IntToStr(j 2)) as TEdit).Text := ADOQuery1.FieldByName('.....').AsString;
ADOQuery1.Next;
j := j 3;
end;

[/code]

===================引 用 shineweare 文 章===================
感謝P.D前輩抽空指點

附上圖檔輔助說明




目前我所使用的方法是使用Adoquery下查詢條件,將結果show在Dbgrid中
再使用ADOQueryAfterScroll將指標停留的位置將值傳送到Edit中

我的資料欄位中,前幾筆資料是固定不變的,只有後幾個欄位資料有所不同(如圖)
現在查詢出四筆資料,遊標停留在第一筆,可將第一筆的資料送進EDIT5-EDIT7

想請教的是如何把第二筆第三筆的資料 也送進其他的欄位中
如EDIT8,EDIT9

[code delphi]
Edit2.Text:=ADOQuery1.FieldByName('CofO').AsString;
Edit3.Text:=ADOQuery1.Fieldbyname('Ptlno').AsString;
Edit4.Text:=ADOQuery1.Fieldbyname('CNO').AsString;
Edit5.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit6.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit7.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit8.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
Edit9.Text:=ADOQuery1.Fieldbyname('Vend').AsString;

[/code]



我這做法是要將資料傳送到印表機做列印,所以才選擇這樣做法

或是我的方法錯了,有其他適合的方式也期望各位前輩抽空指導


===================引 用 P.D. 文 章===================
1.看不懂你要表達的涵意
2.要附圖上來最好, 如果不會的話, 最簡單方式就是回帖時上傳一張JPG圖檔, 我們再手動打開即可
或者可以在貼圖區先上傳一張圖檔, 取得該圖檔的網址, 然後在回帖區把該網址以上面"插入/編輯影像'方式貼上,
就可以直接在發帖中秀出圖形了
shineweare
一般會員


發表:3
回覆:4
積分:1
註冊:2011-01-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-01-19 09:40:15 IP:211.22.xxx.xxx 訂閱

感謝P.D前輩,我再補充更新一'張圖片說明

在麻煩您。


===================引 用 P.D. 文 章===================
那些值送到那個EDIT?

前幾筆資料是固定不變的
是那幾個欄位?

資料送進EDIT5-EDIT7
前幾筆資料是固定不變的,只有資料送進EDIT5-EDIT7

想請教的是如何把第二筆第三筆的資料 也送進其他的欄位中
如EDIT8,EDIT9

[code delphi]
? Edit2.Text:=ADOQuery1.FieldByName('CofO').AsString;
? Edit3.Text:=ADOQuery1.Fieldbyname('Ptlno').AsString;
? Edit4.Text:=ADOQuery1.Fieldbyname('CNO').AsString;
? Edit5.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit6.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit7.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit8.Text:=ADOQuery1.Fieldbyname('Vend').AsString;
? Edit9.Text:=ADOQuery1.Fieldbyname('Vend').AsString;

[/code]



我這做法是要將資料傳送到印表機做列印,所以才選擇這樣做法

或是我的方法錯了,有其他適合的方式也期望各位前輩抽空指導
shineweare
一般會員


發表:3
回覆:4
積分:1
註冊:2011-01-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-01-21 12:00:04 IP:211.20.xxx.xxx 訂閱
感謝各位幫忙,參考了前輩的做法及自己試的結果

已經找到解決的方法!

運用迴圈去判別,提供部份程式碼如下

[code delphi]
for i := 1 to ADOQuery1.RecordCount do
begin
if ADOQuery1.Eof then break;
if i > 6 then break;

if i = 1 then
Edit5.Text := ADOQuery1.FieldByName('vend').AsString
else if i = 2 then
Edit6.Text := ADOQuery1.FieldByName('vend').AsString
else if i = 3 then
Edit7.Text := ADOQuery1.FieldByName('vend').AsString
else if i = 4 then
Edit8.Text := ADOQuery1.FieldByName('vend').AsString
else if i = 5 then
Edit9.Text := ADOQuery1.FieldByName('vend').AsString
else if i = 6 then
Edit10.Text := ADOQuery1.FieldByName('vend').AsString;

ADOQuery1.Next;[/code]

系統時間:2024-05-02 9:26:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!