Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]各师老师,这个代码如果数据多的话运行很慢,有没有可优化加速?谢谢!

菜鸟  发表于:2020-08-10 15:23:29  
复制

If Me.Uom = "CNY/G" Then

 

        strsql = "select * from View_style_sbgf_gm"

        Set rsmx = cnn.Execute(strsql)

 

        Do Until rsmx.EOF

            sfrgflz = 0

            strbz = 0

            sfrgflz = Round(Nz(rsmx!sbgf, 0) + Nz(Me.Pz, 0), 1)

    

            strbz = "G" & Format(Int((9 - 1 + 1) * Rnd() + 1), "0") & Format(Int((9 - 1 + 1) * Rnd() + 1), "0") & Format(Int([sfrgflz]), "00") & "A" & Round(([sfrgflz] - Int([sfrgflz])) * 10, 0)

 

            DoCmd.RunSQL " UPDATE tbl_Style_master SET tbl_Style_master.Jgbh= '" & strbz & "',tbl_Style_master.gf= " & sfrgflz & "" _

                       & " WHERE StyleNo='" & rsmx!StyleNo & "';"

 

            rsmx.MoveNext

        Loop

        rsmx.Close

 

    Else

 

        strsql = "select * from View_Style_sbgf_pc"

 

 

        Set rsmx = cnn.Execute(strsql)

        Do Until rsmx.EOF

 

            sfrgflz = 0

            strbz = 0

            sfrgflz = Round(Nz(rsmx!Netweight, 0) * Nz(Me.Pz, 0) + 12 + Nz(rsmx!sbgf, 0), 0)

    

            strbz = "P" & Format(Int((9 - 1 + 1) * Rnd() + 1), "0") & Format(Int((9 - 1 + 1) * Rnd() + 1), "0") & "A" & Format(Int([sfrgflz]), "000")

 

            DoCmd.RunSQL " UPDATE tbl_Style_master SET tbl_Style_master.Jgbh= '" & strbz & "',tbl_Style_master.gf= " & sfrgflz & "" _

                       & " WHERE StyleNo='" & rsmx!StyleNo & "';"

            rsmx.MoveNext

        Loop

        rsmx.Close

 

    End If

 

Top
西出阳关无故人 发表于:2020-08-26 08:51:21

可以创建一个临时表,用于记录计算好的strbz ,sfrgflz ,StyleNo的值,然后用连接更新查询:


DoCmd.RunSQL  "UPDATE 临时表 INNER JOIN tbl_Style_master ON 临时表.StyleNo = tbl_Style_master .StyleNo SET tbl_Style_master ..Jgbh = [临时表].[strbz ], tbl_Style_master .gf = [临时表].[sfrgflz ];"



未经测试,但可能会有改观.如果数据量确实巨大,应该分组循环,否则可能死机.



菜鸟 发表于:2020-08-26 17:24:55
有几十万条数据,如何分组循环?

西出阳关无故人 发表于:2020-08-27 11:17:57
如果没有适合的可以分组的字段,那就用分页的方式.

总记录:3篇  页次:1/1 9 1 :