使用SQL实现字段数据实现模糊查找的问题。。。 |
答題得分者是:cwc65536
|
57605993
一般會員 發表:2 回覆:8 積分:2 註冊:2007-10-06 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject);
var N:string; begin N:=trim(edit1.Text); case radiogroup1.ItemIndex of 0: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:=N '%'; open; end; 1: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N; open; end; 2: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N '%'; open; end; end; 按照书上所写 0: 是查询某字符(串)开头的记录; 1:是查询某字符(串)结尾的记录; 2:是查询包含某字符(串)的记录; 可运行以后,后面两个都可以查到,第一个查以字符串开头的记录怎么都查不到,26个字母都试遍。。。我看代码都差不多。。找不到原因;
------
新手。。 |
cwc65536
初階會員 發表:47 回覆:121 積分:48 註冊:2004-10-14 發送簡訊給我 |
var 宣告是 N
SQL 裏用的是 N1 有關係嗎 ? 用 debug 看一下 SQL.text 內容, 然後, 用資料庫軟體, 測試 ===================引 用 57605993 文 章=================== procedure TForm1.Button1Click(Sender: TObject); var N:string; begin N:=trim(edit1.Text); case radiogroup1.ItemIndex of 0: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:=N '%'; open; end; 1: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N; open; end; 2: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N '%'; open; end; end; 按照书上所写 0: 是查询某字符(串)开头的记录; 1:是查询某字符(串)结尾的记录; 2:是查询包含某字符(串)的记录; 可运行以后,后面两个都可以查到,第一个查以字符串开头的记录怎么都查不到,26个字母都试遍。。。我看代码都差不多。。找不到原因; |
57605993
一般會員 發表:2 回覆:8 積分:2 註冊:2007-10-06 發送簡訊給我 |
|
cwc65536
初階會員 發表:47 回覆:121 積分:48 註冊:2004-10-14 發送簡訊給我 |
在 open 這行設 中斷點
執行程式, 當程式執行到中斷點 在功能表 RUN -> Add Watch , 新增 query1.sql.text , 會列出實際完整的 SQL 指令 這行指令, 應該可以在 資料庫的工具程式, 測試看看結果是否你要的. 這是很基本的程式偵錯, 一定要會的, 否則怎麼寫程式 ....... 加油 ===================引 用 57605993 文 章=================== procedure TForm1.Button1Click(Sender: TObject); var N:string; begin N:=trim(edit1.Text); case radiogroup1.ItemIndex of 0: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:=N '%'; open; end; 1: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N; open; end; 2: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add('where firstname like :N1'); params[0].AsString:='%' N '%'; open; end; end; 按照书上所写 0: 是查询某字符(串)开头的记录; 1:是查询某字符(串)结尾的记录; 2:是查询包含某字符(串)的记录; 可运行以后,后面两个都可以查到,第一个查以字符串开头的记录怎么都查不到,26个字母都试遍。。。我看代码都差不多。。找不到原因; |
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
[code delphi] var N:string; begin N:=trim(edit1.Text); case radiogroup1.ItemIndex of 0: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add(Format('where firstname like ''%s''',[N '%'])); open; end; 1: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add(Format('where firstname like ''%s''',['%' N])); open; end; 2: with query1 do begin sql.Clear; sql.Add('select empno,firstname'); sql.Add('from employee'); sql.Add(Format('where firstname like ''%s''',['%' N '%'])); open; end; Edit1.Text:= Query1.SQL.Text; { Here, 請 debug 一下 ! } end; [/code]
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2007-10-12 20:46:12, 註解 無‧
|
57605993
一般會員 發表:2 回覆:8 積分:2 註冊:2007-10-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |