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

使用SQL实现字段数据实现模糊查找的问题。。。

答題得分者是:cwc65536
57605993
一般會員


發表:2
回覆:8
積分:2
註冊:2007-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-10 12:46:00 IP:220.178.xxx.xxx 訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-10 15:10:31 IP:203.203.xxx.xxx 訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-10 15:59:34 IP:220.178.xxx.xxx 訂閱
应该没有多大关系,那是两个不同的参数,只是恰好一个N一个N1,
至少后面两种查找方法可以实现也说明了一点。
你说的那个debug之类的操作我不太懂。
能说明详细一点吗?麻烦你了。
------
新手。。
cwc65536
初階會員


發表:47
回覆:121
積分:48
註冊:2004-10-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-10 23:33:02 IP:203.203.xxx.xxx 訂閱
在 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-12 20:44:08 IP:203.73.xxx.xxx 訂閱

[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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-10-13 13:08:30 IP:220.178.xxx.xxx 訂閱
谢谢你们的帮助,呵呵,我会更加努力学习,
刚刚开始学有点急躁,有很多地方,明明可以仔细检查就能解决的问题,
大费周折的在各个论坛上发帖子问人。
真的是麻烦你们了!
以后会注意的!
------
新手。。
系統時間:2024-11-24 16:04:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!