Foxtable(狐表)用户栏目专家坐堂 → 按顺序操作问题


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

主题:按顺序操作问题

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
按顺序操作问题  发帖心情 Post By:2017/11/20 10:40:00 [只看该作者]

甜老师,来问你一个按顺序操作的问题,搞半天没搞出来。。。
如图,有3大列,可用库存,补货需求,补货优先级排名
根据排名来配货,排名第一的优先配。
先从总部仓库配货。
当总部仓库不能满足时,从排名最后一名的门店开始,按顺序配给其他门店。
补货需求为正的才需要补货,为负的表示不需要补货。
如下,排名第一的门店没有为正的数,不需要补货
排名二的门店需要一件3XL的,但是总部仓库没有货,所以从排名最后的掉入(假定为图中的排名17店)

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171120103558.png
图片点击可在新窗口打开查看

在另外一个补货表里增加行,填入从哪个调到哪里的数据。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171120104415.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/11/20 10:57:14编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/20 10:57:00 [只看该作者]

Dim dic_kc As new Dictionary(Of String ,String)  '可用库存
Dim dic_aqkc As new Dictionary(Of String ,String)          '安全库存
Dim dic_bhxq As new Dictionary(Of String ,String)   '补货需求

For Each c2 As Col In Forms("调拨补").Controls("table2").Table.Cols 
    If c2.Caption.Contains("可用库存_") And c2.Caption.Contains("店仓名称") = False Then
        Dim v  = c2.Caption.Replace("可用库存_","")
        dic_kc.add(v, c2.name)
    End If
    
    If c2.Caption.Contains("安全库存_") And c2.Caption.Contains("店仓名称") = False Then
        Dim v  = c2.Caption.Replace("安全库存_","")
        dic_aqkc.add(v, c2.name)
    End If
    
    If c2.name.Contains("补货需求_")  Then
        Dim v  = c2.name.Replace("补货需求_","")
        dic_bhxq.add(v, c2.name)
    End If
Next
For Each r2 As Row In Forms("调拨补").Controls("table2").Table.Rows   
    For Each key As String In dic_aqkc.Keys
        If r2(dic_aqkc(key)) > 0 Then '
            r2(dic_bhxq(key)) = r2(dic_aqkc(key)) - r2(dic_kc(key))  '算出的补货需求
        End If
    Next    
Next
[此贴子已经被作者于2017/11/20 10:58:47编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/20 11:42:00 [只看该作者]

1、上传具体实例测试;

 

2、循环为正数的单元格,然后依次从后面递减。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/20 12:05:00 [只看该作者]

谢谢甜老大!!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试调拨.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171120120337.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171120120330.png
图片点击可在新窗口打开查看

店仓Id 为 1的是总部仓库 代码就随便放在一个按钮,刚才着急,忘了做按钮。。。
[此贴子已经被作者于2017/11/20 12:41:43编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/20 13:07:00 [只看该作者]

Dim dic_kc As new Dictionary(Of String ,String)  '可用库存
Dim dic_aqkc As new Dictionary(Of String ,String)          '安全库存
Dim dic_bhxq As new Dictionary(Of String ,String)   '补货需求

Dim t As Table = Tables("调拨操作表")
For Each c2 As Col In t.Cols
    If c2.Caption.Contains("可用库存_") And c2.Caption.Contains("店仓名称") = False Then
        Dim v  = c2.Caption.Replace("可用库存_","")
        dic_kc.add(v, c2.name)
    End If
   
    If c2.Caption.Contains("安全库存_") And c2.Caption.Contains("店仓名称") = False Then
        Dim v  = c2.Caption.Replace("安全库存_","")
        dic_aqkc.add(v, c2.name)
    End If
   
    If c2.caption.Contains("补货需求_")  Then
        Dim v  = c2.caption.Replace("补货需求_","")
        dic_bhxq.add(v, c2.name)
    End If
Next
For Each r2 As Row In t.Rows
    For Each key As String In dic_aqkc.Keys
        If r2(dic_aqkc(key)) > 0 Then '
            r2(dic_bhxq(key)) = r2(dic_aqkc(key)) - r2(dic_kc(key))  '算出的补货需求
        End If
    Next
Next

Dim r1 As Row = t.Rows(0)
For i As Integer = 1 To t.Rows.count-1
    For Each key As String In dic_bhxq.Keys
        Dim kcname As String = dic_kc(key)
        Dim bhname As String = dic_bhxq(key)
        If val(t.rows(i)(bhname)) > 0 Then
            Dim count = val(t.Rows(i)(bhname))
            If val(r1(kcname)) > 0 Then
                If val(r1(kcname)) >= val(t.Rows(i)(bhname)) Then
                    Dim ndr As DataRow = DataTables("调拨单据").AddNew
                    ndr("创建时间") = Date.now
                    ndr("调出门店") = r1("店仓ID")
                    ndr("商品款号") = r1("商品款号")
                    ndr("颜色") = r1("颜色")
                    ndr("调入门店") = t.Rows(i)("店仓id")
                    ndr(key) = count
                    'r1(kcname) -= count
                    count = 0
                Else
                    Dim ndr As DataRow = DataTables("调拨单据").AddNew
                    ndr("创建时间") = Date.now
                    ndr("调出门店") = r1("店仓ID")
                    ndr("商品款号") = r1("商品款号")
                    ndr("颜色") = r1("颜色")
                    ndr("调入门店") = t.Rows(i)("店仓id")
                    ndr(key) = r1(kcname)
                    'r1(kcname) = 0
                    count -= r1(kcname)
                End If
                Return i  '调试代码
            End If
           
            If count > 0 Then
                For j As Integer = t.Rows.count-1 To i Step -1
                    Dim r As Row = t.Rows(j)
                    If r(kcname) > 0 Then
                        If r(kcname) >= count Then
                            Dim ndr As DataRow = DataTables("调拨单据").AddNew
                            ndr("创建时间") = Date.now
                            ndr("调出门店") = r("店仓ID")
                            ndr("商品款号") = r("商品款号")
                            ndr("颜色") = r("颜色")
                            ndr("调入门店") = t.Rows(i)("店仓id")
                            ndr(key) = count
                            'r(kcname) -= count
                            count = 0
                        Else
                            Dim ndr As DataRow = DataTables("调拨单据").AddNew
                            ndr("创建时间") = Date.now
                            ndr("调出门店") = r("店仓ID")
                            ndr("商品款号") = r("商品款号")
                            ndr("颜色") = r("颜色")
                            ndr("调入门店") = t.Rows(i)("店仓id")
                            ndr(key) = r(kcname)
                            count -= r(kcname)
                            'r(kcname) = 0
                        End If
                    End If
                    If count = 0 Then Exit For
                Next
            End If
        End If
    Next
Next


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/20 13:43:00 [只看该作者]

谢谢甜老大,
这个val是什么,好像没声明。。卡住了

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171120134132.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/20 14:05:00 [只看该作者]

甜老大,你这个是不是全局变量。。。
要不你把项目文件发出来,我自己研究。。。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/20 14:18:00 [只看该作者]

请,直接使用4楼的例子测试。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/11/21 1:31:00 [只看该作者]

恩恩,甜老师,我测了,可以。
就是我原来的字段有点不一样,后面我怎么搞也没搞成
我就重新做了一个和我一样的项目,麻烦你帮我看下。。。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:调拨测试.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171121012522.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/21 8:32:00 [只看该作者]

请贴出开发者密码。

 回到顶部
总数 15 1 2 下一页