请大家帮忙看看这段代码,SQL语句有关问题,多谢
请大家帮忙看看这段代码,SQL语句问题,谢谢!
有两个问题,一个是degrid里除了数字显示的都是乱码,还有就是查询不出来,出错提示为:gerenal sql error!请大家帮忙看看,谢谢了~
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
sqlstr:= "select *from rkguanli where(caigouren= "+ ""+strval+") ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(name= "+ ""+strval+") ";
end;
strval:=trim(edit3.Text);
if strval < > " "then
begin
sqlstr:= "select *from rkguanli where(zongjia=edit3.Text) ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(zongjia= "+ ""+strval+") ";
end;
strval:=trim(edit4.Text);
if strval < > " "then
begin
sqlstr:= "select *from rkguanli where(rukuriqi= "+ ""+strval+") ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(rukuriqi= "+ ""+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;
end.
------解决方案--------------------
断点调试一下,看看你最后的SQL语句是什么?应该是SQL语句的错误!
PS:CSDN真垃圾,为什么单引号都变成了双引号?难道是因为数据库里面存储的时候又问题吗?还是你们自己怕我们输入的内容里面包含了单引号'而导致你们的SQL语句执行错误呢?
这里是单引号:'
这里是双引号:"
------解决方案--------------------
单引号竟然成了空格加上双引号,真不知道CSDN的程序员是怎么想的!
有两个问题,一个是degrid里除了数字显示的都是乱码,还有就是查询不出来,出错提示为:gerenal sql error!请大家帮忙看看,谢谢了~
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
sqlstr:= "select *from rkguanli where(caigouren= "+ ""+strval+") ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(name= "+ ""+strval+") ";
end;
strval:=trim(edit3.Text);
if strval < > " "then
begin
sqlstr:= "select *from rkguanli where(zongjia=edit3.Text) ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(zongjia= "+ ""+strval+") ";
end;
strval:=trim(edit4.Text);
if strval < > " "then
begin
sqlstr:= "select *from rkguanli where(rukuriqi= "+ ""+strval+") ";
flag:=1;
end
else
begin
sqlstr:=sqlstr + "and(rukuriqi= "+ ""+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;
end.
------解决方案--------------------
断点调试一下,看看你最后的SQL语句是什么?应该是SQL语句的错误!
PS:CSDN真垃圾,为什么单引号都变成了双引号?难道是因为数据库里面存储的时候又问题吗?还是你们自己怕我们输入的内容里面包含了单引号'而导致你们的SQL语句执行错误呢?
这里是单引号:'
这里是双引号:"
------解决方案--------------------
单引号竟然成了空格加上双引号,真不知道CSDN的程序员是怎么想的!