Foxtable(狐表)用户栏目专家坐堂 → 入库处理


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

主题:入库处理

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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
入库处理  发帖心情 Post By:2014/12/24 13:08:00 [显示全部帖子]

我加入了一个产地就导致了修改产地后计算错误   是哪里错了  代码太长我有点晕    谢谢老师们帮我找一下错误再哪里
Select Case  e.DataCol.Name
    Case  "产品编号","入库数量","产地"
        Dim  dr As  DataRow
        Dim  dr1 As  DataRow '接收查找库存明细表的查找结果
        Dim  mr As  DataRow = e.DataRow
        Dim  drs As  List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") &  " And [产品编号] = '" &  mr("产品编号") &  "' And [产地] = '" &  mr("产地") &  "'", "[_SortKey] Desc") '找出上一行并给dr
        dr1 =  DataTables("库存余量表").Find("[产品编号] = '" & mr("产品编号") & "'And [产地] = '" &  mr("产地") &  "'")
        If dr Is Nothing Then    '如果没有找到上一行,说明本行就是第一行
            mr("累计入库数量") = mr("入库数量")                         '当前的累计数量就等于当前的入库数量
            dr = mr
            If dr1 Is Nothing Then                                      '如果没有找到余量表中相同编号的行
                Tables("库存余量表").AddNew()                                    '库存余量表增加一行
                Tables("库存余量表").Current("产品编号") = mr("产品编号")          '增加的行中赋值
                Tables("库存余量表").Current("产品名称") = mr("产品名称")
                Tables("库存余量表").Current("产地") = mr("产地")
                Tables("库存余量表").Current("入库数量") = mr("累计入库数量")  '余量表入库数量等于当前行的累计数量
            Else                                                               '否则
                dr1("入库数量") = mr("累计入库数量")                               '找到行的入库数量等于当前入库明细表的累计数量
            End If                                                              '结束
           
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") &  " And [产品编号] = '" &  dr("产品编号") &  "'And [产地] = '" &  mr("产地") &  "'", "[_SortKey]")
        For  i As  Integer = 1 To drs.Count - 1
            drs(i)("累计入库数量") = drs(i-1)("累计入库数量") + drs(i)("入库数量")
            If dr1 IsNot Nothing Then                                      '如果没有找到余量表中相同编号的行dr1不为空
                dr1("入库数量") = drs(i)("累计入库数量")                               '找到行的入库数量等于当前入库明细表上一行的累计数量
            End If                                                              '结束
        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 &  "'And [产地] = '" &  mr("产地") &  "'", "[_SortKey] Desc")
            If  dr Is Nothing Then
                dr = e.DataTable.Find("[产品编号] = '" & e.OldValue &  "'And [产地] = '" &  mr("产地") &  "'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("累计入库数量") = dr("入库数量")
                    If dr1 Is Nothing Then                                      '如果没有找到余量表中相同编号的行
                        Tables("库存余量表").AddNew()                                    '库存余量表增加一行
                        Tables("库存余量表").Current("产品编号") = mr("产品编号")          '增加的行中赋值
                        Tables("库存余量表").Current("产品名称") = mr("产品名称")
                        Tables("库存余量表").Current("产地") = mr("产地")
                        Tables("库存余量表").Current("入库数量") = mr("累计入库数量")  '余量表入库数量等于当前行的累计数量
                    Else                                                               '否则
                        dr1("入库数量") = dr("累计入库数量")                               '找到行的入库数量等于当前入库明细表的累计数量
                    End If                                                              '结束
                End If
            End If
           
            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 &  "'And [产地] = '" &  mr("产地") &  "'", "[_SortKey] Desc")
                If  dr Is Nothing Then
                    dr = e.DataTable.Find("[产地] = '" & e.OldValue &  "'And [产品编码] = '" &  mr("产品编号") &  "'", "[_SortKey]")
                    If dr IsNot Nothing Then
                        dr("累计入库数量") = dr("入库数量")
                        If dr1 Is Nothing Then                                      '如果没有找到余量表中相同编号的行
                            Tables("库存余量表").AddNew()                                    '库存余量表增加一行
                            Tables("库存余量表").Current("产品编号") = mr("产品编号")          '增加的行中赋值
                            Tables("库存余量表").Current("产品名称") = mr("产品名称")
                            Tables("库存余量表").Current("产地") = mr("产地")
                            Tables("库存余量表").Current("入库数量") = mr("累计入库数量")  '余量表入库数量等于当前行的累计数量
                        Else                                                               '否则
                            dr1("入库数量") = dr("累计入库数量")                               '找到行的入库数量等于当前入库明细表的累计数量
                        End If                                                              '结束
                    End If
                End If
            End If
           
            If  dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") &  " And [产品编号] = '" &  dr("产品编号") &  "'And [产地] = '" &  mr("产地") &  "'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("累计入库数量") = drs(i-1)("累计入库数量") + drs(i)("入库数量")
                    If dr1 Is Nothing Then                                      '如果没有找到余量表中相同编号的行
                        Tables("库存余量表").AddNew()                                    '库存余量表增加一行
                        Tables("库存余量表").Current("产品编号") = mr("产品编号")          '增加的行中赋值
                        Tables("库存余量表").Current("产品名称") = mr("产品名称")
                        Tables("库存余量表").Current("产地") = mr("产地")
                        Tables("库存余量表").Current("入库数量") = mr("累计入库数量")  '余量表入库数量等于当前行的累计数量
                    Else                                                               '否则
                        dr1("入库数量") = drs(i)("累计入库数量")                               '找到行的入库数量等于当前入库明细表的累计数量
                    End If
                Next
            End If
        End If
End Select

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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
  发帖心情 Post By:2014/12/24 14:33:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:进销存.rar

 修改产品编号是正常的计算

修改产地就麻烦了 


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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
  发帖心情 Post By:2014/12/24 16:16:00 [显示全部帖子]

还不对

比如编号输入001   产地    上海     数量   1

然后修改              产地     武汉

库存余量表中会有三条记录 

编号          产地     入库数量

001          空            空

001         上海          1

001         武汉          1

在入库明细表中输入编号直接插入了没产地的行   修改产地后没有给原来的行更改新的值

呵呵   这两个问题  我研究好长时间了    麻烦甜老师帮我看看


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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
  发帖心情 Post By:2014/12/24 20:15:00 [显示全部帖子]

非常感谢甜老师 的耐心指点   什么时候得到武汉来玩玩   让我也见识一下高人的庐山真面目   呵呵 

只不过不过我学的进度有点慢  还得麻烦甜老师多指点咯


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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
  发帖心情 Post By:2014/12/26 9:36:00 [显示全部帖子]

甜老师这个在外部数据源中为什么会报错  (红色部分的代码)

 

Dim Key  As  Decimal
 Dim Index As Integer
 Dim Filter As String
 Dim r As Row
 Index = Math.Min(e.OldIndex, e.NewIndex)
 Key = e.Table.Rows(Index)("_SortKey")
 r = e.Table.Rows(e.NewIndex)
 Filter = "[_SortKey] >= " & Key & " And [单号] = '" & r("单号") &  "'And [产地] = '" & r("产地") &  "'"
e.Table.DataTable.DataCols("入库明细表").RaiseDataColChanged(Filter)


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


加好友 发短信
等级:幼狐 帖子:195 积分:1395 威望:0 精华:0 注册:2014/1/21 9:45:00
  发帖心情 Post By:2014/12/26 14:41:00 [显示全部帖子]

我改动了一下   行了   大概搞懂了  代码的含义了    

因为我没见过   这样的删除方法     谢了


 回到顶部