1、不能及时更新,修改了两三次数据才更新第一次,有时候就不更新,感觉不稳定,不知具体原因出现在哪里?
2、因为订单表每次更新都是整年更新,若要重置列更新感觉速度太慢,订单表一年大概有一万行左右,对于此问题老师给我点具体设计思路,我想了一个月,思想如以下代码,但是感觉不好,效率低下,大量重算速度慢。
订单表(备注:这里有三种日期,访客、订单、过来)
DataColChanged事件写入如下代码:
Select Case e.DataCol.Name
Case "单数","预算利润","实际利润"
Dim pr,pr1,pr2 As DataRow
pr = DataTables("推广流水").Find("编号= '" & e.DataRow("编号") & "'")
If pr IsNot Nothing Then
DataTables("推广流水").DataCols("编号").RaiseDataColChanged(pr)
End If
pr1 = DataTables("公司流水").Find("日期= '" & e.DataRow("订单日期") & "'")
If pr1 IsNot Nothing Then
DataTables("公司流水").DataCols("日期").RaiseDataColChanged(pr1)
End If
pr2 = DataTables("公司流水").Find("日期= '" & e.DataRow("过来日期") & "'")
If pr2 IsNot Nothing Then
DataTables("公司流水").DataCols("日期").RaiseDataColChanged(pr2)
End If
End Select
公司流水表DataColChanged事件写入如下代码:
If e.DataCol.Name = "日期" Then
If e.NewValue Is Nothing Then
e.DataRow("广告费")=Nothing
e.DataRow("加v")=Nothing
e.DataRow("人工成本")=Nothing
e.DataRow("订单日期_单数")=Nothing
e.DataRow("订单日期_预算利润")=Nothing
e.DataRow("订单日期_实际利润")=Nothing
e.DataRow("过来日期_单数")=Nothing
e.DataRow("过来日期_预算利润")=Nothing
e.DataRow("过来日期_实际利润")=Nothing
e.DataRow("出团_订单日期_单数")=Nothing
e.DataRow("出团_订单日期_预算利润")=Nothing
e.DataRow("出团_订单日期_实际利润")=Nothing
e.DataRow("待出团_过来日期_单数")=Nothing
e.DataRow("待出团_过来日期_预算利润")=Nothing
e.DataRow("待出团_过来日期_实际利润")=Nothing
Else
Dim Filter,Filter1,Filter2,Filter3,Filter4,Filter5,Filter6 As String
Filter = "日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'"
Filter1 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'"
Filter2 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'"
Filter3 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='出团'"
Filter4 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='待出团'"
Filter5 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='出团'"
Filter6 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='待出团'"
e.DataRow("广告费")=DataTables("广告费").SQLCompute("sum([消费])",Filter )
e.DataRow("现金")=DataTables("广告费").SQLCompute("sum([现金])",Filter )
e.DataRow("加v")=DataTables("加V").SQLCompute("sum([数量])",Filter )
e.DataRow("人工成本")=DataTables("分摊").SQLCompute("sum([人工成本])",Filter )
e.DataRow("订单日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter1 )
e.DataRow("订单日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter1 )
e.DataRow("订单日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter1 )
e.DataRow("过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter2 )
e.DataRow("过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter2 )
e.DataRow("过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter2 )
e.DataRow("出团_订单日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter3 )
e.DataRow("出团_订单日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter3 )
e.DataRow("出团_订单日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter3 )
e.DataRow("待出团_订单日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter4 )
e.DataRow("待出团_订单日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter4 )
e.DataRow("待出团_订单日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter4 )
e.DataRow("出团_过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter5 )
e.DataRow("出团_过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter5 )
e.DataRow("出团_过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter5 )
e.DataRow("待出团_过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter6 )
e.DataRow("待出团_过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter6 )
e.DataRow("待出团_过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter6 )
End If
End If
推广流水表DataColChanged事件写入如下代码:
If e.DataCol.Name = "编号" Then
If e.NewValue Is Nothing Then
e.DataRow("账户币")=Nothing
e.DataRow("现金")=Nothing
e.DataRow("加v")=Nothing
e.DataRow("订单日期_单数")=Nothing
e.DataRow("订单日期_预算利润")=Nothing
e.DataRow("订单日期_实际利润")=Nothing
e.DataRow("过来日期_单数")=Nothing
e.DataRow("过来日期_预算利润")=Nothing
e.DataRow("过来日期_实际利润")=Nothing
e.DataRow("出团_订单日期_单数")=Nothing
e.DataRow("出团_订单日期_预算利润")=Nothing
e.DataRow("出团_订单日期_实际利润")=Nothing
e.DataRow("待出团_过来日期_单数")=Nothing
e.DataRow("待出团_过来日期_预算利润")=Nothing
e.DataRow("待出团_过来日期_实际利润")=Nothing
e.DataRow("运营") = Nothing
e.DataRow("推广") = Nothing
e.DataRow("路径") = Nothing
Else
Dim dr As DataRow
dr = DataTables("ku").Find("[编码] = '" & e.NewValue & "'")
If dr IsNot Nothing Then
e.DataRow("运营") = dr("运营")
e.DataRow("推广") = dr("平台")
e.DataRow("路径") = dr("路径")
End If
Dim Filter,Filter1,Filter2,Filter3,Filter4,Filter5,Filter6 As String
Filter = "日期 = #" & e.DataRow("日期") & "# And 编号= '" & e.DataRow("编号") & "'And 公司= '" & e.DataRow("公司") & "'"
Filter1 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 编号= '" & e.DataRow("编号") & "'"
Filter2 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 编号= '" & e.DataRow("编号") & "'"
Filter3 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='出团'And 编号= '" & e.DataRow("编号") & "'"
Filter4 = "订单日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='待出团'And 编号= '" & e.DataRow("编号") & "'"
Filter5 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='出团'And 编号= '" & e.DataRow("编号") & "'"
Filter6 = "过来日期 = #" & e.DataRow("日期") & "# And 公司= '" & e.DataRow("公司") & "'And 出团='待出团'And 编号= '" & e.DataRow("编号") & "'"
e.DataRow("账户币")=DataTables("广告费").SQLCompute("sum([消费])",Filter )
e.DataRow("现金")=DataTables("广告费").SQLCompute("sum([现金])",Filter )
e.DataRow("加v")=DataTables("加V").SQLCompute("sum([数量])",Filter )
e.DataRow("订单日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter1 )
e.DataRow("订单日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter1 )
e.DataRow("订单日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter1 )
e.DataRow("过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter2 )
e.DataRow("过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter2 )
e.DataRow("过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter2 )
e.DataRow("出团_过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter5 )
e.DataRow("出团_过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter5 )
e.DataRow("出团_过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter5 )
e.DataRow("待出团_过来日期_单数")=DataTables("订单表").SQLCompute("sum([单数])",Filter6 )
e.DataRow("待出团_过来日期_预算利润")=DataTables("订单表").SQLCompute("sum([预算利润])",Filter6 )
e.DataRow("待出团_过来日期_实际利润")=DataTables("订单表").SQLCompute("sum([实际利润])",Filter6 )
End If
End If