sql的问题,救命呀(50分)

  • 主题发起人 主题发起人 dong1024
  • 开始时间 开始时间
D

dong1024

Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下,我运行它第一次是没问题的,但我查完一个,再查一个的时候就不行了
它没出错,但查不到东西
procedure TForm_sblxcx.Button1Click(Sender: TObject);
var
querystr,
wherestr:string;
begin
if (length(trim(edit1.text))=0) then begin
querystr:='select num,sblx,sbmc from zcb'
end
else begin
with combobox1 do
case (combobox1.ItemIndex) of
0 : wherestr:='where num LIKE'+'''%'+edit1.text+'%''';
1 : wherestr:='where sblx LIKE'+'''%'+edit1.text+'%'';';
2 : wherestr:='where sbmc LIKE'+'''%'+edit1.text+'%'';';
end;
querystr:='select num,sblx,sbmc from zcb '+wherestr;
end;

with dm_sbgl.Query_cx do
begin
Close;
SQL.clear;
SQL.add(querystr);
open;
edit1.text:=' ';
end;
end;
 
查不到东西是什么概念? 空记录集? 你肯定你输入的条件可以查到记录吗?
 
是空记录,是可以查到的东西的,因为我第一次就查那个记录,就查到,如果查第二次
就不行了
 
你是说连点两次Button中间没有再往Edit1里输入什么东东?
如果是这样,那就不用说了:)
 
每次查询前,把query的sql内容显示出来看看sql串是不是正确?
 
当然输了东西,我还单步运行了,sql串没错
 
两次的sql串一样吗?这期间你没做别的操作?比如过滤什么的...
 
什么都没做,就是按了一次button后,再输一次数据来查,就查不到了
 
每次都是第一次能查到,以后就查不到了?
 
就是 小黄说的那种情况,是呀,每次都是第一次能查到,以后就查不到了
 
是不是在beforeopen之类的时间中有代码改到了SQL属性?
 
>>edit1.text:=' ';
这一句右边是个空格吧?如果你的程序里真是空格,那就把它改成空''再试试。
 
哦,没有呀,我都没退出窗口,怎么改,加上如果我运行的是

if (length(trim(edit1.text))=0) then begin
querystr:='select num,sblx,sbmc from zcb'
这种情况的话,就可以几次都行
 
哦,行了,奇怪干吗不要空格就行了,想到告诉我好吗
 
'% abc'和'%abc'当然不一样了,like要求的这个参数里'%'是可以代表任意字符串,
但除了'%'、'*'或者'?'以外的部分是要求精确匹配的呀。

建议你在这段程序的开头加一句——
Edit1.Text := Trim(Edit1.Text);
 
单步执行,监测一下wherestr的值
如果不行,把那个query删了,再拖一个下来!
 
后退
顶部