Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表运算事件请教


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

主题:[求助]跨表运算事件请教

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/9 11:08:00 [显示全部帖子]

编写入库表DataColChanged事件,输入值以后,compute本表的数据,查找订单表的数据,相减,如果小于0,就提示不能输入,否者,就把结果写入到递减表去。

 

 


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/9 11:09:00 [显示全部帖子]

 代码不会写,就上传实例。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/12 22:10:00 [显示全部帖子]

datacolchanging事件,写代码

 

If e.DataCol.Name.StartsWith("SIZE") Then
    Dim sum1 As Double = e.DataTable.Compute("sum(" & e.DataCol.name & ")", "指令单号 = '" & e.DataRow("指令单号") & "' and 型体 = '" & e.DataRow("型体") & "'")
    Dim sum2 As Double = DataTables("订单").Compute("sum(" & e.DataCol.name & ")", "指令单号 = '" & e.DataRow("指令单号") & "' and 型体 = '" & e.DataRow("型体") & "'")
    If sum1 + e.NewValue > sum2 Then
        msgbox("超出了")
        e.cancel = True
    Else
       
    End If
End If


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/13 16:59:00 [显示全部帖子]

以下是引用supernormalwu在2017/4/13 16:23:00的发言:
在整理入库表中吗?没反应!

 

只是一个简单的代码,你看懂,扩展开去。

 

代码的意思是,如果你输入的值大于订单的值,就提出错误。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/13 17:34:00 [显示全部帖子]

以下是引用supernormalwu在2017/4/13 17:24:00的发言:
老师,如果订单表中没有入库表的订单,就忽略报错!怎么处理?

 

DataColChanging事件

 

If e.DataCol.Name.StartsWith("SIZE") Then
    Dim filter As String = "指令单号 = '" & e.DataRow("指令单号") & "' and 型体 = '" & e.DataRow("型体") & "'"
    Dim fdr As DataRow = DataTables("订单").Find(filter)
    If fdr IsNot Nothing Then
        Dim sum1 As Double = e.DataTable.Compute("sum(" & e.DataCol.name & ")", filter)
        If sum1 - e.OldValue + e.NewValue > fdr(e.DataCol.name) Then
            msgbox("超出了")
            e.cancel = True
        Else
           
        End If
    End If
End If


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/13 18:06:00 [显示全部帖子]

If e.DataCol.Name.StartsWith("SIZE") Then
    Dim filter As String = "指令单号 = '" & e.DataRow("指令单号") & "' and 型体 = '" & e.DataRow("型体") & "'"
    Dim fdr As DataRow = DataTables("订单").Find(filter)
    If fdr IsNot Nothing Then
        Dim sum1 As Double = e.DataTable.Compute("sum(" & e.DataCol.name & ")", filter)
        If sum1 - e.OldValue + e.NewValue > fdr(e.DataCol.name) Then
            msgbox("超出了")
            e.cancel = True
            Return
        End If
        Dim dr = DataTables("欠数").Find(filter)
        If dr Is Nothing Then
            dr = DataTables("欠数").addnew
            dr("指令单号") = e.DataRow("指令单号")
            dr("型体") = e.DataRow("型体")
        End If
        dr(e.DataCol.name) = fdr(e.DataCol.name) - (sum1 - e.OldValue + e.NewValue)
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/15 8:33:00 [显示全部帖子]

以下是引用supernormalwu在2017/4/15 8:16:00的发言:
即使没有入库!的也需要反应到欠数表中!如果入库表没输入数据,欠数表就没有!

 

你在输入订单表的时候,可以把输入的内容拷贝到欠数表

 

http://www.foxtable.com/webhelp/scr/2490.htm

 

http://www.foxtable.com/webhelp/scr/2292.htm

 


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/15 11:56:00 [显示全部帖子]

以下是引用supernormalwu在2017/4/15 11:52:00的发言:
如上述欠数问题,那欠数表的自动更新呢?如何处理

 

看24楼,自动复制行进去欠数表。


 回到顶部