Foxtable(狐表)用户栏目专家坐堂 → if 分支多了增加行很慢


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

主题:if 分支多了增加行很慢

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
if 分支多了增加行很慢  发帖心情 Post By:2022/4/22 18:53:00 [显示全部帖子]

下面的代码增加行很慢  是代码问题吗  怎么优化 


For Each Name As String In Names
                Dim wr As Row = Tables("订单_产品主表").Current
                Dim nr As Row = Tables("订单_产品清单").AddNew
                nr("报价分类") = wr("报价分类")
                nr("订单类别") = wr("订单类别")
                nr("订单信息") = wr("订单信息")
                nr("客户信息") = wr("客户信息")
                nr("订单ID") = wr("订单ID")
                nr("报价ID") = wr("报价ID")
                nr("客户信息") = wr("客户信息")
                nr("区域楼层") = wr("区域楼层")
                nr("区域名称") = wr("区域名称")
                nr("产品订购ID") = wr("产品订购ID")
                nr("产品_构件名称") = Name
                nr("产品模块") = "木作报价"
                nr("产品分类") = wr("产品分类")
                nr("客户信息") = wr("客户信息")
                nr("日期") = Date.Today
                
                If nr("产品_构件名称").Contains("柜体") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("宽")
                    nr("厚") = wr("厚")
                    nr("数量") = 1
                    nr("计价单位") = "投影面积"
                ElseIf nr("产品_构件名称").Contains("柜门") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("宽")
                    nr("厚") = 22
                    nr("数量") = 1
                    nr("计价单位") = "平方米"
                ElseIf nr("产品_构件名称").Contains("见光") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("厚") + 100
                    nr("厚") = 18
                    nr("数量") = 1
                    nr("计价单位") = "平方米"                    
                ElseIf nr("产品_构件名称").Contains("台面") Then
                    nr("长") = wr("长")
                    nr("数量") = 1
                    nr("计价单位") = "延米"                    
                ElseIf nr("产品_构件名称").Contains("灯光") Then
                    nr("长") = wr("长")
                    nr("数量") = 3
                    nr("计价单位") = "延米"
                ElseIf nr("产品_构件名称").Contains("变压") Then
                    nr("数量") = 1
                    nr("计价单位") = "套"
                ElseIf nr("产品_构件名称").Contains("衣杆") Then
                    nr("数量") = wr("长") * 2.5
                    nr("计价单位") = "延米"
                ElseIf nr("产品_构件名称").Contains("门铰") Then
                    nr("数量") = (wr("长") * wr("宽")*0.0001) / 15
                    Round2(nr("数量"),1)
                    nr("计价单位") = "个"
                ElseIf nr("产品_构件名称").Contains("抽") Then
                    nr("数量") = (wr("长") * wr("宽")*0.000001) / 3.5
                    nr("计价单位") = "件"
                ElseIf nr("产品_构件名称").Contains("墙板") Then
                    nr("数量") = (wr("长") * wr("宽")*0.000001) * 1.05
                    nr("计价单位") = "平方米"
                ElseIf nr("产品_构件名称").Contains("线") Then
                    nr("数量") = wr("长") + 200
                    nr("计价单位") = "延米"
                Else
                End If
            Next
        Else
            Forms("产品清单").Open
        End If


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2022/4/22 19:41:00 [显示全部帖子]

 完整代码 老师看看

Case "新增明细"
        pause = True
        If Tables("订单_产品主表").Current Is Nothing Then '如果Current为Nothing
            MessageBox.Show("没有报价资源",Vars("昵称"))
            Return "" '则返回
        End If
        If DataTables.Contains("订单_产品清单") = False Then '如果表C没有加载
            DataTables.Load("订单_产品清单") '加载表C
        End If
               
            Dim r As Row = Tables("订单_产品主表").Current
            If r IsNot Nothing
                Dim Cols1() As String = {"区域名称","区域楼层","产品名称","长","宽","厚","订单ID"}
                For Each c As String In Cols1
                    If r.IsNull(c) Then
                        r.DataRow.SetError(c, "不能为空")
                        MessageBox.Show(c &"不能为空",Vars("昵称"))
                        Return ""
                    End If
                Next
            End If
            
            Dim cmd As New SQLC ommand
            cmd.ConnectionNa me = "2022"
            cmd.CommandT ext = "Sel ect * From {系统_数据模块}"
            wdt = cmd.Execute Reader()
            Dim dr As Data Row
            '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
            dr = wdt.SQLFind("[模块类别]  ='木作报价模块'and [模块名称] = '"& Tables("订单_产品主表").Current("产品分类") & "'" )
            Dim Value As String = dr("参数_A")
            Dim sps() As Char = {"|"}
            Dim Names() As String  = Value.Split(sps)
            'If e.Form.Controls("同空间").Checked = True Then
            For Each Name As String In Names
                Dim wr As Row = Tables("订单_产品主表").Current
                Dim nr As Row = Tables("订单_产品清单").AddNew
                nr("报价分类") = wr("报价分类")
                nr("订单类别") = wr("订单类别")
                nr("订单信息") = wr("订单信息")
                nr("客户信息") = wr("客户信息")
                nr("订单ID") = wr("订单ID")
                nr("报价ID") = wr("报价ID")
                nr("客户信息") = wr("客户信息")
                nr("区域楼层") = wr("区域楼层")
                nr("区域名称") = wr("区域名称")
                nr("产品订购ID") = wr("产品订购ID")
                nr("产品_构件名称") = Name
                nr("产品模块") = "木作报价"
                nr("产品分类") = wr("产品分类")
                nr("客户信息") = wr("客户信息")
                nr("日期") = Date.Today
                
                If nr("产品_构件名称").Contains("柜体") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("宽")
                    nr("厚") = wr("厚")
                    nr("数量") = 1
                    nr("计价单位") = "投影面积"
                ElseIf nr("产品_构件名称").Contains("柜门") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("宽")
                    nr("厚") = 22
                    nr("数量") = 1
                    nr("计价单位") = "平方米"
                ElseIf nr("产品_构件名称").Contains("见光") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("厚") + 100
                    nr("厚") = 18
                    nr("数量") = 1
                    nr("计价单位") = "平方米"
                ElseIf nr("产品_构件名称").Contains("台面") Then
                    nr("长") = wr("长")
                    nr("数量") = 1
                    nr("计价单位") = "延米"
                ElseIf nr("产品_构件名称").Contains("灯光") Then
                    nr("长") = wr("长")
                    nr("数量") = 3
                    nr("计价单位") = "延米"
                ElseIf nr("产品_构件名称").Contains("变压") Then
                    nr("数量") = 1
                    nr("计价单位") = "套"
                ElseIf nr("产品_构件名称").Contains("衣杆") Then
                    nr("数量") = wr("长") * 2.5
                    nr("计价单位") = "延米"
                ElseIf nr("产品_构件名称").Contains("门铰") Then
                    nr("数量") = (wr("长") * wr("宽")*0.0001) / 15
                    Round2(nr("数量"),1)
                    nr("计价单位") = "个"
                ElseIf nr("产品_构件名称").Contains("抽") Then
                    nr("数量") = (wr("长") * wr("宽")*0.000001) / 3.5
                    nr("计价单位") = "件"
                ElseIf nr("产品_构件名称").Contains("墙板") Then
                    nr("长") = wr("长")
                    nr("宽") = wr("宽")
                    nr("厚") = wr("厚")
                    nr("数量") = 1
                    nr("计价单位") = "平方米"
                ElseIf nr("产品_构件名称").Contains("线") Then
                    nr("数量") = wr("长") + 200
                    nr("计价单位") = "延米"
                Else
                End If
            Next
       

[此贴子已经被作者于2022/4/22 23:41:52编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2022/4/24 20:50:00 [显示全部帖子]

查出来了 收了外部其他判断代码的影响 去除后正常了

 回到顶部