读书人

有段查询代码,请帮忙看看,不胜感激~解

发布时间: 2012-02-25 10:01:48 作者: rapoo

有段查询代码,请帮忙看看,不胜感激~
请教,按采购人查询完后总提示有0个商品,可明明不是0个的,请大家帮忙看看哪有问题,我用的是DELPHI自带的数据库.谢谢~
procedure TForm11.BitBtn3Click(Sender: TObject);
var
sqlstr,strval,comstr:string;
flag:integer;
begin
memo1.clear;
memo1.Lines.Add(' 商品名称, 数量 ');
memo1.Lines.Add('----------------------------------------------') ;
flag:=0;
strval:=trim(edit1.Text);
if strval<>''then
begin
sqlstr:='select * from rkguanli where(mingcheng='+'"+strval+")';
flag:=1;
end;
strval:=trim(edit2.Text);
if strval <>''then
begin
if flag=0 then
begin
sqlstr:='select * from rkguanli where(caigourne='+'"+strval+")';
flag:=1;
end
end
else
begin
sqlstr:=sqlstr +'and(caigourne='+'"+strval+")';
end;



if flag=0 then
begin
showmessage ('请正确输入查询条件');
end;
query1.Close;
query1.sql.text:=sqlstr;
query1.Open;
flag:=0;
while not query1.Eof do
begin
sqlstr:=query1.fieldbyname('mingcheng').AsString ;
sqlstr:=sqlstr+','+query1.fieldbyname('shuliang').asstring;
memo1.Lines.add(sqlstr);
query1.Next;
flag:=flag+1;
end;
memo1.Lines.Add('---------------------------------------------') ;
memo1.Lines.add('一共有'+inttostr(flag)+'项符合查询条件');
end;







[解决办法]
你把SQL语句在数据库里运行看一下。。
[解决办法]
姑且不看运行结果,你的程序运行就应该会出错,以下SQL是有问题。
sqlstr:= "select * from rkguanli where(mingcheng= "+ ""+strval+") ";
应该改成
sqlstr:= 'select * from rkguanli where (mingcheng= '''+strval+''')';

sqlstr:= "select * from rkguanli where(caigourne= "+ ""+strval+") ";
改成
sqlstr:= 'select * from rkguanli where (caigourne= '''+strval+''')';

sqlstr:=sqlstr + "and(caigourne= "+ ""+strval+") ";
改成
sqlstr:=sqlstr + ' and(caigourne='''+strval+''')';


楼主,命名及编程规范以及代码质量还是有待提高
[解决办法]
检查一下表
[解决办法]
把上面改成带else的试试
if flag=0 then

showmessage ( "请正确输入查询条件 ")
else
begin
query1.Close;
query1.sql.text:=sqlstr;
query1.Open;
flag:=0;
while not query1.Eof do
begin
sqlstr:=query1.fieldbyname( "mingcheng ").AsString ;
sqlstr:=sqlstr+ ", "+query1.fieldbyname( "shuliang ").asstring;
memo1.Lines.add(sqlstr);
query1.Next;
flag:=flag+1;
end;
end;
[解决办法]
仔细查看自己的查询条件

读书人网 >.NET

热点推荐