问题解决了,说下之前失败原因供有需要的朋友参考在EXCEL中,遇到这个问题我常用的办法就是把表A中日期先转换成年月的字符串,然后把这个年月字符串与产品名连起来作为一个查找匹配码,在表B中同样的方法生成年月产品名的匹配码,然后用Vlookup函数引用。
在FOXTABLE中,我一开始也是用这思路进行操作,但失败了,原因在于我通过了表达式的方式生成了匹配码,然后用这匹配码进行跨表引用的自动更新,设置的条件就是表A与表B的匹配码一致,这个表达式就是问题所在,因为不能用表达式进行匹配引用的,要在表事件中生成表A与表B的匹配码数据列,用数据列中的匹配码就能正常进行跨表引用了,
这是跨表引用的网址:http://www.foxtable.com/help/index.html?n=1451.htm
我参考的代码就是:
上一节提到,如果在订单表的DataColChanged事件中加入如下代码:If e.DataCol.Name = "品名" Then '如果内容发生变动的是品名列
If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
e.DataRow("单价") = Nothing '那么清空此行单价列的内容
Else
Dim dr As DataRow
'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("产品").Find("[品名] = '" & e.NewValue & "'")
If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("单价") = dr("单价")
End If
End If
End If