Foxtable(狐表)用户栏目专家坐堂 → 请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题


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

主题:请教已录入数据禁止修改单价表产品名称、工序,还有组合合并问题

美女呀,离线,留言给我吧!
采菊东篱下
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/22 19:51:00 [只看该作者]

我看了一下,窗口中的生产进度汇总表,安产品工序代码:

Dim Filter As String
With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then
        Filter = "产品名称 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("gongxu")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "工序名称 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("dingdanhao")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "生产单号 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value   IsNot   Nothing   Then
        If Filter >""   Then
            Filter = Filter &   " And "
        End   If
        Filter = Filter &   "日期 >= #" & .Value &   "#"
    End   If
End   With
With e.Form.Controls("EndDate")
    If .Value   IsNot   Nothing   Then
        If Filter >""   Then
            Filter = Filter &   " And "
        End   If
        Filter = Filter &   "日期 <= #" & .Value &   "#"
    End   If
End   With
If Filter > "" Then Filter = " and " & Filter
DataTables("生产进度汇总表").StopRedraw
DataTables("生产进度汇总表").DataRows.Clear
Dim Arys As List(Of String())

Arys = DataTables("数据源表").GetValues("产品名称|工序名称|生产单号", "产品名称 is not null" & Filter )
For Each Ary As String() In Arys
    Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
    dr("产品名称") = Ary(0)
    dr("工序名称") = Ary(1)
    dr("生产单号") = Ary(2)
    dr("实际生产数") = DataTables("数据源表").Compute("sum(数量)","产品名称 = '" & Ary(0) & "' And 工序名称='" & Ary(1) & "' And 生产单号 " & IIF(Ary(2) > ""," ='" & Ary(2) & "'" , " Is Null") )
Next
Dim dt As DataTable
'Dim g As New GroupTableBuilder("统计表1", DataTables("半成品完工进仓表"))
Dim g As New SQLGroupTableBuilder("统计表1", "成品入进仓数")
'Dim dt As fxDataSource
g.Groups.AddDef("产品名称")
g.Groups.AddDef("生产单号")
g.Totals.AddDef("完工入库数量")
dt = g.Build(False)
'dt = g.BuildDataSource()

For Each dr As DataRow In dt.DataRows
    DataTables("生产进度汇总表").ReplaceFor("完工入库数量",dr("完工入库数量"),"[产品名称] = '" & dr("产品名称") &  "' And 生产单号 " & IIF(dr.IsNull("生产单号")," Is Null"," ='" & dr("生产单号")  & "'"))
Next
'Dim g2 As GroupTableBuilder("统计表2", DataTables("生产计划表"))
Dim g2 As New SQLGroupTableBuilder("统计表2", "订单数量表")
'Dim dt As fxDataSource
g2.Groups.AddDef("产品名称")
g2.Groups.AddDef("生产单号")
g2.Totals.AddExp("计划生产数","int([订单数量] * 1.02)")
dt = g2.Build(False)
'dt = g.BuildDataSource()

For Each dr As DataRow In dt.DataRows
    DataTables("生产进度汇总表").ReplaceFor("计划生产数",dr("计划生产数"),"[产品名称] = '" & dr("产品名称") &  "' And 生产单号 " & IIF(dr.IsNull("生产单号")," Is Null"," ='" & dr("生产单号")  & "'"))
Next
DataTables("生产进度汇总表").ResumeRedraw

 

应把红色标注的代码改为后台统计,把GetValues改为SQLGetComboListString又不对,不知同时满足产品名称、工序名称、生产单号的格式应怎么写。


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/23 16:28:00 [只看该作者]

Dim Filter As String
With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then
        Filter = "产品名称 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("gongxu")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "工序名称 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("dingdanhao")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "生产单号 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value   IsNot   Nothing   Then
        If Filter >""   Then
            Filter = Filter &   " And "
        End   If
        Filter = Filter &   "日期 >= #" & .Value &   "#"
    End   If
End   With
With e.Form.Controls("EndDate")
    If .Value   IsNot   Nothing   Then
        If Filter >""   Then
            Filter = Filter &   " And "
        End   If
        Filter = Filter &   "日期 <= #" & .Value &   "#"
    End   If
End   With
If Filter > "" Then Filter = " and " & Filter
DataTables("生产进度汇总表").StopRedraw
DataTables("生产进度汇总表").DataRows.Clear
Dim Arys As List(Of String())

Arys = DataTables("数据源表").SQLGetValues("产品名称|工序名称|生产单号", "产品名称 is not null" & Filter )
For Each Ary As String() In Arys
    Dim dr As DataRow = DataTables("生产进度汇总表").AddNew()
    dr("产品名称") = Ary(0)
    dr("工序名称") = Ary(1)
    dr("生产单号") = Ary(2)
    dr("实际生产数") = DataTables("数据源表").
SQLCompute("sum(数量)","产品名称 = '" & Ary(0) & "' And 工序名称='" & Ary(1) & "' And 生产单号 " & IIF(Ary(2) > ""," ='" & Ary(2) & "'" , " Is Null") )

Next
Dim dt As DataTable
Dim g As New SQLGroupTableBuilder("统计表1", "成品入进仓数")
g.Groups.AddDef("产品名称")
g.Groups.AddDef("生产单号")
g.Totals.AddDef("完工入库数量")
dt = g.Build(False)

For Each dr As DataRow In dt.DataRows
    DataTables("生产进度汇总表").ReplaceFor("完工入库数量",dr("完工入库数量"),"[产品名称] = '" & dr("产品名称") &  "' And 生产单号 " & IIF(dr.IsNull("生产单号")," Is Null"," ='" & dr("生产单号")  & "'"))
Next
Dim g2 As New SQLGroupTableBuilder("统计表2", "订单数量表")
g2.Groups.AddDef("产品名称")
g2.Groups.AddDef("生产单号")
g2.Totals.AddExp("计划生产数","int([订单数量] * 1.02)")
dt = g2.Build(False)

For Each dr As DataRow In dt.DataRows
    DataTables("生产进度汇总表").ReplaceFor("计划生产数",dr("计划生产数"),"[产品名称] = '" & dr("产品名称") &  "' And 生产单号 " & IIF(dr.IsNull("生产单号")," Is Null"," ='" & dr("生产单号")  & "'"))
Next
DataTables("生产进度汇总表").ResumeRedraw


GetValues改为SQLGetValues,把Compute改为SQLCompute就可以了,这个问题解决。

[此贴子已经被作者于2020/2/23 17:25:00编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/23 16:31:00 [只看该作者]

Select Case e.DataCol.name
    Case "产品名称","工序名称"
        Dim dt As DataRow
        Dim dt2 As DataRow
        Dim dt4 As DataRow
        dt = DataTables("数据源表").find("产品名称 = '" & e.DataRow("产品名称") & "' And 工序名称 = '" & e.DataRow("工序名称") & "'")
        dt2 = DataTables("订单数量表").find("产品名称 = '" & e.DataRow("产品名称") & "'")
        dt4 = DataTables("成品入进仓数").find("产品名称 = '" & e.DataRow("产品名称") & "'")
        If dt IsNot Nothing OrElse dt2 IsNot Nothing OrElse dt4 IsNot Nothing Then
            e.Cancel = True
        End If
    Case "产品编号","工序号"
        Dim dt1 As DataRow
        Dim dt3 As DataRow
        Dim dt5 As DataRow
        dt1 = DataTables("数据源表").find("产品编号 = '" & e.DataRow("产品编号") & "' And 工序号 = '" & e.DataRow("工序号") & "'")
        dt3 = DataTables("订单数量表").find("产品编号 = '" & e.DataRow("产品编号") & "'")
        dt5 = DataTables("成品入进仓数").find("产品编号 = '" & e.DataRow("产品编号") & "'")
        If  dt1 IsNot Nothing OrElse dt3 IsNot Nothing OrElse dt5 IsNot Nothing Then
            e.Cancel = True
        End If
End Select

这里又如何改为判断后台数据呢,我再想想。

[此贴子已经被作者于2020/2/23 16:32:37编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/2/23 16:44:00 [只看该作者]

Select Case e.DataCol.name
    Case "产品名称","工序名称"
        Dim dt As DataRow
        Dim dt2 As DataRow
        Dim dt4 As DataRow
        dt = DataTables("数据源表").SQLfind("产品名称 = '" & e.DataRow("产品名称") & "' And 工序名称 = '" & e.DataRow("工序名称") & "'")
        dt2 = DataTables("订单数量表").SQLfind("产品名称 = '" & e.DataRow("产品名称") & "'")
        dt4 = DataTables("成品入进仓数").SQLfind("产品名称 = '" & e.DataRow("产品名称") & "'")
        If dt IsNot Nothing OrElse dt2 IsNot Nothing OrElse dt4 IsNot Nothing Then
            e.Cancel = True
        End If
    Case "产品编号","工序号"
        Dim dt1 As DataRow
        Dim dt3 As DataRow
        Dim dt5 As DataRow
        dt1 = DataTables("数据源表").SQLfind("产品编号 = '" & e.DataRow("产品编号") & "' And 工序号 = '" & e.DataRow("工序号") & "'")
        dt3 = DataTables("订单数量表").SQLfind("产品编号 = '" & e.DataRow("产品编号") & "'")
        dt5 = DataTables("成品入进仓数").SQLfind("产品编号 = '" & e.DataRow("产品编号") & "'")
        If  dt1 IsNot Nothing OrElse dt3 IsNot Nothing OrElse dt5 IsNot Nothing Then
            e.Cancel = True
        End If
End Select
同样把find改为SQLfind,好了,谢谢指教,我的问题解决了,明天想另外的问题,天天学少少,在思考中得到充实,证实自我,比那些欺人、耍手段的强多了,开心。
[此贴子已经被作者于2020/2/25 21:30:13编辑过]

 回到顶部
总数 24 上一页 1 2 3