以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]局域网中使用项目后的代码执行结果问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65125)

--  作者:huangfanzi
--  发布时间:2015/3/9 23:30:00
--  [求助]局域网中使用项目后的代码执行结果问题
以下代码是由甜版之前帮我写的,我在项目开发时执行非常完美,代码如下:
\'工序合并表中的datacolchange事件库存标记生成模块
If e.DataCol.Name= "写入标记"  AndAlso e.DataRow("写入标记")=True Then
    Dim drs As List(Of DataRow) = DataTables("工序合并表").Select("母卷号 = \'" & e.DataRow("母卷号") & "\'", "卷号,起始时间") \'指定母卷号计算
    If drs.Count=1 Then
        drs(0)("库存标记") = True
    Else
        For i As Integer = 1 To drs.Count - 1
            If drs(i)("卷号").Contains(drs(i-1)("卷号")) Then
                drs(i-1)("库存标记") = False
            Else
                drs(i-1)("库存标记") = True
            End If
        Next
        drs(drs.Count-1)("库存标记") = True
    End If
End If

现在项目实施了,在局域网使用中发生了问题,计算造成的偏差,我分析了下原因如下:
二人各操作一张表,假定一张为A,另一张为B,此二张表上分别记录了一种工序流程数据并向工序合并表存入,在存入时调用了上面的代码,执行的结果对于本机来说并没有错,但此结果并没有考虑到别人的操作对工序合并表的影响,也就是说对于表A的操作者来说,所计算的结果是对的,但当表B操作者把数据存入工序合并表后,计算结果就发生了变化,然后二人全执行了SAVE工序合并表的操作后,工序合并表的库存标记实际上错了,有没有办法让上面这段代码在后台执行,也就是说当数据库文件中的工序合并表发生变化时对库存标记进行计算,计算结束后把相关的记录再调入到前台供操作员使用。
[此贴子已经被作者于2015/3/9 23:34:02编辑过]

--  作者:黄训良
--  发布时间:2015/3/9 23:50:00
--  
参考独占式编辑的相关帮助。
--  作者:huangfanzi
--  发布时间:2015/3/10 7:49:00
--  
这个不能独占,因为就是要多个人各自输入自己的数据然后合并到一张表里,再通过这张被多人写入数据的表中的代码算出当前库存标记的位置在哪里。
--  作者:Bin
--  发布时间:2015/3/10 8:34:00
--  
这个就是用独占编辑,各自输入不影响,然后再处理输入的数据就不会有差错
--  作者:有点甜
--  发布时间:2015/3/10 9:08:00
--  

1、修改A、B表的时候,马上保存数据到 工序合并表,并保存此表;

 

2、把

 

Dim drs As List(Of DataRow) = DataTables("工序合并表").Select("母卷号 = \'" & e.DataRow("母卷号") & "\'", "卷号,起始时间") \'指定母卷号计算

 

改成

 

Dim drs As List(Of DataRow) = DataTables("工序合并表").sqlSelect("母卷号 = \'" & e.DataRow("母卷号") & "\'", "", "卷号,起始时间") \'指定母卷号计算


--  作者:huangfanzi
--  发布时间:2015/3/10 13:38:00
--  
甜版的代码我明白了,在计算时直接从后台调用数据,这样可保证计算结果正确,谢谢各位老师的指导。