有两张表
表1:产品明细表
表2:盘点表
结构如下:
产品明细表:序号 产品名称 单价 数量 状态
盘点表: 序号 产品名称 数量 存储仓库
<!--[if !supportLists]-->1. <!--[endif]-->当我在“盘点表”输入“存储仓库”字段后,需要将“产品明细表”中“状态”字段自动更改为“存储”,也就是说当存储仓库字段不为空值的时候,将产品明细表中的状态自动更改为“存储”。
以下内容为程序代码:
1
2
3 If e.DataCol.Name = "存储仓库" Then '当存储仓库中的内容发生变化的时候
4 If e.DataRow.IsNull("存储仓库") Then '存储仓库为空
5 e.DataRow("存储仓库") = Nothing '如果为空,则当前字段
6 Else
7 ‘e.DataRow("状态") = "存储" '将字段值改为存储
8 End If
我现在的代码是将本表中的状态字段更改为存储字段了,但我希望实现的上将“产品明细表”中的状态字段改为“存储”。通过查阅帮助文件,关键词“跨表”,得到如下代码
以下内容为程序代码:
If e.DataCol.Name = "存储仓库" Then '当存储仓库中的内容发生变化的时候
If e.DataRow.IsNull("存储仓库") Then '存储仓库为空
e.DataRow("存储仓库") = Nothing '如果为空,则清除存储仓库
Else
' e.DataRow("存储仓库") = "存储"
Dim dr As DataRow
'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("产品明细表").Find("[序号] =
'" & e.NewValue & "'")
If dr IsNot Nothing Then
'如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("状态") = "存储"
End If
End If
还是没有实现,不知道问题在哪里,这一点请提示,谢谢
问题2:
清除一行数据后,需要清空后面的数据,并删除该行;
我在datachanged中使用了这样的代码
If e.DataCol.Name = "序号" Then
'是序号列发生变化吗?
If e.DataRow.IsNull("序号")
Then '判断序号列是否为空
e.DataRow("序号")
= Nothing '如果为空,则清除序号列
e.DataRow("产品名称")
= Nothing '如果为空,则产品名称列
e.DataRow("数量")
= Nothing '如果为空,则清除数量列
e.DataRow("存储仓库")
= Nothing '如果为空,则清除存储仓库列
End If
End If
CurrentTable.Current.Delete() ‘删除该行的代码
结果:数据清除功能实现了,但是把全部的空行都删除了,这并不是我想要的结果;
也希望老师指导,谢谢
附件是我做的样本,请参考
[此贴子已经被作者于2012-5-8 9:24:19编辑过]