Foxtable(狐表)用户栏目专家坐堂 → 蓝版:帮助中跨表引用的用法


  共有2078人关注过本帖树形打印复制链接

主题:蓝版:帮助中跨表引用的用法

帅哥哟,离线,有人找我吗?
天宇科技
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
蓝版:帮助中跨表引用的用法  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/23 17:24:00 [只看该作者]

改的正确。

实践出真知。帮助只是针对当前功能演示一种用法,不一定会考虑到所有的细节。自己测试符合自己的要求即可。

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:471 积分:4014 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/23 17:37:00 [只看该作者]

第一句好,还是第二句好。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/23 19:53:00 [只看该作者]

符合自己的要求的就是好的

 回到顶部