Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表引用问题


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

主题:[求助]跨表引用问题

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


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
[求助]跨表引用问题  发帖心情 Post By:2014/8/5 10:57:00 [只看该作者]

现在想实现一个功能:当酒缸采购表中的采购数量发生改变时,对酒缸库存表的总数量进行更新,
这样在酒缸采购表的DatacolChanged事件中可以通过跨表引用来实现此功能,
但是在Datacolchanged事件中实现此功能的话会有若干问题:
1.录了一条记录然后在删除的话这个库存表中的总数量已经发生了改变,还得到BeforeDeleteDatarow中再减去之前加过的采购数量;
2.如果不先选择酒缸名称,酒缸型号和酒缸状态而直接填入数量的话就会新增一行
问:这个问题是在这个原有的基础上改呢(如果改的话,对于上面第二个问题该如何改),还是讲跨表引用的这些操作在保存的按钮里操作呢(如果在窗口的保存按钮中操作又该如何更改)?


Select Case e.DataCol.Name
    Case "采购数量"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim pr1 As DataRow
        Dim filter As String
        filter = "酒缸名称 = '" & dr("酒缸名称") & "' And 酒缸型号 = '" & dr("酒缸型号") & "' And 酒缸状态 = '" & dr("酒缸状态") & "'"
        pr = DataTables("酒缸库存表").Find(filter)
        If pr IsNot Nothing Then
            pr("总数量") = pr("总数量") + dr("采购数量")
        Else
            pr1 = DataTables("酒缸库存表").AddNew
            pr1("酒缸名称") = dr("酒缸名称")
            pr1("酒缸型号") = dr("酒缸型号")
            pr1("酒缸状态") = dr("酒缸状态")
            pr1("总数量") = dr("采购数量")
        End If
End Select

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 11:01:00 [只看该作者]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 11:02:00 [只看该作者]

2、判断是否为空

 

If dr.Isnull("酒缸名称") = False AndAlso dr.IsNull("酒缸型号") = False AndAlso dr.InNull("酒缸状态") = False then


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


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/8/5 11:06:00 [只看该作者]

这个跨表统计的方法跟我上面的代码的作用是一样的啊?

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


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/8/5 11:11:00 [只看该作者]

这个判断如何加,加在什么地方呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 11:25:00 [只看该作者]

1、删除的时候,肯定是需要重新统计一次的,你用统计comput,而不要用直接加减。

 

2、写在开头

 

Select Case e.DataCol.Name
    Case "采购数量"

        If dr.Isnull("酒缸名称") = False AndAlso dr.IsNull("酒缸型号") = False AndAlso dr.InNull("酒缸状态") = False then


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


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/8/5 12:22:00 [只看该作者]

那我在采购窗口的控件“采购数量”的TextChanged事件中写了以下代码:
If  e.Form.Controls("ComboBox3").Value = Nothing  OrElse e.Form.Controls("ComboBox2").Value = Nothing  OrElse e.Form.Controls("ComboBox1").Value = Nothing Then
    Messagebox.show("酒缸名称,酒缸型号和酒缸状态不得为空,请选择!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Form.Controls("NumericComboBox2").Value = Nothing
End If
但是这么写的话,这个Message会报两次,这个问题怎么解决啊甜姐?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 14:14:00 [只看该作者]

If  e.Form.Controls("ComboBox3").Value = Nothing  OrElse e.Form.Controls("ComboBox2").Value = Nothing  OrElse e.Form.Controls("ComboBox1").Value = Nothing Then
    Messagebox.show("酒缸名称,酒缸型号和酒缸状态不得为空,请选择!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    SystemReady = False
    e.Form.Controls("NumericComboBox2").Value = Nothing
    SystemReady = True
End If

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


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/8/5 15:08:00 [只看该作者]

谢谢甜姐,再问您一个问题,ComboBox从表中取值的话,如何能将重复的值充下拉菜单里面去掉呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/5 15:10:00 [只看该作者]


 回到顶部
总数 11 1 2 下一页