我正在尝试添加几个条件。我想用一个中间值的总和更新base2,我想在中间值和base2上发布一些条件。
我在数据库中手动修改了表。中间值是表中的列之一,是根据base2值计算得出的, 在第一行中,我有一个base2值,我计算得出第一行中间值,现在在第二行中,我需要设置新的base2 =先前的base2 +先前的中间值。这就是为什么我有两个计数器来跟踪项目位置的原因。 Counter1对itemid的索引进行计数,counter2跟踪itemid内的循环计数
问题是如何设置此新的base2。是否可以将新的base2设置在一条线上?还是我必须在上一行中将另一个变量设置为中间值,并将其作为新变量添加到base2?
下面是我想要的,但是有错误(功能缺失)。
UPDATE TABLE2 SET base2=
(base2+INTERMEDIATEVALUE WHERE loadingordinal=counter2 AND itemid=counter1)
WHERE loadingordinal=counter2 +1 AND itemid=counter1
答案 0 :(得分:0)
我不确定INTERMEDIATEVALUE是什么,但是如果它是一个表,则可以遵循下面的查询,也可以对其进行调整。您可以执行子查询以实现这种条件
$rootScope
答案 1 :(得分:0)
在VFP中,很难通过Update_SQL进行此类更新。幸运的是,有很多方法可以解决该问题,一种方法是使用xBase命令代替(在xBase中,您可以对SQL-UPDATE使用REPLACE。Replace默认对“当前行”进行操作(不包括scope子句)。不要提供任何模式或任何示例数据,因此我只能通过猜测给出一个简单的示例。您的代码如下:
local lnPrevious, lnItemId
lnItemId = -1
Select Table2
Scan
&& Save Current Id (ItemID?)
lnItemId = Table2.ItemID
&& Do calculation using previous value
&& On first row it is the same as base2
lnPrevious = base2
scan While Table2.ItemId = m.lnItemId
Replace Base2 with m.lnPrevious, ;
IntermediateValue with DoCalculation(Base2)
&& Previous value for next row
lnPrevious = Base2 + IntermediateValue
endscan
skip -1 && Endscan would move the pointer
Endscan
注意,如果您需要的不仅仅是ItemId(或者可能需要传递Base2和IntermediateValue本身而不是lnPrevious),您也可以执行以下操作:
local loRow
scan
scatter to name loRow memo
scan while table2.ItemId = m.loRow.ItemId
...