Foxtable(狐表)用户栏目专家坐堂 → [求助] 代码运算太慢


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

主题:[求助] 代码运算太慢

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


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
[求助] 代码运算太慢  发帖心情 Post By:2020/11/13 21:54:00 [只看该作者]

老师, 以下代码运算太慢了,有更好的吗 ?


    Dim cmd1 As new SQLCommand
    cmd1.C

    Dim cmd4 As new SQLCommand
    cmd4.C

    Dim cmd5 As new SQLCommand
    cmd5.C

For Each rrr As Row In Tables("物料需求")


    cmd1.CommandText = "Se lect FItemID From {t_ICItemCore} Where FNumber = '"& rrr("PartNo") & "'"
    Dim Values = cmd1.ExecuteValues
    If Values.Count > 0 Then
        rrr("FItemID") = Values("FItemID")
        
    End If



    cmd4.CommandText = "Sel ect FPrice,FCyID,FTax From {t_SupplyEntry} Where FItemID = '" & rrr("FItemID") & "'and FUsed = 1 and FPrioritized = 1"
    Dim Values4 = cmd4.ExecuteValues
    If Values4.Count > 0 Then
        rrr("UnitPrice_WithoutVAT") = Values4("FPrice")
        rrr("FCyID") = Values4("FCyID")
       rrr("FVAT") = Values4("FTax")
     ' rrr("FSupID") = Values4("FSupID")

    End If

    cmd5.CommandText = "Sel ect FName From {t_Currency} Where FCurrencyID = '" & rrr("FCyID") & "'"
    Dim Values5 = cmd5.ExecuteValues
    If Values5.Count > 0 Then
       rrr("Currency") = Values5("FName")
    End If


If rrr("Currency") ="人民币"
rrr("ExchangeRate") = 1
ElseIf rrr("Currency") ="欧元"
rrr("ExchangeRate") = 7.7
ElseIf rrr("Currency") ="瑞士法郎"
rrr("ExchangeRate") = 7
ElseIf rrr("Currency") ="美元"
rrr("ExchangeRate") = 6.7
End If


Next

msgbox("Done !!!")

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/14 8:50:00 [只看该作者]

直接sql更新,如

dim sql as string = "update a set a.FItemID = (select top 1 FItemID from {t_ICItemCore} Where FNumber = a.PartNo), a.Currency = (Select top 1  FName From {t_Currency} Where FCurrencyID = a.FCyID) from 物料需求 a "
if Tables("物料需求").filter > "" then
sql = sql & " where " & Tables("物料需求").filter
end if

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


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2020/11/14 13:37:00 [只看该作者]

老师,这个不对,我要把Sql 表中的填入 foxtable 的表 物料需求 中。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

物料需求如果是外部表,直接上面的sql即可。

如果是内部表或者临时表,可以考虑把需要查询的数据一次性加载出来使用,比如

cmd1.CommandText = "Se lect FItemID,FNumber From {t_ICItemCore} Where FNumber in ('"& dataTables("物料需求")GetComboListString("PartNo").replace("|","','") & "')"
    Dim dt as datatable= cmd1.ExecuteReader
For Each rrr As Row In Tables("物料需求")
dim dr as datarow = dt.find("FNumber = '"& rrr("PartNo") & "'")
rrr("FItemID") = dr ("FItemID")
……

 回到顶部