Foxtable(狐表)用户栏目专家坐堂 → 字典的应用


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

主题:字典的应用

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


加好友 发短信
等级:小狐 帖子:312 积分:2299 威望:0 精华:0 注册:2023/1/11 7:15:00
字典的应用  发帖心情 Post By:2023/11/21 21:05:00 [只看该作者]

我有一个逻辑运算,需要引用多个表的数据, 按照常规做法,我可以使用行的各单元格赋值方式进行,然后逐行处理, 但这种方式运行效率很低,我一个表的全部数据行运算一遍需要340多秒, 所以想改用字典方式,然后进行字典数据一次性写入处理,但由于多个表的使用,以及中间需要根据不同结果(IF)写入不同值的判断, 似乎字典方式感觉无从下手, 想请问是否有更好的方式, 谢谢!
以是中间一段程序:
                Dim dr2n As DataRow = dt2.AddNew(1) 
                Dim dr3 As DataRow = dt3.Find("ResID ='" & Res & "'") 
                dr2n("Date") = Date.Today
                If dr3 IsNot Nothing Then
                    dr2n("ProblemLocation") = dr3("适用于标准化后的班组名称") '班组
                End If
                dr2n("IssueNo") = QN
                dr2n("DataSource") = "生产问题跟踪"
                dr2n("NeedtoTrace") = True
                dr2n("Registrant") = "系统" '登记人
                dr2n("Transtype") = "R" '来源
                'dr2n("NPI=1Mass=0") = dr1("") 'NPI
                dr2n("WO") = dr1("WO") '工单号
                dr2n("PartNumber") = dr1("PartNumber") '零件号
                dr2n("OP") = dr1("OP") '工序号
                dr2n("ResID") = dr1("ResID") '资源号
                dr2n("WOQTY") = dr1("ACTQty_IN") '工序数
                t = t + 1
                If CmpTimePre > #1-1-2020# Then
                    Dim zy As Single '转移工序的时间                    
                    zy = ( CDate(dr1("Act_StartTime")) - CmpTimePre).TotalHours
                    If zy < 24 Then '上工序到本工序间的停留<24小时 (工序滞留超过1天)
                        dr2n("IssueType") = "上工序延误" '问题种类
                        dr2n("ResponsibleTeam") = ResCell '责任部门
                    Else
                        dr2n("IssueType") = "工序停滞" '问题种类        
                    End If
                Else
                    dr2n("IssueType") = "工序停滞" '问题种类
                End If 
                
                dr2n("IssueDescription") = nr '问题描述
                dr2n("IssueAffect") = "交期晚" '后果
                dr2n("DelayHours") = yw '延误(Hrs)                    
                'dr2n("Person责任人") = dr1("") '责任人
                
                Dim dr4 As DataRow = DataTables("PartList").Find("PartNumber= '" & PN & "'")
                If dr4 IsNot Nothing Then 
                    dr2n("QE") = dr4("QE") 'QE
                    dr2n("ME") = dr4("ME") 'ME
                End If
            

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


加好友 发短信
等级:小狐 帖子:312 积分:2299 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/11/21 21:11:00 [只看该作者]

我能想到的是,已dr2n为key建立多个字典, 然后分别进行读取写入,还有其它方法吗? 谢谢!

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


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

看不懂。

请截图说明:有几个表的数据要计算?表结构和数据都是怎么样的?需要按什么逻辑做怎么样的计算?

 回到顶部