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

為何抓不到combobox的值?

答題得分者是:ko
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-08 21:33:33 IP:211.74.xxx.xxx 未訂閱
請問…我在學院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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-08 22:59:36 IP:61.228.xxx.xxx 未訂閱
試試 if ComboBox1.ItemIndex >=0 then coll.COL_CNAME='' ComboBox1.Items[ComboBox1.ItemIndex] '''); else coll.COL_CNAME = NULL);
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-09 00:34:22 IP:211.74.xxx.xxx 未訂閱
有值出來…可是它的值是資料庫的所有值,且一直重覆好幾次,也就是 經由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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-09 01:04:16 IP:61.228.xxx.xxx 未訂閱
如果是這樣, 那很可能你要檢查一下你的 SQL COMMAND 的 WHERE 條件有沒有問題喔
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-09 01:52:51 IP:211.74.xxx.xxx 未訂閱
謝謝你… 不過where那真的沒錯… 我測試把combobox1所選的那個值直接放進where,而不是讓它自己去抓的話… 有run出我要的值… 因此… 我可以確定的是where那並沒抓到combobox1.text的值… 可是combobox1我明明已經產生一個值…???
引言: 如果是這樣, 那很可能你要檢查一下你的 SQL COMMAND 的 WHERE 條件有沒有問題喔
FrederickPau
資深會員


發表:4
回覆:161
積分:268
註冊:2002-11-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-09 02:23:48 IP:61.228.xxx.xxx 未訂閱
這樣吧 ... 你可以在 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-09 12:09:35 IP:61.221.xxx.xxx 未訂閱
引言://就是下面這行…拿掉的話會產生所有的系…可不是我要的… 但加了這行…就沒東西…可明明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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-09 18:57:57 IP:211.74.xxx.xxx 未訂閱
可以執行…但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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-09 19:43:54 IP:211.23.xxx.xxx 未訂閱
何不將你程式放上來讓大家幫你看看.............. @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-10 01:34:47 IP:211.74.xxx.xxx 未訂閱
不好意思…^^" 我的程式就只有一開始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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-10 03:05:03 IP:61.228.xxx.xxx 未訂閱
不知 challenge 兄有沒有試過我第三封回信的方法呢? 看起來, 我覺得那一行 SQL Command 有錯, 導致沒有取到值.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-10 07:53:34 IP:202.39.xxx.xxx 未訂閱
單引號使用有錯, 改成如下:
begin
 ...
  Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME='''   combobox1.text   '''');
end;
-- Everything I say is a lie.
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-11 01:17:32 IP:61.64.xxx.xxx 未訂閱
引言: procedure Tmainreport.schoolchooseClick(Sender: TObject); begin mainreport.ComboBox1.Clear; mainreport.ComboBox2.Clear; case schoolchoose.ItemIndex of 0:
問題出在這裡喔 ComboBox1都清空了...哪來的值.....
------
======================
昏睡~
不昏睡~
不由昏睡~
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-11 01:42:23 IP:211.74.xxx.xxx 未訂閱
不是單引號的問題…^^ 因之前用可以…
引言: 單引號使用有錯, 改成如下:
begin
 ...
  Query2.SQL.Add('Where coll.COL_ID=depar.COL_ID and coll.COL_CNAME='''   combobox1.text   '''');
end;
-- Everything I say is a lie.
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-12-11 01:54:14 IP:211.74.xxx.xxx 未訂閱
哈哈…測了那麼久…其實我後來發現… 好像是我寫的邏輯有錯… 因我是當選了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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-12-11 02:12:10 IP:61.228.xxx.xxx 未訂閱
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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-12-11 12:02:32 IP:61.221.xxx.xxx 未訂閱
是啊!! 程序錯了!! 問題在於你在還沒有指定ComboBox1的值,就去select所以ComboBox1的Text 是空值!!! 如果你是要ComboBox1的值跟schoolchoose的值對應 那要加上ComboBox1.ItemIndex :=schoolchoose.ItemIndex 1在還沒有select 之前
------
======================
昏睡~
不昏睡~
不由昏睡~
challenge
一般會員


發表:14
回覆:41
積分:11
註冊:2002-10-08

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-12-14 10:56:33 IP:211.74.xxx.xxx 未訂閱
真是謝謝各位前輩… 的確是程序錯了…combobox1須先抓到值才能繼續往下做… 所以…就可以了… 感激不盡…^^    
引言: 是啊!! 程序錯了!! 問題在於你在還沒有指定ComboBox1的值,就去select所以ComboBox1的Text 是空值!!! 如果你是要ComboBox1的值跟schoolchoose的值對應 那要加上ComboBox1.ItemIndex :=schoolchoose.ItemIndex 1在還沒有select 之前
系統時間:2024-11-22 20:31:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!