為何抓不到combobox的值? |
答題得分者是:ko
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
請問…我在學院combobox1那已有選一個值,可是接著利用combobox1的值
須產生我要選的系,語法都沒錯…為何就是抓不到值? 謝謝…^^
//選擇學院
Query1.Active:=true;
while not Query1.Eof do
begin
ComboBox1.Items.Add( Query1.FieldByName('COL_CNAME').AsString);
Query1.Next;
end;
Query1.Close;
//選擇系所
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add( 'Select
depar.DEP_ID,depar.DEP_SCNAME,depar.DEP_LCNAME');
Query2.SQL.Add( 'From DEPARTMENT depar,COLLEGE coll');
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and //就是下面這行…拿掉的話會產生所有的系…可不是我要的…
但加了這行…就沒東西…可明明combobox1有值…??
coll.COL_CNAME='' ComboBox1.text ''');
Query2.Open;
while not Query2.Eof do
begin
ComboBox2.Items.Add( Query2.FieldByName('DEP_LCNAME').AsString);
Query2.Next;
end;
Query2.Close;
|
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
有值出來…可是它的值是資料庫的所有值,且一直重覆好幾次,也就是
經由query出來應該只有兩筆,結果它出現約十幾筆…真是奇怪?? Query2.SQL.Add( 'From DEPARTMENT depar,COLLEGE coll');
//下面這行若刪掉…也會沒值…但加了之後…出現很多值且是重覆值
if ComboBox1.ItemIndex >=0 then
begin
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''+ComboBox1.Items[ComboBox1.ItemIndex]+''');
end;
//若加了else後,其結果跟一開始一樣…都沒有值出來
else
begin
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=NULL');
end;
Query2.Open;
while not Query2.Eof do
begin
ComboBox2.Items.Add( Query2.FieldByName('DEP_LCNAME').AsString);
Query2.Next;
end;
Query2.Close;
引言: 試試 if ComboBox1.ItemIndex >=0 then coll.COL_CNAME='' ComboBox1.Items[ComboBox1.ItemIndex] '''); else coll.COL_CNAME = NULL); |
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
|
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
這樣吧 ...
你可以在 Debug 時看看 ComboBox1.Items[ComboBox1.ItemIndex] 的值對不對
另外, 你的那行可以再改改
Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''' ComboBox1.Items[ComboBox1.ItemIndex] '''');
或
Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=' QuotedStr(ComboBox1.Items[ComboBox1.ItemIndex]));
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
引言://就是下面這行…拿掉的話會產生所有的系…可不是我要的… 但加了這行…就沒東西…可明明combobox1有值…?? coll.COL_CNAME='' ComboBox1.text ''');更改... //就是下面這行…拿掉的話會產生所有的系…可不是我要的… 但加了這行…就沒東西…可明明combobox1有值…?? coll.COL_CNAME=:Q0 '); Query2.ParamByName('Q0').AsString:=ComboBox1.Text; 發表人 - ko 於 2002/12/09 12:11:46
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
可以執行…但combobox2還是沒值…^^
會不會因為combobox1的值是經由query產生的…
導致它抓不到…?
引言:引言://就是下面這行…拿掉的話會產生所有的系…可不是我要的… 但加了這行…就沒東西…可明明combobox1有值…?? coll.COL_CNAME='' ComboBox1.text ''');更改... //就是下面這行…拿掉的話會產生所有的系…可不是我要的… 但加了這行…就沒東西…可明明combobox1有值…?? coll.COL_CNAME=:Q0 '); Query2.ParamByName('Q0').AsString:=ComboBox1.Text; 發表人 - ko 於 2002/12/09 12:11:46 |
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
不好意思…^^"
我的程式就只有一開始po出來的那些…
算是將我的想法實做出來測看看…
才會那麼難過…因才一點點程式就run不出東西…
元件:兩個combobox
步驟一、利用sql語法產生item給combobox1 …>這個很順利
步驟二、點選combobox1其中一個item
步驟三、取得步驟二combobox1 item的值並產生出相對應的值給combobox2
Query2.SQL.Add( 'Select
depar.DEP_ID,depar.DEP_SCNAME,depar.DEP_LCNAME');
Query2.SQL.Add( 'From DEPARTMENT depar,COLLEGE coll');
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''combobox1.text'''); 問題來囉…在步驟三combobox1.text並沒有值…導致沒產生相對應的資料
而且我保證sql語法絕對沒錯…^^ 謝謝!
我再po一次程式:
procedure Tmainreport.schoolchooseClick(Sender: TObject);
begin
mainreport.ComboBox1.Clear;
mainreport.ComboBox2.Clear;
case schoolchoose.ItemIndex of
0:
begin
mainreport.ComboBox1.Visible:=true;
//選擇學院
Query1.Active:=true;
while not Query1.Eof do
begin
ComboBox1.Items.Add( Query1.FieldByName('COL_CNAME').AsString);
Query1.Next;
end;
Query1.Close; //選擇系所
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add( 'Select depar.DEP_ID,depar.DEP_SCNAME,depar.DEP_LCNAME');
Query2.SQL.Add( 'From DEPARTMENT depar,COLLEGE coll');
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''combobox1.text''');
query2.Active:=true;
Query2.Open;
while not Query2.Eof do
begin
ComboBox2.Items.Add( Query2.FieldByName('DEP_LCNAME').AsString);
Query2.Next;
end;
Query2.Close;
end;
end; //case
end;
引言: 何不將你程式放上來讓大家幫你看看.............. @@~~飛翔在天際的精靈~~@@ |
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
哈哈…測了那麼久…其實我後來發現…
好像是我寫的邏輯有錯…
因我是當選了RadioGroup第一個的時候去做這些程式…
可是…當我去選了之後…
那段程式都已經跑完了…
所以…我都還沒去選擇combobox1…
是不是就不會有值了…
不過…我try過將combobox1.clear去掉…
也把combobox2.clear去掉…
我利用showmessage發現它有抓到combobox1的值了…高興了一下…
結果…combobox2仍沒值出現…
是不是真的邏輯錯了…??
引言:引言: procedure Tmainreport.schoolchooseClick(Sender: TObject); begin mainreport.ComboBox1.Clear; mainreport.ComboBox2.Clear; case schoolchoose.ItemIndex of 0:問題出在這裡喔 ComboBox1都清空了...哪來的值..... >>< face="Verdana, Arial, Helvetica"> |
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
Query2.SQL.Add( 'Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''combobox1.text'''); 你這一行對 SQL 的意義是有問題的
這樣的結果是, 你要它去幫你比對 coll.COLL_CNAME 等於 'combobox1.text' 這一串字喔, 而不是 combobox1.text 裡的值喔. 所以你還是要改成
Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME='''+ComboBox1.Items[ComboBox1.ItemIndex]+'''');
才能比對到 ComboBox1 裡你所選擇的值 另外, 建議你在 Tmainreport.schoolchooseClick 裡. 只取出 ComboBox1 的值.
procedure Tmainreport.schoolchooseClick(Sender: TObject); begin mainreport.ComboBox1.Clear; mainreport.ComboBox2.Clear; case schoolchoose.ItemIndex of 0: begin mainreport.ComboBox1.Visible:=true; //選擇學院 Query1.Active:=true; while not Query1.Eof do begin ComboBox1.Items.Add( Query1.FieldByName('COL_CNAME').AsString); Query1.Next; end; Query1.Close; end; end; //case end;在 procedure Tmainreport.ComboBox1Change 裡再去取得 ComboBox2 的值 procedure Tmainreport.ComboBox1Change(Sender: TObject); begin Query2.Close; Query2.SQL.Clear; Query2.SQL.Add( 'Select depar.DEP_ID,depar.DEP_SCNAME,depar.DEP_LCNAME'); Query2.SQL.Add( 'From DEPARTMENT depar,COLLEGE coll'); Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME=''' ComboBox1.Items[ComboBox1.ItemIndex] ''''); query2.Active:=true; Query2.Open; while not Query2.Eof do begin ComboBox2.Items.Add( Query2.FieldByName('DEP_LCNAME').AsString); Query2.Next; end; Query2.Close; end; |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |