Sql Visual Fox Pro 6.0逻辑数据类型查询不工作!

Sql Visual Fox Pro 6.0逻辑数据类型查询不工作!,sql,foxpro,visual-foxpro,Sql,Foxpro,Visual Foxpro,我当前的系统有一个生成税务报告的查询。问题是,有时订单进入我们的系统,但从未提交,但仍在税务报告中计算。将订单设置为已提交的标志称为“完成”,并将使用逻辑数据类型将其设置为TRUE 以下代码产生两个问题。首先,我用作约束“complete”的字段似乎是一个FoxPro保留函数,因为它在FoxPro中以蓝色亮起。第二个问题是,它不会排除那些从未提交的记录(基本上约束不起作用) 编辑代码: sele bkmast set order to county set filt to between(sys

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

以下代码产生两个问题。首先,我用作约束“complete”的字段似乎是一个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

非常感谢您的帮助。

自1987年FoxBase开始使用Foxpro以来,我从未知道“complete”命令,也没有直接记录在VFP帮助中(如前所述,通过complete()以蓝色突出显示函数调用)。此外,还有。是很久以前查询的旧指标。“结束”是一个关键词。我会尝试通过将别名添加到查询并将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

如果运行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
这是一套正确的记录吗?我想说的是,可能完整字段不包含您认为它所包含的内容


Tamar

我想知道使用名称表达式的技巧是否有帮助,即使用
(“complete”)
而不是
complete
。我上一次使用的Fox Pro版本是DOS的2.6版本,所以不确定它现在是否能工作。@Andrey M-我试过了,但也没有成功。谢谢你的意见。嘿,谢谢你的回复。我真的很感激。我尝试了这段代码,但在FROM命令中收到了语法错误。很抱歉,我没有提供完整的查询。看看我原来的帖子,我会把整个查询放在那篇帖子里。@bOkeifus,用你剩下的查询更新。。。此外,还使用了“设置筛选器”的上下文,因此不再特别需要它。我修复了“FROM”错误。我必须把下一行放在“FROM”语句的旁边。但是现在“FROM”语法错误已经不是问题了,之后我遇到了“seek”命令的问题。请查看我的原始帖子中的seek命令。它说“表没有索引顺序集”。@bOkeifus,我刚刚完成修改和测试。。。试试新的帖子。缺少分号的来源/位置。。。