全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1284
推到 Plurk!
推到 Facebook!

請問用edit和button該怎麼實現搜尋功能?

尚未結案
bluesup0505
一般會員


發表:4
回覆:8
積分:2
註冊:2003-07-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-29 11:53:44 IP:210.70.xxx.xxx 未訂閱
請問.. 我要做一個搜尋.. 用edit和button... 要讓edit的東西連我設定的資料庫(有很多).. 就是類似我在edit打上xxx,他就會自動到資料庫搜尋他要的東西... 請問我應該要怎麼設定呢~.. 那如果搜尋出來的話.. 能在dbgird上指出來嗎~ 還是另在其他的元件上,比較好呢~ 這就是我的問題....
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-29 12:38:54 IP:63.84.xxx.xxx 未訂閱
您好!    請問您所說的Edit輸入, 會針對目前資料表中的單一欄位嗎? 若是的話, Query元件的SQL語法和Table元件的Locate皆可做到, 請參考如下:    使用ADOQuery元件例, Button1的OnClick事件:
begin
  if Edit1.Text := '' then
  begin  
    ShowMessage('請輸入查詢內容');
    Edit1.SetFocus;//先判斷Edit1中是否已經有查詢的條件
  end
  else
  begin
    ADOQuery1.Close;
    ADOQuery1.SQl.Clear;
    ADOQuery1.SQL.Add('Select * From 資料表名 where');
    ADOQuery1.SQL.Add('查詢之欄位名=''' Edit1.Text '''');
  //以上兩句也可用Parameters來完成, 如下:
  //ADOQuery1.SQL.Add('Select * From 資料表名 Where 查詢之欄位名=:X');
  //ADOQuery1.Parameters.ParamByName('X').Value := Edit1.Text;
    ADOQuery1.Open;
  end;
end;
============================================================================ 使用Table元件例, Button1的OnClick事件:
begin
  if Edit1.Text := '' then
  begin  
    ShowMessage('請輸入查詢內容');
    Edit1.SetFocus;
  end
  else
  begin
    if Table1.Locate('查詢之欄位名',Edit1.Text,[]) then
      ShowMessage('查詢到相符資料')
    else
      ShowMessage('查詢不到相符資料');
  end;
end;
至于DBGrid元件, 只要設置正确, 它是會根据查詢的結果自動顯示出資料的. 如果您是要使用ADO元件, 并是在多資料表中進行查詢工作, 可利用ADOConnection元件之GetTableName方法取得資料表的名稱, GetFieldName取得欄位名稱, 判斷資料表和欄位后再進行查詢. 參考看看! ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/29 13:03:20
------
忻晟
bluesup0505
一般會員


發表:4
回覆:8
積分:2
註冊:2003-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-02 15:36:15 IP:210.70.xxx.xxx 未訂閱
程式是可以.. 但是我有很多的table~ 還有其他的方法嗎~ 而且我搜尋的時候~ 要輸入全部的名字~才找的到~ 只輸入一個字~只說找的到~但不會指到那一筆資料~ 而且必須用滑鼠按button才能去搜尋~ 不能用鍵盤..... 這就是我的問題...
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-02 17:16:30 IP:63.84.xxx.xxx 未訂閱
您好﹗    您所說的要輸入全部的名字﹐才可以查詢﹒ 其實也可用Locate方法的參數做以控制﹐Locate方法中有兩個查詢的參數﹕loCaseInsensitive和loPartialKey﹐分別代表查詢時不分字母大小寫和查詢時只要部分資料符合﹐此筆資料就算符合﹒語法如下﹕
begin
  if Table1.Locate('查詢之欄位名',Edit1.Text,[loCaseInsensitive, loPartialKey]) then
    ShowMessage('查詢到相符資料')
  else
    ShowMessage('查詢不到相符資料');
end;
//這樣查詢的結果可能會有很多筆資料會相符﹐因為部分內容和查詢條件相符即可﹐我有測試過這樣的查詢﹐若有查詢到的結果﹐指針應該會指向目前查詢到結果的第一筆資料錄 使用Query或ADOQuery資料集元件時﹐利用SQL語法做查詢的動作﹐可以使用%來表示萬元字符﹐即可代表任何一個字元﹐結合Like運算子來做同樣的查詢﹐如下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQl.Clear;
  ADOQuery1.SQL.Add('Select * From 資料表名 where');
  ADOQuery1.SQL.Add('查詢之欄位名 Like ''%' Edit1.Text '%''');
  //以上兩句也可用Parameters來完成, 如下:
  //ADOQuery1.SQL.Add('Select * From 資料表名 Where 查詢之欄位名=:X');
  //ADOQuery1.Parameters.ParamByName('X').Value := '%' Edit1.Text '%';
  ADOQuery1.Open;
end;
//所有符合的查詢條件的資料都會顯示出來﹐指針會指向會指向目前查詢到結果的第一筆資料錄﹒ 您所說的要用滑鼠去點擊Button來做查詢﹐而不能使用鍵盤﹒ 較簡單的處理方法﹐可以把這個查詢的Button按鈕設成當前Form中的Default﹒點擊該Button﹐在其Default屬性中﹐將其屬性值設為True﹐其作用就是在這個Form中﹐只要您按下回車鍵﹐就會触發這個Button的OnClick事件﹒ //注﹕每個Form中只能有一個Default元件 其實﹐應該是有很多種可以相通變通的方法﹐看您自己的需要可以進行組合﹐參考一下﹐再試試看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-06-28 8:22:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!