Foxtable(狐表)用户栏目专家坐堂 → 每次打开某表都会重置关键列


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

主题:每次打开某表都会重置关键列

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


加好友 发短信
等级:幼狐 帖子:104 积分:785 威望:0 精华:0 注册:2022/5/7 19:05:00
每次打开某表都会重置关键列  发帖心情 Post By:2022/5/18 16:38:00 [只看该作者]



图片点击可在新窗口打开查看此主题相关图片如下:14.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:58.png
图片点击可在新窗口打开查看
有两个问题:1是我在生产计划管理系统中设置了判定列,当判定选折true 后会将对号数据复制到库房管理系统中,如果现在判定选项误判断了,有TRUE 变成False  怎么能够把已经复制过的数据再重新撤回呢

 

 

2、再就是类似于我在库房管理系统中(DataColChanged)写了代码,但是关键列如"出入库登记表_产品编号","出入库登记表_入库数量","出入库登记表_出库数量" 都是从别的表格出来过来的 ,怎么能做到  数据从别的表格复制过来后  就能自动触发DataColChanged 事件呢,或者能做到每次打开这个表格会自动把关键列重置一下 ,这样好保证数据能够运行呢

 


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110651 积分:563169 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/18 16:43:00 [只看该作者]

1、如果已经保存了,没有办法撤回,只能手工改正确

2、如果是添加代码后增加的数据,肯定会触发DataColChanged 事件的。添加代码前存在的数据,手工重置列即可

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


加好友 发短信
等级:幼狐 帖子:104 积分:785 威望:0 精华:0 注册:2022/5/7 19:05:00
  发帖心情 Post By:2022/5/19 8:38:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:30.png
图片点击可在新窗口打开查看
但是我试了两个情况  一个是自动从别的表复制过来的内容   还有就是在这个表中自动添加行   他的库存数量都没有变化   这是什么情况呢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (6).table


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

一个是自动从别的表复制过来的内容   还有就是在这个表中自动添加行 -- 怎么操作的,使用了什么代码?

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


加好友 发短信
等级:幼狐 帖子:104 积分:785 威望:0 精华:0 注册:2022/5/7 19:05:00
  发帖心情 Post By:2022/5/19 9:43:00 [只看该作者]

我在生产计划管理系统中DataColChanged写的

If e.DataCol.Name = "生产流程单_判定" AndAlso e.DataRow("生产流程单_判定") = True Then
    Dim nma() As String = {"生产通知单_产品名称","生产通知单_订单编号","生产流程单_合格数", "生产通知单_图号","生产流程单_半成品入库","生产流程单_成品入库"} 'A表数据来源列
    Dim nmb() As String = {"出入库登记表_产品名称","出入库登记表_产品订单号","出入库登记表_入库数量","出入库登记表_产品编号","出入库登记表_半成品","出入库登记表_成品"} 'B表数据接收列
    Dim dr As DataRow = DataTables("库房管理系统").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End If

 

我在库房管理系统datacolchangde 写的

Select Case e.DataCol.Name
    Case "出入库登记表_产品编号","出入库登记表_入库数量","出入库登记表_出库数量"
        Dim s As String
         Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        If mr("出入库登记表_半成品") Then
            s = " And 出入库登记表_半成品=true"
        ElseIf mr("出入库登记表_成品") Then
            s = " And 出入库登记表_成品=true"
        Else
            Return
        End If
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [出入库登记表_产品编号] = '" & mr("出入库登记表_产品编号") & "' " & s , "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("出入库登记表_库存数量") = mr("出入库登记表_入库数量") - mr("出入库登记表_出库数量")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [出入库登记表_产品编号] = '" & dr("出入库登记表_产品编号") & "'  " & s , "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("出入库登记表_库存数量") = drs(i-1)("出入库登记表_库存数量") + drs(i)("出入库登记表_入库数量") - drs(i)("出入库登记表_出库数量")
        Next
        If e.DataCol.Name = "出入库登记表_产品编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [出入库登记表_产品编号] = '" & e.OldValue & "'  " & s, "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[出入库登记表_产品编号] = '" & e.OldValue & "' " & s, "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("出入库登记表_库存数量") = dr("出入库登记表_入库数量") - dr("出入库登记表_出库数量")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [出入库登记表_产品编号] = '" & dr("出入库登记表_产品编号") & "'  " & s , "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("出入库登记表_库存数量") = drs(i-1)("出入库登记表_库存数量") + drs(i)("出入库登记表_入库数量") - drs(i)("出入库登记表_出库数量")
                Next
            End If
        End If
End Select

 

但是从《生产计划管理系统》点完判定后  会把相应的数据传到《库房管理系统》  但是库房管理系统虽然有数据传递过来   但是并没有运行  

后来我又尝试手动输入数据  也没有运行


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

调换一下赋值的前后顺序

If e.DataCol.Name = "生产流程单_判定" AndAlso e.DataRow("生产流程单_判定") = True Then
    Dim nma() As String = {"生产流程单_半成品入库","生产流程单_成品入库","生产通知单_产品名称","生产通知单_订单编号","生产流程单_合格数", "生产通知单_图号" } 'A表数据来源列
    Dim nmb() As String = {"出入库登记表_半成品","出入库登记表_成品","出入库登记表_产品名称","出入库登记表_产品订单号","出入库登记表_入库数量","出入库登记表_产品编号" } 'B表数据接收列
    Dim dr As DataRow = DataTables("库房管理系统").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End If

原因是因为如果先给数量赋值,赋值后就会马上触发【库房管理系统datacolchangde 】,而这时成品半成品逻辑列还没有值,导致库房管理系统datacolchangde 】判断成品半成品逻辑列没有值就不会计算库存。

 回到顶部