Access交流中心

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

[5分]老师,如何改良更新速度,实在太慢了!

菜鸟  发表于:2019-05-27 09:14:52  
复制

点击下载此附件


Private Sub Command0_Click()


DoCmd.SetWarnings False


    DoCmd.RunSQL " INSERT INTO 被更新表 ( 工号, 姓名, 年月 )" _
               & " SELECT 更新表.工号, 更新表.姓名, 更新表.年月" _
               & " FROM 更新表;"
    Dim rsmx As New ADODB.Recordset
    Dim strExpr As String
    '先循环表明细取,只能读取数据

    Set rsmx = CurrentProject.Connection.Execute("select 日期 FROM 更新表 ORDER BY 更新表.日期")    '先循环表明细取,只能读取数据

    Do While Not rsmx.EOF

        DoCmd.RunSQL "UPDATE 被更新表 INNER JOIN 更新表 ON (被更新表.年月 = 更新表.年月) AND (被更新表.工号 = 更新表.工号) SET 被更新表." & rsmx("日期") & " = nz([更新表]![数值],0)" _
                   & " WHERE (((更新表.日期)='" & rsmx("日期") & "'));"

       rsmx.MoveNext
    Loop
    rsmx.Close
    Set rsmx = Nothing


End Sub


 

Top
茼蒿 发表于:2019-05-28 15:35:53

点击下载此附件

我加了一个单词,执行就很快了,我就没搞明白,为什么重复的日期,要重复循环更新,好像没这个必要吧




菜鸟 发表于:2019-05-29 12:37:25
太好了,谢谢!

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