我的查询语句是这样的:
Try
    ADOQuery1.Close;
    ADOQuery1.SQL.Text := 'SELECT * FROM IODate WHERE aa = i AND ae = j';
    ADOQuery1.Open;
   DBGrid1.Update;
   DBGrid1.Show;
  Except
  //  Memo1.SetFocus;
   FORM2.Close;
   end;
原来的ADOQuery1.SQL.Text 是显示整个数据库的,就是select * from IODate,这个IODate就是表名
 
i是指文本型的用户名,j是时间型的一个日期
为什么我查询的时候老是出错,错误是i和j没有默认值,这是怎么回事啊??
还有就是如果我把i.j换成常量来进行查询,错误就没了,但是数据库中显示的查询结果只有网格,没有数据,这个是怎么回事??到底执行查询的代码该怎么写啊??请教!!

解决方案 »

  1.   

    数据库中显示的查询结果只有网格  ---  DBGrid.DataSet   Column.FieldName= (这一项未设)ADOQuery1.SQL.Text := 'SELECT * FROM IODate WHERE aa = i AND ae = j';i与j 有没设置单引号 如果设计时报错,则是因为你的变量长度指定为0了
      

  2.   

    ADOQuery1.SQL.Text := 'SELECT * FROM IODate WHERE aa = '+'''i'''+' AND ae = j'
      

  3.   

    i,j作为参数
    adoquery1.parameters.parambyname('i').value:='11';
      

  4.   

    SZSMALL(SC)
    ADOQuery1.SQL.Text := 'SELECT * FROM IODate WHERE aa = '+'''i'''+' AND ae = j'
    -----------------------------------------------------------------------------
    同意上面的,你的符号都没有写直接就+了,这样是不行的~~,是会出问题的~~~
      

  5.   

    还有点提议AND后面应该还需要?
    偶常用的写法(可以比较其它地方的数据)+‘AND’+‘(黑糊糊=’+学习.TEXT+‘)’;
      

  6.   

    还有日期型的是需要这样的比较的:
    WHERE  DATE=#‘+FORMATDATETIME(’YYYY-MM-DD‘,YOUDATE)+’#‘;
    你那样比较也是不对的~~~~
    也是会出问题的~~~~~~~~~~
      

  7.   

    在ADOQuery1.Close;后ADOQuery1.SQL.Text := 'SELECT * FROM IODate WHERE aa = i AND ae = j';前加上ADOQuery1.SQL.clear;
      

  8.   

    ADOQuery1.SQL.Text :='Select * From I0Date Where aa =''' + i 
                          + ''' And ae =''' + j + ''''
      

  9.   

    变量怎么能直接放里面 
    'Select * From I0Date Where aa ='+#39+i+#39+' and '+#39+j+#39
      

  10.   

    adoquery1.sql.clear;
    adoquery1.sql.add('Select * from IOData where aa=:i and ae=:j');
    adoquery1.paremeters.parambyname('i').value:='abcd';
    adoquery1.paremeters.parambyname('j').value:='efg';
    adoquery1.open;是不是应该这样应用查询参数啊。
      

  11.   

    adoquery1.paremeters.parambyname('j').value:='efg';
    改成
    adoquery1.paremeters.parambyname('j').value:=datetimepicker1.datetimej是个日期时间的。
      

  12.   

    i,j作为参数
    adoquery1.parameters.parambyname('i').value:='11';
    这样比较好!