Foxtable(狐表)用户栏目专家坐堂 → 更新数据


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

主题:更新数据

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/6 20:38:00 [只看该作者]

上面统计代码关联了几个表?这些表总共有多少行数据?

"应付副表本地表"表都有什么表事件?

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


加好友 发短信
等级:幼狐 帖子:135 积分:1404 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2023/6/7 13:56:00 [只看该作者]

关联18个表,执行查询时,用计时器测过,时间很短,1秒左右,查询出来的数据最多100多行
用MessageBox调试时,都是在把数据填到应付副表本地表时崩溃的
表事件代码如下

表事件

 

应付副表本地表_DataColChanged

 

Dim dr As DataRow = e.DataRow

Select Case e.DataCol.Name

    

    Case "contrastmaterialName"

        

        Dim pr1 As DataRow = e.DataRow.GetParentRow("R02_supplier")

        If pr1 IsNot Nothing Then

            '当单据类型=产品净银重时,对比色=应付科表中相同成色列对应的转换后成色

            If e.DataRow("kind") = "产品净银重" Then

                If e.DataRow("contrastmaterialName") = "S925银" Then

                    e.DataRow("materialName1") = pr1("PickingColour925")

                Else

                    If e.DataRow("contrastmaterialName") = "足银990" Then

                        e.DataRow("materialName1") = pr1("PickingColour990")

                    Else

                        If e.DataRow("contrastmaterialName") = "足银999" Then

                            e.DataRow("materialName1") = pr1("PickingColour999")

                        Else

                            If e.DataRow("contrastmaterialName") = "足银999.9" Then

                                e.DataRow("materialName1") = pr1("PickingColour9999")

                            End If

                        End If

                    End If

                End If

            Else

                '当单据类型 = 实工费 Or = 期初 - 工费时, 对比色 =应付科目表中相同供应商代码对应的主成色

                If e.DataRow("kind") = "实工费" Or e.DataRow("kind") = "期初-工费" Then

                    e.DataRow("materialName1") = pr1("materialName")

                Else

                    '当单据类型=领料重时,对比色=比较成色

                    If e.DataRow("kind") = "领料重" Then

                        e.DataRow("materialName1") = e.DataRow("contrastmaterialName")

                    End If

                End If

            End If

        End If

        

        

        

        

        '依据对比成色得出折点率

    Case "materialName1"

        Dim pr3 As DataRow = e.DataRow.GetParentRow("R02_supplier")

        If pr3 IsNot Nothing Then

            If e.DataRow("materialName1") = "S925银" Then

                e.DataRow("weightRate") = pr3("ConversionRate925")

            Else

                If e.DataRow("materialName1") = "足银990" Then

                    e.DataRow("weightRate") = pr3("ConversionRate990")

                Else

                    If e.DataRow("materialName1") = "足银999" Then

                        e.DataRow("weightRate") = pr3("ConversionRate999")

                    Else

                        If e.DataRow("materialName1") = "足银999.9" Then

                            e.DataRow("weightRate") = pr3("ConversionRate9999")

                        Else

                            If e.DataRow("materialName1") = "黄铜" Then

                                e.DataRow("weightRate") = 0

                            End If

                        End If

                    End If

                End If

            End If

        End If

        

End Select

 

应付副表本地表_AfterCheckRow

 

'获得相关参数

Dim smartID As String = e.Form.Controls("smartID").Value

 

For Each r As Row In Tables("应付副表本地表").Rows '遍历表所有行

    Dim dr As Row = e.Row '定义当前行

    If dr.IsNull("factoryID") = False Then

        If r("factoryID") = dr("factoryID") Then '如果遍历到某行ID列与当前行ID列值相同  r("ID")=dr("ID") Or   Or r("sourceID") = dr("sourceID")

            r.Checked = e.Row.Checked '则某行复选框状态与当前行复选框状态相同

            r("checked") = e.Row.Checked

            r("smartID") = "" & smartID & ""     

            If e.Row.Checked = False Then 'And dr.locked = False  当复选框为否

                r("smartID") = Nothing

                r("checked") = e.Row.Checked                    

            End If

        End If

    End If

    

Next

 

DataTables("应付副表本地表").Save()

 

[此贴子已经被作者于2023/6/7 13:59:26编辑过]

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/7 14:04:00 [只看该作者]

关联18个表,查询慢不慢要看这18个表的总数据量,而不是看查询出来的数据有几行。

调试一下看是生成统计表慢。还是后面的循环给"应付副表本地表"表赋值慢:http://www.foxtable.com/webhelp/topics/2226.htm

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


加好友 发短信
等级:幼狐 帖子:135 积分:1404 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2023/6/7 14:57:00 [只看该作者]

前面生成统计表才要0.5秒左右,在后面的循环给"应付副表本地表"表赋值慢 要6秒多

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/7 15:05:00 [只看该作者]

注释掉datacolchanged事件代码,测试慢不慢?

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


加好友 发短信
等级:幼狐 帖子:135 积分:1404 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2023/6/7 15:11:00 [只看该作者]

注释后,循环给"应付副表本地表"表赋值慢 还是要6秒多

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/7 15:41:00 [只看该作者]

"应付副表本地表"有关联表,有用到和这个表的表达式列?

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


加好友 发短信
等级:幼狐 帖子:135 积分:1404 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2023/6/7 16:54:00 [只看该作者]

没有用到表达式列

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


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/7 16:59:00 [只看该作者]

请做个例子发上来测试

 回到顶部
总数 19 上一页 1 2