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

設定範圍條件

尚未結案
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-07 08:10:52 IP:211.20.xxx.xxx 未訂閱
你們好, 我想請問一下…有關於設定條件範圍… 我的意思是… 我用一個comboBox做選擇條件類別,然後再用兩個Edit做條件範圍的「起」、「迄」.. 那麼…該如何做才能顯示出使用者所輸入的範圍資料?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-07 08:58:09 IP:202.62.xxx.xxx 未訂閱
您好﹗    比如說這個條件欄位的形態為整數形態(Integer)﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From 資料表 Where ');
  ADOQuery1.SQL.Add('FieldName Between :Temp1 and :Temp2');
  ADOQuery1.SQL.Text := StringReplace(ADOQuery1.SQL.Text, 'FieldName',
    ComboBox1.Text, []);
  ADOQuery1.Parameters.ParamByName('Temp1').Value := IntToStr(Edit1.Text);
  ADOQuery1.Parameters.ParamByName('Temp2').Value := IntToStr(Edit2.Text);
  ADOQuery1.Open;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-07 09:25:36 IP:211.20.xxx.xxx 未訂閱
cashxin2002你好.. 請問一下唷~Temp是什麼呀? ADOQuery1.Parameters.ParamByName('Temp1').Value這一行我不知道什麼意思耶! 還有[]要填什麼呢? 那 >
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-07 09:50:53 IP:202.62.xxx.xxx 未訂閱
您好﹗    Temp1和Temp2是在SQL語法中的Param變數﹐在SQL中指定變數后﹐就需要給變值賦值﹐以下兩句的作用就是賦值﹕ ADOQuery1.Parameters.ParamByName('Temp1').Value := IntToStr(Edit1.Text);   ADOQuery1.Parameters.ParamByName('Temp2').Value := IntToStr(Edit2.Text);    FieldName是一個暫定名稱變數﹐作用是代表條件欄位的名稱﹐因為在SQL敘述中欄位名可能是有變化的﹐所以用這個暫定名稱變數再配合下句的StringReplace函數﹐將ComboBox中被使用者選取的內容來替換這個FieldName暫定名稱變數﹒ ADOQuery1.SQL.Text := StringReplace(ADOQuery1.SQL.Text, 'FieldName',   ComboBox1.Text, []); 以上句中的[]﹐是參數的設定處﹐此句中沒有使用到StringReplace函數的參數﹐所以就沒有內容了﹐不需要填內容﹒此函數相關的參數如下﹕ [rfReplaceAll]﹕全部替代﹐若無此參數﹐只對第一次出現的字串做替代 [rfIgnoreCase]﹕忽略大小寫﹐若無此參數﹐則將大小寫視為不同 兩者合并[rfReplaceAll, rfIgnoreCase]﹕就是把上面兩種參數的作用一起用﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-07 10:56:38 IP:211.20.xxx.xxx 未訂閱
cashxin2002你好… 真不好意思,我還是不太了解你指的 Temp FieldName ....    這樣問你好了… 如果我的comboBox的選項有A1,B1,C1 那麼我選擇了A1... 表示Edit1和Edit2的內容我會輸入與A1相關的條件.. 那A1主要是指SQL裡的資料表內其一欄位.. 那我的Temp跟FieldName該如何輸入呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-07 11:16:13 IP:202.62.xxx.xxx 未訂閱
您好﹗    無論使用者選用ComboBox中的何項﹐此程式碼皆可﹐Temp1/Temp2/FieldName三個變數需要更改﹐因為這三個只是變數﹐實務中會根据使用者的輸入條件變更的﹐您試試看就知道了﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-07 11:57:38 IP:211.20.xxx.xxx 未訂閱
這是我的程式碼…但還是有錯誤... src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23327903&CC=521717">
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-07 12:20:45 IP:202.62.xxx.xxx 未訂閱
您好﹗    您是使用BDE﹐其不支援Parameter屬性﹐請改成如下﹕
begin
  form1.Query1.Close;
  form1.Query1.SQL.Clear;
  form1.Query1.SQL.Add('Select * From wssks Where ');
  form1.Query1.SQL.Add('FieldName Between :temp1 and :temp2');
  form1.Query1.SQL.Text := StringReplace(form1.Query1.SQL.Text, 
    'FieldName', ComboBox1.Text, []);
  form1.Query1.ParamByName('temp1').Value := Edit1.Text;//不要引號
  form1.Query1.ParamByName('temp2').Value := Edit2.Text;//不要引號
  form1.Query1.Open;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/07/07 12:27:31
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-07-07 13:29:33 IP:211.20.xxx.xxx 未訂閱
form1.Query1.Close;   form1.Query1.SQL.Clear;   form1.Query1.SQL.Add('Select * From wssks Where ');   form1.Query1.SQL.Add('SKS0010 Between :temp1 and :temp2');//SKS0010是我的欄位名稱   form1.Query1.SQL.Text := StringReplace(form1.Query1.SQL.Text,     'SKS0010', ComboBox1.Text, []);   form1.Query1.ParamByName('temp1').Value := Edit1.Text   form1.Query1.ParamByName('temp2').Value := Edit2.Text;   form1.Query1.Open;    以上是我的程式碼,但還是有這樣的錯誤.. < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23329155&CC=521745">
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-07-07 14:05:29 IP:202.62.xxx.xxx 未訂閱
您好﹗    您的ComboBox元件中是否有擷取到資料表的欄位名稱﹖在Query1.Open之前是否有在ComboBox中選擇相對應的欄位﹖    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-07-07 14:48:02 IP:211.20.xxx.xxx 未訂閱
沒有耶~ 要怎麼回應呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-07-07 17:17:24 IP:202.62.xxx.xxx 未訂閱
您好﹗    沒有在ComboBox中指定欄位名的話﹐在StringReplace后﹐SQL中的欄位名稱被ComboBox1.Text代替﹐而ComboBox1.Text的內容是Null值﹐那樣當然就會出錯嘍﹐貼出您相關此部分的所有程式碼﹐再幫你從程式碼中做修正﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-07-08 08:41:08 IP:211.20.xxx.xxx 未訂閱
cashxin2002你好...以下是您之前告訴我的程式碼...    form1.Query1.Close;   form1.Query1.SQL.Clear;   form1.Query1.SQL.Add('Select * From wssks  ');   form1.Query1.SQL.Add('Where SKS0010 Between :temp1 and :temp2');   form1.Query1.SQL.Text := StringReplace(form1.Query1.SQL.Text,     'SKS0010', ComboBox1.Text, []);   form1.Query1.ParamByName('temp1').Value := Edit1.Text;   form1.Query1.ParamByName('temp2').Value := Edit2.Text;   form1.Query1.Open; 因我不知道comboBox的項目如何去指定欄位... 所以會一直出錯... 以下是我的介面.. 我該如何設定呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-07-08 09:11:08 IP:202.62.xxx.xxx 未訂閱
您好﹗    需要先用程式碼控制將目前所有的欄位名稱加入到ComboBox中﹐然后再經由使用者的選擇來進行查詢﹒
在Form的OnCreate事件﹕
begin
  ComboBox1.Items.Clear;
  Query1.GetFieldNames(ComboBox1.Items);
end;
然后再[确定]按鈕中開始查詢﹕
begin
  if ComboBox1.Text = '' then
    ShowMessage('請先選擇類別')
  else
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('Select * From wssks ');
      Query1.SQL.Add('Where SKS0010 Between :temp1 and :temp2');
      Query1.SQL.Text := StringReplace(form1.Query1.SQL.Text,
'SKS0010', ComboBox1.Text, []);
      Query1.ParamByName('temp1').Value := Edit1.Text;
      Query1.ParamByName('temp2').Value := Edit2.Text;
      Query1.Open;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/07/08 09:12:56
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-07-08 11:21:24 IP:211.20.xxx.xxx 未訂閱
嗯~不好意思…現在在執行時…會出現這個錯誤    
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-07-08 11:45:35 IP:211.20.xxx.xxx 未訂閱
你們好,我再補充一點呀~ 就是我的程式執行一開始會出現下列錯誤訊息,這是怎麼一回事呀?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-07-08 12:14:18 IP:202.62.xxx.xxx 未訂閱
您好﹗    Query1沒有指定SQL敘述造成的錯誤﹐改成如下﹕
在Form的OnCreate事件﹕
begin
  Query1.Close;
  Query1.SQL.Add('Select * From wssks');
  ComboBox1.Items.Clear;
  Query1.GetFieldNames(ComboBox1.Items);
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-07-08 15:27:49 IP:211.20.xxx.xxx 未訂閱
你好, 嗯~可以了..謝謝你~ 但是,如果我把 >
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-07-08 16:20:55 IP:202.62.xxx.xxx 未訂閱
您好﹗    如果還是同之前的ComboBox一樣需要在程式中將資料表欄位一個個加入的話﹐建議您使用RadioGroup元件﹐其使用方法同ComboBox元件一樣﹐也是通過Items屬性來將資料表欄位名稱加入﹒
在Form的OnCreate事件﹕
begin
  Query1.Close;
  Query1.SQL.Add('Select * From wssks');
  RadioGroup.Items.Clear;
  Query1.GetFieldNames(RadioGroup.Items);
  RadioGroup1.ItemIndex := -1;
end;
然后再[确定]按鈕中開始查詢﹕
begin
  if RadioGroup1.ItemIndex = -1 then
    ShowMessage('請先選擇類別')
  else
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('Select * From wssks ');
      Query1.SQL.Add('Where SKS0010 Between :temp1 and :temp2');
      Query1.SQL.Text := StringReplace(form1.Query1.SQL.Text,
'SKS0010', RadioGroup1.Items[RadioGroup1.ItemIndex, []);
      Query1.ParamByName('temp1').Value := Edit1.Text;
      Query1.ParamByName('temp2').Value := Edit2.Text;
      Query1.Open;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-26 23:27:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!