Visual Foxpro 6.0逻辑数据类型查询不起作用!

时间:2011-06-03 14:57:41

标签: sql foxpro visual-foxpro

我当前的系统有一个查询来生成税务报告。问题在于,有时订单会进入我们的系统,但从未提交过,但仍会计入税务报告中。将提交的订单设置为“完成”的标志将使用逻辑数据类型设置为TRUE。

以下代码出现两个问题。首先,似乎我用作约束'完成'的字段是FoxPro保留函数,因为它在FoxPro中以蓝色亮起。第二个问题是它不会排除那些永远不会被提交的记录(基本上约束不起作用)。

编辑代码:

sele bkmast
set order to county
set filt to between(sysdate, m.ld_start, m.ld_end)
go top
m.lh_countylines = ''
select 000000.0000 as ordamt, import, county, 00000000.00 as amount, date() as start, date() as end dist;
    from bkmast ;
    where !empty(county) ;
    .and. alltrim(county) !='0' ;
    .and. alltrim(county) !='8.00_Wyoming' ;
    .and. alltrim(county) !='Select County' ;
    order by county ;
    into table countytax
m.ln_total=0
m.ln_countamt = 0
scan
    m.lc_county = alltrim(county)
    sele bkmast
    seek m.lc_county
    sum tax to m.ln_amt while county=m.lc_county
    seek m.lc_county            
    sum ordamt to m.ln_ordamt while county=m.lc_county 
    sele countytax
    replace ordamt with m.ln_ordamt
    replace amount with m.ln_amt
    replace startDate with m.ld_start
    replace endDate with m.ld_end
    m.ln_countamt = m.ln_countamt + ordamt
    m.ln_total = m.ln_total + amount
    m.lh_countylines = m.lh_countylines+elemerge(html_frm("TAXCOUNTY1"))
endscan

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

自从FoxBase回到87年以来,我一直在使用Foxpro,我从来不知道“完整”的命令,也没有在VFP帮助中直接记录(但如上所述,通过完成功能调用蓝色突出显示为蓝色) ))。另外还有.AND。是很久以前查询的旧指标。 “结束”虽然是一个关键字。我会尝试通过在查询中添加别名并将End更改为EndDate(以及将Start与StartDate配对)来限定列,例如......

根据您的其他评论结果,我会直接在select语句中进行预查询,然后进行更新......

SELECT 
      bk.Import,;
      bk.county,;
      sum( bk.OrdAmt ) AS OrdAmt,;
      sum( bk.Tax ) AS Amount,;
      m.ld_Start AS startDate,;
      m.ld_End AS endDate;
   FROM ;
      bkmast bk ;
   where ;
         sysdate between m.ld_start and m.ld_End;
     AND NOT empty( ALLTRIM( bk.county )) ;
     AND NOT alltrim( bk.county ) == '0' ;
     and NOT alltrim( bk.county ) == '8.00_Wyoming' ;
     and NOT alltrim( bk.county ) == 'Select County' ;
     AND bk.complete;
   group by ;
      bk.Import,;
      bk.county;
   order by;
      bk.county ;
   into;
      table countytax

在这种情况下,由于订单金额和税金的汇总,您不需要返回到BKMast表...它已经完成...您可以直接遍历结果集。剩下的唯一的事情就是总结税收和订单金额...如果你的elemerge(html_frm(“TAXCOUNTY1”))调用中没有使用这些变量,你可以直接预先计算这些变量

select CountyTax
sum OrdAmt, Amount to m.ln_CountAmt, m.ln_Total

scan
    */ These two already summed up from before the scan loop
    ** m.ln_countamt = m.ln_countamt + ordamt
    ** m.ln_total = m.ln_total + amount

    */ Now, continue with the eleMerge() function which will already have the
    */ values in the CountyTax table already summed up
    m.lc_county = alltrim(county)
    m.lh_countylines = m.lh_countylines+elemerge(html_frm("TAXCOUNTY1"))
endscan

答案 1 :(得分:1)

如果您运行的查询中WHERE子句中唯一的查询完成,会发生什么:

SELECT ;
  000000.0000 OrdAmt,;
  bk.Import,;
  bk.county,;
  00000000.00 Amount,;
  date() as startDate,;
  date() as endDate;
from bkmast bk;
where bk.Complete ;
into cursor csrTest

这是否能获得正确的记录集?我得到的是,“完整”字段可能不包含您的想法。