我当前的系统有一个查询来生成税务报告。问题在于,有时订单会进入我们的系统,但从未提交过,但仍会计入税务报告中。将提交的订单设置为“完成”的标志将使用逻辑数据类型设置为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
非常感谢任何帮助。
答案 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
这是否能获得正确的记录集?我得到的是,“完整”字段可能不包含您的想法。
玛