Foxtable(狐表)用户栏目专家坐堂 → 数据填充器 出现异常


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

主题:数据填充器 出现异常

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/30 11:55:00 [显示全部帖子]

对账确认DataColChanged事件

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case  "订单号"
        Dim Filter As String = "[订单号] = '" & e.DataRow("订单号") & "'"
        If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
            e.DataRow("产品名") = Nothing '那么清空此行单价列的内容
            e.DataRow("订单单价") = Nothing
            e.DataRow("对账单价") = Nothing
        Else
            Dim dr2 As DataRow
            '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
            dr2 = DataTables("订单").Find(Filter)
            If dr2 IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
                e.DataRow("产品名") = dr2("部品ID")
                e.DataRow("订单单价") = dr2("含税RMB单价")
                e.DataRow("对账单价") = dr2("含税RMB单价")
            End If
            
            Dim drs As List(Of DataRow) = DataTables("对账单").Select(Filter,"[_Identify]")
            Dim dr9 As DataRow
            If drs.Count > 0 Then
                dr9 = drs(0)
                e.DataRow("第一次对账_对账数量") = dr9("对账数量")
                e.DataRow("第一次对账_对账月") = dr9("对账月")
            End If
            If drs.Count > 1 Then
                dr9 = drs(1)
                e.DataRow("第二次对账_对账数量") = dr9("对账数量")
                e.DataRow("第二次对账_对账月") = dr9("对账月")
            End If
        End If
        
        e.DataRow("订单数量") = DataTables("订单").Compute("Sum(订单数量)", Filter)
        e.DataRow("已发货总数量") = DataTables("发货单").Compute("Sum(发货数量)", Filter)
        e.DataRow("对账总数量") = DataTables("对账单").Compute("Sum(对账数量)", Filter)
        
    Case "订单数量","已发货总数量","对账总数量"
        If dr.isnull("订单数量") Or dr.Isnull("已发货总数量") Then
            dr("納品済") = False
        Else
            If dr("订单数量") = dr("已发货总数量") Then
                dr("納品済") = True
            Else
                dr("納品済") = False
            End If
        End If
        Select Case e.DataCol.name
            Case  "已发货总数量","对账总数量"
                If dr.Isnull("已发货总数量") OrElse dr.Isnull("对账总数量") Then
                    dr("对账完毕") = False
                Else
                    If dr("已发货总数量") = dr("对账总数量") Then
                        dr("对账完毕") = True
                    Else
                        dr("对账完毕") = False
                    End If
                End If
        End Select
    Case "订单单价","对账单价"
        If dr.isnull("订单单价") Or dr.Isnull("对账单价") Then
            dr("单价一致") = False
        Else
            If dr("订单单价") = dr("对账单价") Then
                dr("单价一致") = True
            Else
                dr("单价一致") = False
            End If
        End If
        
    Case "单价一致"
        If e.DataRow("单价一致") = False Then
            e.DataRow("金额") =Nothing
        Else
            e.DataRow("金额") = e.DataRow("对账总数量") * e.DataRow("对账单价")
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/30 14:25:00 [显示全部帖子]

什么地方有问题?

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/30 14:55:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/30 15:03:00 [显示全部帖子]

“第一次 和 第二次” 还是 “第一次 或 第二次” 

后者参考
Dim Filter2 As String = "1=1 "
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "第一次对账_对账月 >= #" & .Value & "#"
        Filter2 = Filter2 & " and 第二次对账_对账月 >= #" & .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 & "#"
        Filter2 = Filter2 & " and 第二次对账_对账月 <= #" & .Value & "#"
    End If
End With
If Filter >"" Then
Filter = "(" &  Filter & ") or (" & Filter2 & ")"
End If
[此贴子已经被作者于2016/11/30 15:02:59编辑过]

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 10:43:00 [显示全部帖子]

Dim Filter  As String
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

Dim Total As Integer = 0
Dim Amount As Double = 0
With DataTables("对账确认")
    Total += .Compute("count(第一次对账_对账数量)",Filter )
    Amount += .Compute("Sum(第一次对账_对账金额)",Filter )
    Filter = Filter.Replace("第一次","第二次")
    Total += .Compute("count(第二次对账_对账数量)",Filter )
    Amount += .Compute("Sum(第二次对账_对账金额)",Filter )
    Filter = Filter.Replace("第二次","第三次")
    Total += .Compute("count(第三次对账_对账数量)",Filter )
    Amount += .Compute("Sum(第三次对账_对账金额)",Filter )
    Filter = Filter.Replace("第三次","第四次")
    Total += .Compute("count(第四次对账_对账数量)",Filter )
    Amount += .Compute("Sum(第四次对账_对账金额)",Filter )
End With
Output.Show("对账订单笔数:" & Total)
Output.Show("对账总金额:" & Amount)


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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 10:58:00 [显示全部帖子]

Output.Show("对账订单笔数:" & Total)
Output.Show("对账总金额:" & Amount)

改为

msgbox("对账订单笔数:" & Total)
msgbox("对账总金额:" & Amount)

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 11:33:00 [显示全部帖子]

好好看14楼

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 14:39:00 [显示全部帖子]

该or就or,该and就要and,不要乱用or和and。另外月份是字符不能直接和日期比较的

Dim Filter As String
With e.Form.Controls("CheckedComboBox1")
    If .Value IsNot Nothing Then
        Dim Ft As String
        Dim Vals() As String = .Value.Split(",")
        For Val As Integer = 0 To Vals.Length - 1
            Ft+ =  ",'"  & Vals(Val) & "'"
        Next
        If ft > "" Then
            Filter =  "客户 In (" & Ft.Trim(",") & ")"
        End If
    End If
End With
Dim Filter2 As String = "1=1 "
Dim Filter3 As String = "1=1 "
Dim Filter4 As String = "1=1 "
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " and "
        End If
        Filter = Filter & "第一次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter2 = Filter2 & " and 第二次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter3 = Filter3 & " and 第三次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter4 = Filter4 & " and 第四次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " and "
        End If
        Filter = Filter & "第一次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter2 = Filter2 & " and 第二次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter3 = Filter3 & " and 第三次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter4 = Filter4 & " and 第四次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
    End If
End With

If Filter > "" Then
    Filter = "(" &  Filter & ") or (" & Filter2 & ") or (" & Filter3 & ") or (" & Filter4 & ")"
End If
msgbox(Filter )
e.Form.Controls("Table1").Table.filter = Filter

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 15:03:00 [显示全部帖子]

Dim Filter As String
Dim Filter5 As String
With e.Form.Controls("CheckedComboBox1")
    If .Value IsNot Nothing Then
        Dim Ft As String
        Dim Vals() As String = .Value.Split(",")
        For Val As Integer = 0 To Vals.Length - 1
            Ft+ =  ",'"  & Vals(Val) & "'"
        Next
        If ft > "" Then
            Filter5 =  "客户 In (" & Ft.Trim(",") & ")"
        End If
    End If
End With
Dim Filter2 As String = "1=1 "
Dim Filter3 As String = "1=1 "
Dim Filter4 As String = "1=1 "
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " and "
        End If
        Filter = Filter & "第一次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter2 = Filter2 & " and 第二次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter3 = Filter3 & " and 第三次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter4 = Filter4 & " and 第四次对账_对账月 >= '" & Format(.Value,"yyyy年MM月") & "'"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " and "
        End If
        Filter = Filter & "第一次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter2 = Filter2 & " and 第二次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter3 = Filter3 & " and 第三次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
        Filter4 = Filter4 & " and 第四次对账_对账月 <= '" & Format(.Value,"yyyy年MM月") & "'"
    End If
End With
If  Filter > "" Then
    Filter = "(" &  Filter & ") Or (" & Filter2 & ") Or (" & Filter3 & ") Or (" & Filter4 & ")"
End If
If  Filter5 > "" Then
    If  Filter > "" Then
        Filter = Filter5 & " and (" &  Filter  & ")"
    Else
        Filter = Filter5
    End If
End If
msgbox(Filter)
e.Form.Controls("Table1").Table.filter = Filter

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


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/1 15:22:00 [显示全部帖子]

肯定自己改了代码,我的代码不会有这种条件

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