在Edit纺辑框中输入任何字符制执行下面语句会提示错误信息
[color=#FF0000]Project Project1.exe raised exception class EOleException with message '在关键字 'like' 附近有语法错误。'. (Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
begin
sqlstr1:='select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号,'
+'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom';
sqlstr2:='select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号,'
+'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom'
+'where bom_no like +'''+'%'+edit1.Text+'%'+'''';
if edit1.Text =''
then
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:= sqlstr1;
adoquery1.open;
end
else
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text := sqlstr2;
adoquery1.Open;
end;
end;请高手帮帮忙,我只是想实现按Edit框内的容易进行模糊查询功能
[color=#FF0000]Project Project1.exe raised exception class EOleException with message '在关键字 'like' 附近有语法错误。'. (Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
begin
sqlstr1:='select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号,'
+'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom';
sqlstr2:='select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号,'
+'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom'
+'where bom_no like +'''+'%'+edit1.Text+'%'+'''';
if edit1.Text =''
then
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:= sqlstr1;
adoquery1.open;
end
else
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text := sqlstr2;
adoquery1.Open;
end;
end;请高手帮帮忙,我只是想实现按Edit框内的容易进行模糊查询功能
解决方案 »
- 如何在memo失去焦点时让选中文字仍然显示
- 如何判断ADO中连接异常
- 在DELPHI6的DBGRID中如何将每一行的记录显示为不同的颜色?在线等等待!
- ado升级问题
- 怎么样在过程中间中止一个过程?(即满足一个条件就不运行下面的代码,有没有像C中的GOTO用法的语句?)
- 请教如何选DBGrid1某区域的记录,并复制到剪切版?
- 请问什么方法可使FORM中的控件一直显示在最顶端??
- 如何让一个ClientDataSet当前记录指针向前移到第X个记录?
- Delphi 6.0转换vb代码的问题
- 关于在eclipse中用pyqt实现可视化编程
- 每次输入法都变成一本机的一种了
- 在memo中使用ctrl+A 快捷键
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom '
+ 'where bom_no like + ''% '+edit1.Text+ '%' ' ';
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom ';
sqlstr2:= 'select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号, '
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom '
+ 'where bom_no like ''% '+edit1.Text+ '%'' ';
Str: String;
begin
Str := 'select bom_no as BOM编号, name as 货品名称, prd_no as 货品编号, ' +
'prd_ as 货品规格, wh_no as 库位, qty as 数量 from mf_bom ';
if not SameText(Trim(Edit1.Text), EmptyStr) then
Str := Format('%s Like ''%%%s%%''', [Str, Trim(Edit1.Text)]);
with ADOQuery1 do begin
Active := False;
SQL.Text := Str;
Active := True;
end;
end;
我写SQL语言,喜欢这样 sql.clear ;sql.add(SQL字符串型语句);
你把动态产生的SQL复制到查询分析器中调试一下
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
begin
sqlstr:= 'select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号, '
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom '
+ 'where bom_no like'+QuotedStr('%'+trim(edit1.Text)+'%');//QuotedStr(trim(edit1.Text)+'%')匹配模式
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqlstr);
adoquery1.open;
end;
//edit1.Text为空的时候相当于没有where条件语句
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
begin
sqlstr:= 'select bom_no as BOM编号,name as 货品名称,prd_no as 货品编号, '
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom '
+ 'where bom_no like'+QuotedStr('%'+trim(edit1.Text)+'%');//QuotedStr(trim(edit1.Text)+'%')匹配模式
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqlstr);
adoquery1.open;
end;
//edit1.Text为空的时候相当于没有where条件语句
在edit中输入内容,调试没有问题,点击查询就弹出错误信息,说 like 附近有语法错误!
+ 'prd_ as 货品规格,wh_no as 库位,qty as 数量 from mf_bom '
+ 'where bom_no like + '''+ '%'+trim(edit1.Text)+ '%'+ ''';
用这个试一试