以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教进厂物资管理  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=38602)

--  作者:sxqq123
--  发布时间:2013/8/2 11:04:00
--  请教进厂物资管理

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:物资进厂管理.foxdb

请教进厂物资管理:

1、不同日期都有物资进厂,某天物资类别和供货厂家不固定。

2、相同物资类别可能来自不同供货厂家。

3、相同供货厂家可能供应不同物资类别。

3、想统计不同物资类别的每天量,每月量和全年累计量。

4、想统计不同供货厂家的每天量,每月量和全年累计量。

5、每月26日到下月25日为一个月度周期。

做了好长时间,越做越迷糊,请教大师指导。


--  作者:lsy
--  发布时间:2013/8/2 11:18:00
--  

郑公板桥先生,豆腐渣炒咸菜————有言(盐)在先:

难得糊涂。

 

俺看的剧本,都是table结尾,foxdb结尾的,目前尚无资格。


--  作者:狐狸爸爸
--  发布时间:2013/8/2 11:59:00
--  

这样处理多麻烦啊,应该单独做个统计表的,单击某个按钮,得到最新的统计结果就行了。


--  作者:sxqq123
--  发布时间:2013/8/2 15:33:00
--  

在大师帮助下实现了上述功能,现将代码发出和大家共享

Dim dt As Date = e.DataRow("日期")
If dt.Day < 26 Then
    dt = dt.AddMonths(-1)
End If
Dim dt1 As Date = New Date(dt.Year,dt.Month ,26)
Dim dt2 As Date = dt1.AddMonths(1).AddDays(-1)
If e.DataCol.name = "日期" Then
    If e.DataRow.IsNull("日期") = False
        Dim Filter As String
        Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
        Tables("蒸发收碱").Filter = Filter
    End If
End If

Select Case e.DataCol.Name
    Case "数量"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        drs = e.DataTable.Select("液碱标号=\'" & e.DataRow("液碱标号") & "\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#", "日期 ")
        If drs.Count = 1 Then
            e.DataRow("全月用量_标号统计")=e.DataRow("数量")
        Else
            drs = e.DataTable.Select("液碱标号=\'" & e.DataRow("液碱标号") & "\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#", "日期 ")
            For i As Integer = 1 To drs.Count-1
                drs(i)("全月用量_标号统计") = drs(i-1)("全月用量_标号统计") + drs(i)("数量")
            Next
        End If
End Select
Select Case e.DataCol.Name
    Case "数量"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        drs = e.DataTable.Select("供货厂家=\'" & e.DataRow("供货厂家") & "\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#", "日期 ")
        If drs.Count = 1 Then
            e.DataRow("全月用量_厂家统计")=e.DataRow("数量")
        Else
            drs = e.DataTable.Select("供货厂家=\'" & e.DataRow("供货厂家") & "\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#", "日期 ")
            For i As Integer = 1 To drs.Count-1
                drs(i)("全月用量_厂家统计") = drs(i-1)("全月用量_厂家统计") + drs(i)("数量")
            Next
        End If
End Select

Select Case e.DataCol.Name
    Case "数量"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        drs = e.DataTable.Select("供货厂家=\'" & e.DataRow("供货厂家") & "\' and 日期 >= #" & e.DataRow("日期").Year & "/1/1# ")
        If drs.Count = 1 Then
            e.DataRow("全年用量_厂家统计")=e.DataRow("数量")
        Else
            drs = e.DataTable.Select("供货厂家=\'" & e.DataRow("供货厂家") & "\' and 日期 >=  #" & e.DataRow("日期").Year & "/1/1# ")
            For i As Integer = 1 To drs.Count-1
                drs(i)("全年用量_厂家统计") = drs(i-1)("全年用量_厂家统计") + drs(i)("数量")
            Next
        End If
End Select
Select Case e.DataCol.Name
    Case "数量"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        drs = e.DataTable.Select("液碱标号=\'" & e.DataRow("液碱标号") & "\' and 日期 >= #" & e.DataRow("日期").Year & "/1/1# " )
        If drs.Count = 1 Then
            e.DataRow("全年用量_标号统计")=e.DataRow("数量")
        Else
            drs = e.DataTable.Select("液碱标号=\'" & e.DataRow("液碱标号") & "\' and 日期 >=  #" & e.DataRow("日期").Year & "/1/1# ")
            For i As Integer = 1 To drs.Count-1
                drs(i)("全年用量_标号统计") = drs(i-1)("全年用量_标号统计") + drs(i)("数量")
            Next
        End If
End Select
DataTables("蒸发收碱").Save()


--  作者:sxqq123
--  发布时间:2013/8/2 15:33:00
--  

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

--  作者:lsy
--  发布时间:2013/8/2 16:45:00
--  

楼主人儿不错。

有福同享。


--  作者:狐狸爸爸
--  发布时间:2013/8/2 17:13:00
--  

呵呵,是的,要鼓励