以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 字典的应用 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189281) |
-- 作者:creastzh -- 发布时间: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 -- 发布时间:2023/11/21 21:11:00 -- 我能想到的是,已dr2n为key建立多个字典, 然后分别进行读取写入,还有其它方法吗? 谢谢! |
-- 作者:有点蓝 -- 发布时间:2023/11/21 21:39:00 -- 看不懂。 请截图说明:有几个表的数据要计算?表结构和数据都是怎么样的?需要按什么逻辑做怎么样的计算?
|