以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于逻辑判断问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31326)

--  作者:zmagood
--  发布时间:2013/4/12 23:01:00
--  关于逻辑判断问题

多个产品产品分别卖给多家客户,收款后,则 "是否收款"列为TRUE。
在"统计表A"中判断:如果"销售表B"中 某个"产品"收款全部结清(即"是否收款"全为真),则"统计表A"的"是否收款完毕"为真。

这个逻辑判断可以这么写吗? 

DataColChanged事件中这样写:
Dim dr As DataRow = e.DataRow
If e.DataCol.Name = "产品" Then
   dr("是否收款完毕") = DataTables("销售表B").Compute("Sum(是否收款)","[产品] = \'" & e.DataRow(" 产品 ") & "\'")
End If

--  作者:菲舍尔
--  发布时间:2013/4/12 23:06:00
--  
应该不能

你两表之间的关联是通过什么来关联?

--  作者:zmagood
--  发布时间:2013/4/12 23:13:00
--  
没进行关联,那应该怎么写呢



--  作者:夕然
--  发布时间:2013/4/12 23:18:00
--  

)","[产品] = \'" & e.DataRow(" 产品 ") & "\'")

这个表述错误

你这个是在表a中写的,表a中哪里会有这个[产品]呢,有也是e.datarow("产品")

你这个可以使用find来找到所有满足条件的行,然后对所有的行进行判断

如果判断结果正确,那么表a的某个值为true


--  作者:zmagood
--  发布时间:2013/4/12 23:24:00
--  
哈哈,这样写就可以了。
Dim dr As DataRow = e.DataRow
If e.DataCol.Name = "产品" Then
Dim dr0 As DataRow
dr0 = DataTables("销售表B").
Find("[产品] = \'" & e.DataRow(" 产品 ") & "\'  and  [是否收款]= False  ")
If dr0 IsNot Nothing Then \'如果找到的话
dr("是否收款完毕")  =  False 
Else
dr("是否收款完毕")  =  True
End If