以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码执行奇慢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=150514)

--  作者:洮沙
--  发布时间:2020/6/1 8:48:00
--  [求助]代码执行奇慢

老师,你好!有如下代码,连接局域网数据库开发环境,开发过程没有感觉慢,今天将数据库放到远程,执行起来特别慢,200行数据,需要10秒钟左右。

 

With Tables("入库明细表")
    .StopRedraw
    For Each dr1 As DataRow In DataTables("产品目录").sqlSelect("[停产] = 0 or [停产] is null")
        .AddNew()
        .Current("日期") = da
        .Current("批号") = sfz
        .Current("产品代码") = dr1("产品代码")
        Dim ph As String =  Right( sfz ,14)
        Dim bh As String = "RK" & ph & "-" \'生成编号前缀
        Dim max As String
        max = DataTables("入库明细表").SQLCompute("Max(入库单号)","批号 = \'" & sfz & "\' ")
        Dim idx As Integer
        If max > "" Then \'如果存在最大单据合同编号
            idx = CInt(max.Substring(bh.length,4))+ 1 \'获得最大编号的后四位顺序号,并加1
        Else
            idx = 1 \'否则顺序号等于1
        End If
        .Current("入库单号") = bh & Format(idx,"0000")
    Next
    .ResumeRedraw
End With

麻烦老师帮忙看看,哪里有问题?谢谢!


--  作者:有点蓝
--  发布时间:2020/6/1 9:08:00
--  

        Dim max As String
        max = DataTables("入库明细表").SQLCompute("Max(入库单号)","批号 = \'" & sfz & "\' ")
        Dim idx As Integer
        If max > "" Then \'如果存在最大单据合同编号
            idx = CInt(max.Substring(bh.length,4))+ 1 \'获得最大编号的后四位顺序号,并加1
        Else
            idx = 1 \'否则顺序号等于1
        End If
        Dim ph As String =  Right( sfz ,14)
        Dim bh As String = "RK" & ph & "-" \'生成编号前缀
With Tables("入库明细表")

    .StopRedraw
    For Each dr1 As DataRow In DataTables("产品目录").sqlSelect("[停产] = 0 or [停产] is null")
        .AddNew()
        .Current("日期") = da
        .Current("批号") = sfz
        .Current("产品代码") = dr1("产品代码")
        .Current("入库单号") = bh & Format(idx,"0000")
idx += 1
    Next
    .ResumeRedraw
End With

--  作者:洮沙
--  发布时间:2020/6/1 10:00:00
--  回复:(有点蓝)        Dim ma...
好的了,谢谢!