單行文字轉SQL查詢條件 |
答題得分者是:P.D.
|
cd109
一般會員 發表:23 回覆:33 積分:11 註冊:2003-12-22 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
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 發送簡訊給我 |
引言: 請問各位先進: 我現在有一個查詢的輸入欄位(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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |