Foxtable(狐表)用户栏目专家坐堂 → [求助]根据输入内容跨表改变字段的值[已解决]


  共有7661人关注过本帖平板打印复制链接

主题:[求助]根据输入内容跨表改变字段的值[已解决]

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


加好友 发短信
等级:小狐 帖子:383 积分:2439 威望:0 精华:0 注册:2011/12/3 22:19:00
[求助]根据输入内容跨表改变字段的值[已解决]  发帖心情 Post By:2012/5/7 23:01:00 [只看该作者]

有两张表

表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()  ‘
删除该行的代码


结果:数据清除功能实现了,但是把全部的空行都删除了,这并不是我想要的结果;


也希望老师指导,谢谢




附件是我做的样本,请参考

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table

[此贴子已经被作者于2012-5-8 9:24:19编辑过]

 回到顶部