各位好心人帮忙小妹看看一下~~下面的这几行SQL语句到底哪里有错了,我在调试时没通过.
问题一:
  tmpstr:='';//tmpstr --是小妹自己定义的局部变量,以下相同
  tmpstr:='select * from ';
  tmpstr:=tmpstr+' shangjzdmk ';//(shangjzdmk---是某个表)
  tmpstr:=tmpstr+' where ';
  tmpstr:=tmpstr+' banj ';//(banj---是班级字段名)
  tmpstr:=tmpstr+' like ';//(想模糊查询)
  tmpstr:=tmpstr+'%';
  tmpstr:=tmpstr+''''+edit1.Text+'''';//(edit1.Text---是要传进去的那个班级名)
问题二:
tmpstr:='';
tmpstr:='select * ';
tmpstr:=tmpstr+ ' from ';
tmpstr:=tmpstr+' ckkqk ' ;//ckkqk----某个表名
tmpstr:=tmpstr+' where ';
tmpstr:=tmpstr+' riq between ';//riq--指日期
tmpstr:=tmpstr+''''+str1+''''+' and ';//str1---要传进去的日期范围,以下相同
tmpstr:=tmpstr+''''+str2+''''+' and ';
tmpstr:=tmpstr+' yongjbh between ';//yongjbh---指用机编号
tmpstr:=tmpstr+''''+str3+''''+' and ';
tmpstr:=tmpstr+''''+str4+''''+' and ';
tmpstr:=tmpstr+' leib ';//leib----指类别
tmpstr:=tmpstr+'=';
tmpstr:=tmpstr+' 扣 ' ;
补充一下:问题二的最后一行有错,我单步调试时查出来的,不知道怎样写才正确,问题一的错误提示是传进去的那个班级名称(比如是大03电子信息一班)前面有语法错误,请问上面小姑娘写的到底哪里有错了,各位前辈帮帮找错顺便帮改正错误,小姑娘感激涕零的哈~~~~问题解决了我会及时结账的.

解决方案 »

  1.   

    给你一个最简单,简单到家的办法:如果拿不准,就把你的字串临时输出到一个memo里看一下。例如,下面是这把你的两个字串,输出的结果,你看一下,错在哪里了,一目了然。问题一:select * from  shangjzdmk  where  banj  like %'Edit1'问题二:select *  from  ckkqk  where  riq between '+str1+' and '+str2+' and  yongjbh between '+str3+' and '+str4+' and  leib = 扣 注:问题二中的所有''''(四连')我给换成了'''才编译通过,结果如上。
    如果你想生成两边带单引号的字串,可以参考用QuoTedStr()函数,或用#39,这样不会搞晕
      

  2.   

    问题二的最后一行有错,我单步调试时查出来的
    ------------------------------------------------用Delphi提供的代码颜色都能看出的错误,何必要用单步?检查字串拼写是否正确,实际也用不着单步。
      

  3.   

    在此只能给你改一下第一个了。第二个,因为不知你的字段是什么类型的。第一个的:你试一下用这些代码(实际可以简化成二句或一句的)  tmpstr:='';//tmpstr --是小妹自己定义的局部变量,以下相同
      tmpstr:='select * from ';
      tmpstr:=tmpstr+' shangjzdmk ';//(shangjzdmk---是某个表)
      tmpstr:=tmpstr+' where ';
      tmpstr:=tmpstr+' banj ';//(banj---是班级字段名)
      tmpstr:=tmpstr+' like ';//(想模糊查询)
      tmpstr:=tmpstr + QuoTedStr('%'+edit1.Text);//(edit1.Text---是要传进去的那个班级名)
      

  4.   

    问题一:
      tmpstr := 'select * from shangjzdmk ';
      tmpstr := tmpstr + ' where ';
      tmpstr := tmpstr + ' banj like ';
      tmpstr := tmpstr + '''%' + edit1.Text + '''';问题二:
      tmpstr := 'select * ';
      tmpstr := tmpstr + ' from ckkqk ';
      tmpstr := tmpstr + ' where ';
      tmpstr := tmpstr + ' riq between ';
      tmpstr := tmpstr + '''' + str1 + ''' and ';
      tmpstr := tmpstr + '''' + str2 + ''' and ';
      tmpstr := tmpstr + ' yongjbh between ';
      tmpstr := tmpstr + '''' + str3 + ''' and ';
      tmpstr := tmpstr + '''' + str4 + ''' and ';
      tmpstr := tmpstr + ' leib = ''扣''';
      

  5.   

    各位好心人帮忙小妹看看一下~~下面的这几行SQL语句到底哪里有错了,我在调试时没通过.
    问题一:
      tmpstr:='';//tmpstr --是小妹自己定义的局部变量,以下相同
      tmpstr:='select * from ';
      tmpstr:=tmpstr+' shangjzdmk ';//(shangjzdmk---是某个表)
      tmpstr:=tmpstr+' where ';
      tmpstr:=tmpstr+' banj ';//(banj---是班级字段名)
      tmpstr:=tmpstr+' like ';//(想模糊查询)
      tmpstr:=tmpstr+'%';
      tmpstr:=tmpstr+''''+edit1.Text+'''';//(edit1.Text---是要传进去的那个班级名)关于问题一 你用delphi  设置端点 到 你的sql语句执行之前  看看tmpstr 的值是多少就好解决了问什么要 那么多步呢?1步就不就可以了
     tmpstr:='select * from shangjzdmk where banj like %'+quotedstr(edit1.text)+'%' 给你个建议 不要用 select * ,最好把每个字段都写出来
     用quotedstr  这个的作用 和 '''' 是一样的 ,但是更好看些  那么多''' 到时候 出错不好检查