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

單行文字轉SQL查詢條件

答題得分者是:P.D.
cd109
一般會員


發表:23
回覆:33
積分:11
註冊:2003-12-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-28 11:50:14 IP:203.66.xxx.xxx 未訂閱
請問各位先進: 我現在有一個查詢的輸入欄位(edit),想要在其中輸入多個值來作為查詢條件,範例如下 edit1.text:='A;B;C'==>使用';'來當作分隔的符號(請問我要如何拆字) sql=>(username like %A% or username like %B% or username like %C%) 請問我要如何做到 謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 12:33:45 IP:210.65.xxx.xxx 未訂閱
Hi cd109,    
procedure TForm1.Button1Click(Sender: TObject);
var
  SL : TStrings;
  I : Integer;
  SQLCommand : String;
  LikeCommand : String;
begin
  SL := TStringList.Create;
  SL.Delimiter := ';';
  SL.DelimitedText := Edit1.Text;
  SQLCommand := 'SELECT * FROM YOURTABLE WHERE 1 = 1';
  LikeCommand := '';
  For I := 0 to SL.Count - 1 do
    begin
      if LikeCommand = '' then
        LikeCommand := ' AND (USERNAME LIKE '   Quotedstr('%'    SL.Strings[I]   '%')
      else
        LikeCommand := LikeCommand   ' OR USERNAME LIKE '   Quotedstr('%'    SL.Strings[I]   '%');
    end;
  IF LikeCommand <> '' THEN
    LikeCommand := LikeCommand   ')';
  SL.Free;
  Query1.SQL.Clear;
  Query1.SQL.Add(SQLCommand   LikeCommand);
  Query1.Open;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-28 12:45:03 IP:61.71.xxx.xxx 未訂閱
引言: 請問各位先進: 我現在有一個查詢的輸入欄位(edit),想要在其中輸入多個值來作為查詢條件,範例如下 edit1.text:='A;B;C'==>使用';'來當作分隔的符號(請問我要如何拆字) sql=>(username like %A% or username like %B% or username like %C%) 請問我要如何做到 謝謝
function TForm1.getData(Var myS:string): string;
     var nowpos: integer;
         posstr, linedata: string;
begin
     linedata:= myS;
     nowpos:= Pos(';',linedata);
     if nowpos > 0 then begin
        posstr:= copy(linedata,1,nowpos-1);
        myS:= trim(copy(linedata,nowpos 1,length(linedata)));
     end
     else myS:= '';
     result:= posstr;
end;    procedure TForm1.Button1Click(sender: TObject);
      var myS: string;
          getWord: string;
begin
    myS:= Edit1.Text;  // 此法的Text值必須為'A;B;C;'
    while trim(myS)<>'' do begin
       getWord:= Form1.getData(myS);  -->可以依序取出A,B,C三值
    end;    
end;    
以上是示範如何將字串分段截取, 寫法當然不只上面一種 至於取出的值如何代入sql中請思考一下 以上程式未經實作, 可能會有部份瑕疵, 請用tracer方式追蹤除錯
cd109
一般會員


發表:23
回覆:33
積分:11
註冊:2003-12-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 16:19:49 IP:203.66.xxx.xxx 未訂閱
謝謝兩位大哥犧牲午休時間解決問題,兩位的解決方式都讓我學到不少,我的問題已經解決了,但是分數只能給其中一位真是不好意思,我在此對幫助我卻未得到分數的大哥說聲抱歉.
系統時間:2024-11-25 18:32:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!