with Fdm.ADOQuery1 do
  begin
    close;
    sql.Clear ;
    sql.Add('select * from jytsxx where jcrq < date- Fdm.xtsz.FieldByName('xsjsqx').AsInteger');
    open;jytsxx是借阅图书表,jcrq是借阅人借阅图书的时间,xtsz是系统设置表,xsjsqx是其中的一字段,表示借阅的天数,是数字类型,
我上述程序运行出错,可能数据类型不对,请问怎样正确的把到期人员的记录查询出来,thanks!

解决方案 »

  1.   

    你的这一句不对:
        sql.Add('select * from jytsxx where jcrq < date- Fdm.xtsz.FieldByName('xsjsqx').AsInteger');你分开来写
      

  2.   

    with Fdm.ADOQuery1 do
      begin
        close;
        sql.Clear ;
        sql.Add('select * from jytsxx where jcrq < '''
    +DateToStr(date- Fdm.xtsz.FieldByName('xsjsqx').AsInteger+'''');
        open;
      

  3.   

    sql.Add('select * from jytsxx where jcrq < '''
    +DateToStr(date- Fdm.xtsz.FieldByName('xsjsqx').AsInteger)+'''');
      

  4.   

    一个简单的办法声明一个变量 sDate : Stirng  //用于计算时间
    sDate := DateToStr(Date - Fdm.xtsz.FieldByName('xsjsqx').AsInteger);
    with Fdm.ADOQuery1 do
    begin
      close;
      sql.Clear ;
      sql.Add('select * from jytsxx where jcrq < '''+sDate+'''');
      open;
    end;