以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]后台读取数据计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118144) |
-- 作者:huangfanzi -- 发布时间:2018/4/25 21:15:00 -- [求助]后台读取数据计算 SQL数据库,有一张”末端投料计算任务表“,专门用于记录需要服务端计算的记录,当用户在客户端的记录上在审核列打勾后,会自动将一些数据写到“末端投料计算任务表“ 代码如下: Dim dr2 As DataRow = _dt末端投料计算任务表.AddNew dr2("母捆包号") = e.DataRow("母捆包号") dr2("来源表名") = e.DataTable.Name dr2("来源行号") = e.DataRow("_Identify") dr2("来源类型") = "审核" dr2("记录标记2") = e.DataRow("记录标记2") dr2.Save 在服务器端的项目中,有个计划任务,每隔5秒读取数据库中的“末端投料计算任务表“,然后开始计算一些数据,计算完成后将已经计算过的数据删除 MyTimers("末端投料计算").Enabled = False ‘开始一轮计算时就暂停此计划,防止同时执行多个计划 Dim drs任务 As List(Of DataRow) = _dt末端投料计算任务表.SQLSelect("[母捆包号] <> \'\' ") \'读取任务表中记录并且写入drs任务集合 Dim tp As TimeSpan \'定义作业分钟分摊 Dim Mkbh As New List(Of String) \'定义母捆包号的集合Mkbh For Each dr As DataRow In drs任务 If Mkbh.Contains(dr("母捆包号"))= False Then \'将不同的母捆包号写入Mkbh集合 Mkbh.Add(dr("母捆包号")) End If Next 此处为计算及保存计算结果的代码。。。 For Each nm As String In Mkbh _dt末端投料计算任务表.SQLDeleteFor("母捆包号 = \'" & nm & "\'") Next _dt末端投料计算任务表.Save MyTimers("末端投料计算").Enabled = True ’重新执行计划 在项目开发调试过程中,由于数据量小,一切正常,今天开始正式使用了,一下子在客户端审核了近2000条数据,发现服务端给出的计算结果就有错误了,请问老师,在服务端执行SQLSelect语句时,会不会因为任务表还在不 断的添加记录导致读取数据出现异常情况?如果是,应该如何优化下代码防止 谢谢老师!
[此贴子已经被作者于2018/4/25 21:15:52编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/4/25 21:25:00 -- 1、代码没问题,如果计算错误,就是你计算代码有问题,计算逻辑有问题。
2、如果是执行比较慢,就是sqDeleteFor执行次数较多造成的。不要重复多次执行sqlxxxxxx这样的代码。你删除的时候,完全可以只删除一次,如
_dt末端投料计算任务表.SQLDeleteFor("母捆包号 in \'" & String.Join("\',\'", mkbh.ToArray) & "\'") |