Adoquery及DBGIRD取值的問題 |
答題得分者是:老大仔
|
shineweare
一般會員 發表:3 回覆:4 積分:1 註冊:2011-01-17 發送簡訊給我 |
各位先進
小弟最近剛踏入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 發送簡訊給我 |
|
shineweare
一般會員 發表:3 回覆:4 積分:1 註冊:2011-01-17 發送簡訊給我 |
感謝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 發送簡訊給我 |
姑且以四筆來說
您所需要的應該是將四筆資料分別放入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 發送簡訊給我 |
那些值送到那個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 發送簡訊給我 |
感謝老大仔的回覆,等會馬上試試。
另外也發現,如果小弟使用迴圈方式來寫是不是會比較好呢? 因資料筆數不一定,採用寫死的方式好像也不是百分百適用 在麻煩指教! ===================引 用 老大仔 文 章=================== 姑且以四筆來說 您所需要的應該是將四筆資料分別放入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 發送簡訊給我 |
感謝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 發送簡訊給我 |
感謝各位幫忙,參考了前輩的做法及自己試的結果
已經找到解決的方法! 運用迴圈去判別,提供部份程式碼如下 [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] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |