ADOTable1.Filtered := false;
ADOTable1.Filter := 'LIST_USER_ID =''+ID+'' and  (Format(LIST_DATE,''yyyy-mm'') =''+Format(now,''yyyy-mm'')+'' ;
ADOTable1.Filtered := True;

解决方案 »

  1.   

    说实话我看不懂它在提示什么错误
    [Error] Unit7.pas(81): Unterminated string
    [Error] Unit7.pas(82): Missing operator or semicolon
    [Fatal Error] Project1.dpr(19): Could not compile used unit 'Unit7.pas'
      

  2.   

    至少这句里面少了个挎号  “)”ADOTable1.Filter := 'LIST_USER_ID =''+ID+'' and  (Format(LIST_DATE,''yyyy-mm'') =''+Format(now,''yyyy-mm'')+'' ;
      

  3.   

    建议楼主用单步跟踪的方法,看看ADOTable1.Filter 在赋值之后是什么值,我估计可能是引号或括号的原因,赋的值并不是楼主真正想要的值。
      

  4.   

    ADOTable1.Filtered := false;如果LIST_USER_ID是字符型(ID是变量)
    ADOTable1.Filter := 'LIST_USER_ID = ' + quotedstr(ID) + ' and (Format(LIST_DATE,''yyyy-mm'') = ' + quotedstr(Format(now,''yyyy-mm''));
    如果LIST_USER_ID是数字型(ID是变量)
    ADOTable1.Filter := 'LIST_USER_ID = ' + ID + ' and (Format(LIST_DATE,''yyyy-mm'') = ' + quotedstr(Format(now,''yyyy-mm''));ADOTable1.Filtered := True;
      

  5.   

    这里假设你的LIST_USER_ID为数字型;若为字符型,就要QuotedStr(ID) 
    1.SQLServer:
    ADOTable1.Filter := 'LIST_USER_ID ='+ID+' and Convert(Char(7), LIST_DATE, 20)='+QuotedStr(FormatDateTime('yyyy-mm', Date());
    2.Access:
    ADOTable1.Filter := 'LIST_USER_ID ='+ID+' and Format(LIST_DATE,''yyyy-mm'')='+FormatDateTime('#yyyy-mm#', Date());
      

  6.   

    weizi2000(秋风啊) 
    我用你的方法2试了一下提示如下:
    Project Project1.exe raised exception class EOleException with message '变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。'. Process stopped. Use Step or Run to continue.
      

  7.   

    你写错了,这样:
    ADOTable1.Filtered := false;
    ADOTable1.Filter := 'LIST_USER_ID ='+ID+' and  (Format(LIST_DATE,''yyyy-mm'') ='''+FormatDateTime('yyyy-mm',now)+'''' ;
    ADOTable1.Filtered := True;编译通过
      

  8.   

    zblaoshu1979(周博) 
    在我这不编译是通过了,可是打开功能时提示如下,这是为什么是什么因原啊
    Project Project1.exe raised exception class EOleException with message '项目在所需的名称或序数中未被发现。'. Process stopped. Use Step or Run to continue.
      

  9.   

    你用的是Access数据库吗?
    表结构是什么样的??
      

  10.   

    对是Access数据库,
    LIST_USER_ID  文本
    LIST_DATE     日期/时间
      

  11.   

    上面是用在查询中的有用,filter怎么也试不出,可能是它的局限性,就象and、or不能很方便混用一样;用一个迂回的方法吧,试一试:
    uses DateUtils;
    ...
    'LIST_USER_ID ='+ID+' and LIST_DATE>=#'+ FormatDateTime('yyyy-mm-', Date())+'01'+'#'+ 'and  LIST_DATE<=#'+ FormatDateTime('yyyy-mm-', Date())+IntToStr(DaysInMonth(Date())) +'#';
      

  12.   

    文本时用'LIST_USER_ID ='+QuotedStr(ID)+
      

  13.   


    weizi2000(秋风啊) 我没用过你说的这种方法,不太知道你是什么意思,你给你的段代码,按你的方法,应是放在什么地方啊,请明示
      

  14.   

    Filter里好像不能用函数
    你用ADOQuery吧
    str:='select * from a where LIST_USER_ID ='''+ID+''' and Format(LIST_DATE,''yyyy-mm'') ='''+FormatDateTime('yyyy-mm',now)+'''' ;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(str);
      ADOQuery1.Open;
      

  15.   

    如果我用了ADOQuery我的程序改动得太多了,我不想用,只想在原有的基础上做改动
      

  16.   

    那在filter中不能用函数也实现不了你要的功能呀
      

  17.   

    我想在filter中实现不了,可以写在ADOTable1FilterRecord的事件中,然后用截取函数分别取出LIST_DATE与now的年月,不过我不会用截取函数,请问要怎么用
      

  18.   

    搞定function LastDayOfMonth(Dat: TDate): TDate;var  D, M, Y : Word;begin  DecodeDate(IncMonth(Dat, 1), Y, M, D);  Result := EncodeDate(Y, M, 1) - 1;end;procedure TForm1.Button1Click(Sender: TObject);
    var
      ID,monstr:string;
    begin
      ID:='2';
      monstr:=DateToStr(LastDayOfMonth(Date));
      ADOTable1.Filtered := false;
      ADOTable1.Filter := 'LIST_USER_ID ='''+ID+''' and LIST_DATE>= '''+Copy(monstr,1,length(monstr)-2)+'1'' and LIST_DATE<= '''+monstr+'''';
      ADOTable1.Filtered := True;
      ADOTable1.Active:=true;end;
      

  19.   

    我写那个是Filter字符串,Filter中是不能同内建函数,它这样用的,你再试:
    uses DateUtils;
    ...
    ADOTable1.Filtered := false;
    ADOTable1.Filter := 'LIST_USER_ID ='+QuotedStr(ID)+' and LIST_DATE>=#'+ FormatDateTime('yyyy-mm-', Date())+'01'+'# and  LIST_DATE<=#'+ FormatDateTime('yyyy-mm-', Date())+IntToStr(DaysInMonth(Date())) +'#';
    ADOTable1.Filtered := true;
      

  20.   

    我都不好意思说了,还在报错中Project Project1.exe raised exception class EOleException with message '项目在所需的名称或序数中未被发现。'. Process stopped. Use Step or Run to continue.
      

  21.   

    我用Access测试通过,没办法了……
      

  22.   

    在你的ADOTable的Filter属性中写
    LIST_USER_ID ='2' and LIST_DATE>= '04-5-1' and LIST_DATE<= '04-5-31'
    看能不能通过
      

  23.   

    我没在filter中写,是写在ADOTable1FilterRecord的事件中,现在好了,谢谢啊,马上给分
      

  24.   

    你这样写也是没有用的,还是白费
    因为数据已经全部得到,
    只是filter一下罢了
    正确的方法应该用sql语句来得到