以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  蓝版:帮助中跨表引用的用法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151458)

--  作者:天宇科技
--  发布时间:2020/6/23 16:55:00
--  蓝版:帮助中跨表引用的用法
以下代码是帮助中的跨表引用,但我发现存在一个问题:原来单价列中有数据,如果品名列中在产品表中查找不到同名产品行时,单价列原来的数据并不会自动删除,仍然保留在表格中,就会造成错误,我觉得应该在下面的代码中加上一句e.DataRow("单价") = nothing。下面代码绿底的部分是我加的,正确吗?或者直接用第二个代码。
——————————————————————————————————————————
If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列
If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
e.
DataRow("单价") = Nothing \'那么清空此行单价列的内容
Else

e.DataRow("单价") = nothing‘这句是我加的。

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

——————————————————————————————————————————————————————————————————————————
直接用下面这个代码,怎样?
If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列

e.DataRow("单价") = nothing

Dim
 dr As DataRow
\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = 
DataTables("产品").Find("[品名] = \'" & e.NewValue & "\'")
If
 dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
e.
DataRow("单价") = dr("单价"
End
 If
End If
[此贴子已经被作者于2020/6/23 16:58:06编辑过]

--  作者:有点蓝
--  发布时间:2020/6/23 17:24:00
--  
改的正确。

实践出真知。帮助只是针对当前功能演示一种用法,不一定会考虑到所有的细节。自己测试符合自己的要求即可。
--  作者:天宇科技
--  发布时间:2020/6/23 17:37:00
--  
第一句好,还是第二句好。
--  作者:有点蓝
--  发布时间:2020/6/23 19:53:00
--  
符合自己的要求的就是好的