以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老师,我有如下代码,因为记录多较多,运行时间太长,可不可以多线程  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=180179)

--  作者:fntfgz
--  发布时间:2022/10/4 15:31:00
--  老师,我有如下代码,因为记录多较多,运行时间太长,可不可以多线程
老师,我有如下代码,因为记录多较多,运行时间太长,可不可以多线程,异步之类,我实在不懂,可不可以?我这样的代码不知是否适合多线程,老师参否帮改一下代码,我以后也可以慢慢研究
代码如下:
For Each r As Row In Tables("未来人才_方案行").Rows
    Dim drs As List(Of DataRow)
    drs = DataTables("未来人才_专业行").Select("配置名 = \'" & r("配置名") & "\' And 批次= \'" & r("批次") & "\' And 所在页码 = \'" & r("所在页码") & "\' And 院校id= \'" & r("院校id") & "\' And 专业名称= \'" & r("专业名称") & "\'") \'找出编号为03的产品
    \'Output.Show(drs.count)
    If drs.Count = 1 Then
        
        If r("批次") = "提前批A" Then
            drs(0)("学校代号") = r("学校代号")
            drs(0)("专业代号") = r("专业代号")
            drs(0)("备注") = "ok" 
            r("备注") = "ok"
            
        Else 
            drs(0)("学校代号") = r("院校代码")
            drs(0)("专业代号") = r("专业代码")
            drs(0)("学制") = r("学制")
            drs(0)("备注") = "ok" 
            r("备注") = "ok"
        End If
        
    End If 
    
Next
[此贴子已经被作者于2022/10/4 16:07:20编辑过]

--  作者:有点蓝
--  发布时间:2022/10/6 9:28:00
--  
1、可以先试试:
2、多线程参考:http://www.foxtable.com/mobilehelp/topics/3268.htm,注意:http://www.foxtable.com/mobilehelp/topics/277.htm凡是在主线程中创建的对象,例如Table、Datatable,窗口及窗口控件,菜单及菜单组件,都不应该在异步函数中调用。),需要改使用使用SQLcommand跳跃sql查询数据

3、如果数据多到一定程度,可以:
1)单独做个项目,放到服务器独自运行一些费时的操作
2)使用使用SQL更新,大概这样:http://www.foxtable.com/webhelp/topics/0690.htm
UPDATE {未来人才_专业行},{未来人才_方案行} SET {未来人才_专业行}.学校代号 = {未来人才_方案行}.学校代号, {未来人才_专业行}.专业代号 = {未来人才_方案行}.专业代号 ,..... WHERE {未来人才_专业行}.[配置名] = {未来人才_方案行}.[配置名] and {未来人才_专业行}.[批次] = {未来人才_方案行}.[批次] and ..........