查询问题 (50分)

  • 主题发起人 主题发起人 p2p
  • 开始时间 开始时间
P

p2p

Unregistered / Unconfirmed
GUEST, unregistred user!
我进行模糊查询的时候老是问题,没有出错,只是查询不了数据来,为什么会这样的啊。
procedure TForm1.Button4Click(Sender: TObject);
var
str1,str2,str3:string;
begin
str:=inputbox('查询条件','请输入你的查询:','代号');
with query1 do
begin
close;
sql.clear;
sql.Add('select * from item where 代号 like:num and 主板 like:name and 内存 like:ram' );
parambyname('num').AsString :='%'+str1+'%' ;
parambyname('name').AsString :='%'+str2+'%' ;
parambyname('ram').AsString :='%'+str3+'%' ;
open;
end;
end;
 
你的查询怎会三个字段用同一个Str查!会不会弄错了?
 
没有错,是不是表里没有符合条件的记录
 
若你的查询条件没错的话
是表里没有符合条件的记录!
 
Like和参数之间应该有空格的,Like :num
 
Like和参数之间应该有空格的,Like :num 我觉得也是那样的.
如果确实不行的话,那你可以不采用传输参数的方法而直接写sql语句的:
sql.Add('select * from item where 代号 like ''%'+str1+'%'' and 主板 like ''%'+str2+'%''' and 内存 like ''%'+str3+'%'''' );

ok???
 
parambyname('num').AsString :='''%'+str1+'%''' ;
parambyname('name').AsString :='''%'+str2+'%''' ;
parambyname('ram').AsString :='''%'+str3+'%''' ;

试试这样。
 
我的判断是出在str1,str2,str3上
程序运行时检测一下他们的值
 
同意楼上,检测一下其中的str1,str2,str3的值,在写法较习惯于lemonloveyan的写法
 
调试程序时,在open之前先用messagedlg等方式将sql.text显示一下,如果没有语法错误
再将sql.text复制到数据库的操作环境中,看是否运行正常并能查找到相关记录。
如果数据库的操作环境中是正常的话,在程序中就应该没有问题。
 
好像没有给str1,str2,str3赋值
 
后退
顶部