Foxtable(狐表)用户栏目专家坐堂 → 求助订单交付逐减的代码写法


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

主题:求助订单交付逐减的代码写法

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


加好友 发短信
等级:婴狐 帖子:62 积分:446 威望:0 精华:0 注册:2015/11/12 22:30:00
  发帖心情 Post By:2015/11/30 11:21:00 [只看该作者]

For Each dr As DataRow In DataTables("订单明细").Select("D2C款号 = 'L00753020001'", "D2C款号,颜色,_Sortkey")
    '计算入库
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "款号 = '" & dr("D2C款号") & "' and 颜色 = '" & dr("颜色") & "'")
    Dim sumout As Double = DataTables("订单明细").compute("sum(入库数量)", "D2C款号 = '" & dr("D2C款号") & "' and D2C颜色 = '" & dr("D2C颜色") & "' and _Identify <= " & dr("_Identify"))
    sumin -= sumout
    If sumin >= dr("订单数量") Then
        dr("入库数量") = dr("订单数量")  (这里想要的是最后一行入库数量=若sumin大于或等于订单数量,则值为sumin,待交货数量=sumin-订单数量,则待入库数量为负数
        dr("待交货数量") = 0
    Else
        dr("入库数量") = iif(sumin>=0, sumin, 0)
        dr("待交货数量") = dr("订单数量") - dr("入库数量")
    End If
Next 
另外,这段代码每次刷新后的结果会不一样,每次要清空前面刷新后的结果重新刷新结果才正确。
初学者,问题多多啊..

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 11:30:00 [只看该作者]

以下是引用Carl在2015/11/30 11:01:00的发言:
两张相同内容的表(如:一张订单明细总表和一张订单明细分表)都重采购入库里面拉数据做循环冲减,两边的结果会相互影响?(注:订单明细总表里面的数据是从订单明细分表拉过去的)

 

不会相互影响,除非你在比如datacolchange等事件写了代码。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 11:51:00 [只看该作者]

Dim ls As List(Of String()) = DataTables("订单明细").GetValues("D2C款号|颜色")
For Each ary As String() In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "款号 = '" & ary(0) & "' and 颜色 = '" & ary(1) & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("D2C款号 = '" & ary(0) & "' and 颜色 = '" & ary(1) & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        Dim sumout As Double = DataTables("订单明细").compute("sum(入库数量)", "D2C款号 = '" & dr("D2C款号") & "' and 颜色 = '" & dr("颜色") & "' and _Identify < " & dr("_Identify"))
        Dim st As Double = sumin - sumout
        If st >= dr("订单数量") Then
            If i = drs.count - 1 Then
                dr("入库数量") = st
                dr("待交货数量") = dr("订单数量") - dr("入库数量")
            Else
                dr("入库数量") = dr("订单数量")
                dr("待交货数量") = 0
            End If
        Else
            dr("入库数量") = iif(st>=0, st, 0)
            dr("待交货数量") = dr("订单数量") - dr("入库数量")
        End If
    Next
Next

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


加好友 发短信
等级:婴狐 帖子:62 积分:446 威望:0 精华:0 注册:2015/11/12 22:30:00
  发帖心情 Post By:2015/11/30 13:47:00 [只看该作者]


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

Dim ls As List(Of String()) = DataTables("订单明细_张笑南").GetValues("D2C条码")
For Each ary As String() In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "条码 = '" & ary(0) & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细_张笑南").Select("D2C条码 = '" & ary(0) & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        Dim sumout As Double = DataTables("订单明细_张笑南").compute("sum(入库数量)", "D2C条码 = '" & dr("D2C条码") & "' and _Identify < " & dr("_Identify"))
        Dim st As Double = sumin - sumout
        If st >= dr("订单数量") Then
            If i = drs.count - 1 Then
                dr("入库数量") = st
                dr("待交货数量") = dr("订单数量") - dr("入库数量")
            Else
                dr("入库数量") = dr("订单数量")
                dr("待交货数量") = 0
            End If
        Else
            dr("入库数量") = iif(st>=0, st, 0)
            dr("待交货数量") = dr("订单数量") - dr("入库数量")
        End If
    Next
Next

这个错误是什么缘故?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 14:30:00 [只看该作者]

Dim ls As List(Of String) = DataTables("订单明细_张笑南").GetValues("D2C条码")
For Each ary As String In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "条码 = '" & ary & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细_张笑南").Select("D2C条码 = '" & ary & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        Dim sumout As Double = DataTables("订单明细_张笑南").compute("sum(入库数量)", "D2C条码 = '" & dr("D2C条码") & "' and _Identify < " & dr("_Identify"))
        Dim st As Double = sumin - sumout
        If st >= dr("订单数量") Then
            If i = drs.count - 1 Then
                dr("入库数量") = st
                dr("待交货数量") = dr("订单数量") - dr("入库数量")
            Else
                dr("入库数量") = dr("订单数量")
                dr("待交货数量") = 0
            End If
        Else
            dr("入库数量") = iif(st>=0, st, 0)
            dr("待交货数量") = dr("订单数量") - dr("入库数量")
        End If
    Next
Next


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


加好友 发短信
等级:婴狐 帖子:62 积分:446 威望:0 精华:0 注册:2015/11/12 22:30:00
  发帖心情 Post By:2015/11/30 17:39:00 [只看该作者]

DataTables("订单交付进度表").DataRows.Clear
For Each dr As DataRow In DataTables("订单明细").Select("D2C款号 = 'L00753020001'", "_Sortkey")
    Dim nr As DataRow = DataTables("订单交付进度表").AddNew
    nr("供应商") = dr("供应商")
    nr("D2C款号") = dr("D2C款号")
    nr("D2C颜色") = dr("颜色")
    nr("订单数量") = dr("订单数量")
    
    '计算入库
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "款号 = '" & dr("D2C款号") & "' and 颜色 = '" & dr("颜色") & "'")
    Dim sumout As Double = DataTables("订单交付进度表").compute("sum(入库数量)", "D2C款号 = '" & dr("D2C款号") & "' and D2C颜色 = '" & dr("颜色") & "' and _Identify <= " & nr("_Identify"))
    sumin -= sumout
    If sumin >= dr("订单数量") Then
        nr("入库数量") = dr("订单数量")
        nr("待交货数量") = 0
    Else
        nr("入库数量") = iif(sumin>=0, sumin, 0)
        nr("待交货数量") = dr("订单数量") - nr("入库数量")
    End If
Next

这段代码,如果订单明细是多张,要把每行的记录汇总到订单交付进度表,然后再计算,写法是?然后算法也是要跟下面的代码算法的逻辑一样。
Dim ls As List(Of String) = DataTables("订单明细_张笑南").GetValues("D2C条码")
For Each ary As String In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "条码 = '" & ary & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细_张笑南").Select("D2C条码 = '" & ary & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        Dim sumout As Double = DataTables("订单明细_张笑南").compute("sum(入库数量)", "D2C条码 = '" & dr("D2C条码") & "' and _Identify < " & dr("_Identify"))
        Dim st As Double = sumin - sumout
        If st >= dr("订单数量") Then
            If i = drs.count - 1 Then
                dr("入库数量") = st
                dr("待交货数量") = dr("订单数量") - dr("入库数量")
            Else
                dr("入库数量") = dr("订单数量")
                dr("待交货数量") = 0
            End If
        Else
            dr("入库数量") = iif(st>=0, st, 0)
            dr("待交货数量") = dr("订单数量") - dr("入库数量")
        End If
    Next
Next

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 18:18:00 [只看该作者]

DataTables("订单交付进度表").DataRows.Clear
Dim ls As List(Of String) = DataTables("订单明细").GetValues("D2C条码")
For Each ary As String In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "条码 = '" & ary & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("D2C条码 = '" & ary & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
       
        Dim nr As DataRow = DataTables("订单交付进度表").AddNew
        nr("供应商") = dr("供应商")
        nr("D2C款号") = dr("D2C款号")
        nr("D2C颜色") = dr("颜色")
        nr("订单数量") = dr("订单数量")
        nr("D2C条码") = dr("D2C条码")
        dr = nr
       
        Dim sumout As Double = dr.DataTable.compute("sum(入库数量)", "D2C条码 = '" & dr("D2C条码") & "' and _Identify < " & dr("_Identify"))
        Dim st As Double = sumin - sumout

        If st >= dr("订单数量") Then
            If i = drs.count - 1 Then
                dr("入库数量") = st
                dr("待交货数量") = dr("订单数量") - dr("入库数量")
            Else
                dr("入库数量") = dr("订单数量")
                dr("待交货数量") = 0
            End If
        Else
            dr("入库数量") = iif(st>=0, st, 0)
            dr("待交货数量") = dr("订单数量") - dr("入库数量")
        End If
    Next
Next


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


加好友 发短信
等级:婴狐 帖子:62 积分:446 威望:0 精华:0 注册:2015/11/12 22:30:00
  发帖心情 Post By:2015/11/30 20:26:00 [只看该作者]

DataTables("订单交付进度查询表").DataRows.Clear
Dim ls As List(Of String) = DataTables("订单明细").GetValues("D2C条码")    假设有订单明细有表1至表10共10个表,要把这10个表的数据都放进"订单交付进度查询表",要怎么弄。汗.......图片点击可在新窗口打开查看
For Each ary As String In ls
    Dim sumin As Double = DataTables("采购入库明细").compute("sum(采购入库数量)", "条码 = '" & ary & "'")
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("D2C条码 = '" & ary & "'", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        
        Dim nr As DataRow = DataTables("订单交付进度查询表").AddNew
nr("订单系列号") = dr("订单系列号")
nr("官网订单号") = dr("官网订单号")
nr("订单来源") = dr("订单来源")
nr("品牌") = dr("品牌")
nr("购买类型") = dr("购买类型")
nr("设计师款号") = dr("设计师款号")
nr("D2C款号") = dr("D2C款号")
nr("D2C条码") = dr("D2C条码")
nr("品名") = dr("品名")
nr("颜色") = dr("颜色")
nr("尺码") = dr("尺码")
nr("订单数量") = dr("订单数量")
nr("入库数量") = dr("入库数量")
nr("待交货数量") = dr("待交货数量")
nr("订单属性") = dr("订单属性")
nr("商品分类") = dr("商品分类")
nr("波段") = dr("波段")
nr("年份季节") = dr("年份季节")
nr("品牌国家") = dr("品牌国家")
nr("下单日期") = dr("下单日期")
nr("合同交货日期") = dr("合同交货日期")
nr("延期交货日期") = dr("延期交货日期")
nr("补货周期") = dr("补货周期")
nr("重新生成订单") = dr("重新生成订单")
nr("订单完结") = dr("订单完结")
nr("供货价") = dr("供货价")
nr("吊牌价") = dr("吊牌价")
nr("官网预售价") = dr("官网预售价")
dr = nr
Dim sumout As Double = dr.DataTable.compute("sum(入库数量)", "D2C条码 = '" & dr("D2C条码") & "' and _Identify < " & dr("_Identify"))
Dim st As Double = sumin - sumout
If st >= dr("订单数量") Then
If i = drs.count - 1 Then
dr("入库数量") = st
dr("待交货数量") = dr("订单数量") - dr("入库数量")
Else
dr("入库数量") = dr("订单数量")
dr("待交货数量") = 0
End If
Else
dr("入库数量") = iif(st>=0, st, 0)
dr("待交货数量") = dr("订单数量") - dr("入库数量")
End If
    Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 20:57:00 [只看该作者]

全部数据合并到一张表后,参考25楼代码,再统计结果

 

DataTables("订单交付进度查询表").DataRows.Clear
Dim tnames() As String = {"表1", "表2", "表3"}
for each tname as string in tnames
    Dim drs As List(Of DataRow) = DataTables(tname).Select("", "_Identify")
    For i As Integer = 0 To drs.count - 1
        Dim dr As DataRow = drs(i)
        Dim nr As DataRow = DataTables("订单交付进度查询表").AddNew
        '赋值
    Next
Next


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


加好友 发短信
等级:婴狐 帖子:62 积分:446 威望:0 精华:0 注册:2015/11/12 22:30:00
  发帖心情 Post By:2015/12/1 9:47:00 [只看该作者]

好的,谢谢啦,这个我再研究一下。另外有几个问题问一下
1.如何设置单元格的数值颜色?
2.如何自定义并限制单元格输入内容?

 回到顶部
总数 37 上一页 1 2 3 4 下一页