Foxtable(狐表)用户栏目专家坐堂 → [求助]后台读取数据计算


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

主题:[求助]后台读取数据计算

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]后台读取数据计算  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/25 21:25:00 [只看该作者]

1、代码没问题,如果计算错误,就是你计算代码有问题,计算逻辑有问题。

 

2、如果是执行比较慢,就是sqDeleteFor执行次数较多造成的。不要重复多次执行sqlxxxxxx这样的代码。你删除的时候,完全可以只删除一次,如

 

_dt末端投料计算任务表.SQLDeleteFor("母捆包号 in '" & String.Join("','", mkbh.ToArray) & "'")


 回到顶部