在browse前加一句:select &crfm(n)
即:
into dbf c:\temp\&crfm(n)
brow另外,browse不应该放在循环体的里面吧,有什么意义吗?放在外面试试呢?!

解决方案 »

  1.   

    哦,马虎了,是
    into dbf c:\temp\&crfm(n)
    select &crfm(n)
    brow
      

  2.   

    谢谢各位!
    我的browse是临时加上的,只不过是为了体现问题。
    忘了报告了,其实是后续代码中有用“select * from c:\temp\&crfm(n)”类似的代码出错,才发现此问题的。
    出错提示都是:此对象的数据源必须是一个变量的引用。
    但是用"brow fiel 职号,姓名"这样指定字段的语句是可以执行的。
      

  3.   

    ****************
    local crfm(3)
    crfm(1)="加班费"
    crfm(2)="罚款"
    crfm(3)="嘉奖"
    local tablename
    for n=1 to 3
    crffld="gz."+crfm(n)
    tablename = "c:\temp\"+crfm(n)
    SELECT Gz.职号, Gz.姓名, Gz.职务,round(({^2002-05-01}-员工.入厂日期)/30,0) as 工龄,;
      SUM(IIF(月份=5 and 年份="2000",&crffld,0)) as _2000年5月,sum(IIF(月份=6 and 年份="2000",&crffld,0)) as _2000年6月,;
      SUM(IIF(月份=7 and 年份="2000",&crffld,0)) as _2000年7月,sum(IIF(月份=8 and 年份="2000",&crffld,0)) as _2000年8月,;
      SUM(IIF(月份=9 and 年份="2000",&crffld,0)) as _2000年9月,sum(IIF(月份=10 and 年份="2000",&crffld,0)) as _2000年10月,;
      SUM(IIF(月份=11 and 年份="2000",&crffld,0)) as _2000年11月,sum(IIF(月份=12 and 年份="2000",&crffld,0)) as _2000年12月,;
      SUM(IIF(月份=1 and 年份="2001",&crffld,0)) as _2001年1月,sum(IIF(月份=2 and 年份="2001",&crffld,0)) as _2001年2月,;
      SUM(IIF(月份=3 and 年份="2001",&crffld,0)) as _2001年3月,sum(IIF(月份=4 and 年份="2001",&crffld,0)) as _2001年4月,;
      SUM(IIF(月份=5 and 年份="2001",&crffld,0)) as _2001年5月,sum(IIF(月份=6 and 年份="2001",&crffld,0)) as _2001年6月,;
      SUM(IIF(月份=7 and 年份="2001",&crffld,0)) as _2001年7月,sum(IIF(月份=8 and 年份="2001",&crffld,0)) as _2001年8月,;
      SUM(IIF(月份=9 and 年份="2001",&crffld,0)) as _2001年9月,sum(IIF(月份=10 and 年份="2001",&crffld,0)) as _2001年10月,;
      SUM(IIF(月份=11 and 年份="2001",&crffld,0)) as _2001年11月,sum(IIF(月份=12 and 年份="2001",&crffld,0)) as _2001年12月,;
      SUM(IIF(月份=1 and 年份="2002",&crffld,0)) as _2002年1月,sum(IIF(月份=2 and 年份="2002",&crffld,0)) as _2002年2月,;
      SUM(IIF(月份=3 and 年份="2002",&crffld,0)) as _2002年3月,sum(IIF(月份=4 and 年份="2002",&crffld,0)) as _2002年4月;
     FROM  c:\gz RIGHT OUTER JOIN e:\crf\data\员工 ;
       ON  Gz.职号 = 员工.职号;
     WHERE 员工.离职日期 = ctod(" ");
      AND (.not.("开除"$Gz.职务));
      AND (.not.("劝退"$Gz.职务));
      AND (.not.("辞"$Gz.职务));
      and gz.姓名=员工.姓名;
     GROUP BY Gz.职号, Gz.姓名;
     ORDER BY Gz.职号;
     into dbf &tablename.
    brow
    endfor
    ********************
      

  4.   

    to: nononono(null,null) 
    采用你的方式还是错误依旧,VFP提示“此对象的数据源必须是一个变量的引用”,我也不知问题出在哪里?但我把上述代码不用循环、不用变量,直接使用字段名替换select…………中的变量就一切正常。
      

  5.   

    如果SELECT中不能用变量,用这种方式试试:
    SELECT * INTO 文件
    COPY FILE 文件 TO 变量
    多试几个语句,肯定有语句能支持变量的。
      

  6.   

    感谢各位的支持,问题找到了。
    是由于“_2000年10月”这样的字串超过了10个字节,而VFP不支持超过10字节的字段名。