Foxtable(狐表)用户栏目专家坐堂 → 生产管理系统根据设置的公式模板计算数据


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

主题:生产管理系统根据设置的公式模板计算数据

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/29 21:22:00 [显示全部帖子]

 保存按钮用下面的代码

Dim f As New Filler
f.SourceTable = DataTables("表A") '指定数据来源
f.SourceCols = "工序,工号,姓名,领料,合格,日期,不良原因分类_脱粉" '指定数据来源列
f.DataTable = DataTables("表C") '指定数据接收表
f.DataCols = "工序,工号,姓名,领料,合格,日期,脱粉" '指定数据接收列
f.Fill() '填充数据
DataTables("表A").DataRows.Clear

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/29 21:23:00 [显示全部帖子]

 第二个问题,不知道你是怎么计算的,建议你先学一下基础语法,然后自己做一下。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/30 19:52:00 [显示全部帖子]

呃,说得那么复杂,其实是很简单的在表B查找内容而已,这是foxtable开发设计的基础啊。

既然你学得会delphi,vb.net的语法、foxtable的开发指南,你是能学得会的吧?你把开发指南一下先。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/30 21:35:00 [显示全部帖子]

 查找获取数据是最基础的,如果这个都不能灵活运用的话,接下来你的项目也无法进行下去了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/31 20:16:00 [显示全部帖子]

 终于是写完了,也不简单吖。测试通过。

 你把表A的datacolchanged里的代码删除掉,单独做一个按钮计算,代码如下

Dim t As Table = Tables("表A")
Dim fdt As DataTable = DataTables("表B")
Dim llsl As Integer = t.Rows(0)("领料")
For i As Integer = 0 To t.Rows.Count - 1
    For Each c As Col In t.Cols
        If c.Name Like "不良原因分类_*" AndAlso t.Rows(i)(c.name) IsNot Nothing Then
            Dim filter As String = "相关工序 = '" & t.Rows(i)("工序") & "' and 不良原因名称 = '" & c.Name.Split("_")(1) & "'"
            Dim fdr As DataRow = fdt.Find(filter)
            If fdr IsNot Nothing Then
                Dim hg As String = fdr("计算公式设置_减合格工序")
                Dim hgbl As String = fdr("计算公式设置_比例1")
                Dim ll As String = fdr("计算公式设置_减领料工序")
                Dim llbl As String = fdr("计算公式设置_比例2")
                If hg IsNot Nothing Then
                    Dim ary1() As String = hg.Split(",")
                    Dim ary2() As String = hgbl.split(",")
                    For j As Integer = 0 To ary1.length - 1
                        Dim idx As Integer = t.FindRow("工序 = '" & ary1(j) & "'", 0, False)
                        If idx > -1 Then
                            t.Rows(idx)("实际合格") -= val(ary2(j)) * t.Rows(i)(c.name)
                        End If
                    Next
                End If
                t.Rows(i)("合格") -= t.Rows(i)(c.name)
                If ll IsNot Nothing Then
                    Dim ary1() As String = ll.Split(",")
                    Dim ary2() As String = llbl.split(",")
                    For j As Integer = 0 To ary1.length - 1
                        Dim idx As Integer = t.FindRow("工序 = '" & ary1(j) & "'", 0, False)
                        If idx > -1 Then
                            t.Rows(idx)("实际领料") -= val(ary2(j)) * t.Rows(i)(c.name)
                        End If
                    Next
                End If
            End If
        End If
    Next
    
    t.Rows(i)("合格") += llsl
    t.Rows(i)("实际领料") += llsl
    t.Rows(i)("实际合格") += llsl
    t.Rows(i)("领料") = llsl
    llsl = t.Rows(i)("合格")
Next

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/1 19:13:00 [显示全部帖子]

 回复52楼,你这个东西不合适写在表事件里。

 你的计算设计到累加累减的操作,如果比如你修改了第四行的值,全部行的数据都是要重新计算的。

 都需要你把全部的数清空,然后根据第一行的领料计算得出。

 回到顶部