请大家帮忙看看这段代码,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的程序员是怎么想的!