以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码多次运算,不知道什么问题(已解决)?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128540)

--  作者:lunengcheng
--  发布时间:2018/12/10 10:12:00
--  [求助]代码多次运算,不知道什么问题(已解决)?
各位老师前辈,我写了下面这段代码,主要是根据四个明细表的接收情况,在主表的接收状态生成“已完成”和“未完成”,下面这段代码在Datacolchanged中计算结果是正确的,但是我放的MessageBox.show测试代码会弹出两轮,是否说明代码重复计算了,而且个人总觉得代码这么写好像不规范,希望大家能指点一下,多谢了!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.txt


[此贴子已经被作者于2018/12/10 11:16:19编辑过]

--  作者:y2287958
--  发布时间:2018/12/10 10:53:00
--  
If e.DataCol.Name="接收状态" Then
    Dim ss,st As String
    ss = "工作|物品|账号|其它"
    For Each s As String In ss.split("|")
        Dim cmd As New SQLCommand
        cmd.C
        cmd.CommandText = "S elect Count(*) From {YW_人事交接" & s & "交接} Where 编号 = \'" & e.DataRow("编号") & "\' AND 接收日期 IS NULL "
        If cmd.ExecuteScalar() <> 0
            st = "未完成"
        End If
    Next
    If st = "未完成"
        e.DataRow("接收状态")= st
    Else
        e.DataRow("接收状态")= "已完成"
    End If
End If
[此贴子已经被作者于2018/12/10 10:53:57编辑过]

--  作者:lunengcheng
--  发布时间:2018/12/10 11:08:00
--  
多谢老大指点,不过现在两个小问题:

1.cmd.C 这行是不是多余的,保留这行会报错;
2.去掉上面这行后,会报下面这个错,一共报四次后打开窗口:

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.10.9.1
错误所在事件:
详细错误信息:
无效的 SQL语句;期待 \'DELETE\'、\'INSERT\'、\'PROCEDURE\'、\'SELECT\'、或 \'UPDATE\'。

--  作者:有点甜
--  发布时间:2018/12/10 11:08:00
--  

参考

 

If e.DataCol.Name="接收状态" Then
    Dim ss,st As String
    ss = "工作|物品|账号|其它"
    For Each s As String In ss.split("|")
        Dim cmd As New SQLCommand
        cmd.ConnectionName = "主数据源"
        cmd.CommandText = "Select Count(*) From {YW_人事交接" & s & "交接} Where 编号 = \'" & e.DataRow("编号") & "\' AND 接收日期 IS NULL "
        If cmd.ExecuteScalar() <> 0
            st = "未完成"
            Exit For
        End If
    Next
    If st = "未完成"
        e.DataRow("接收状态")= st
    Else
        e.DataRow("接收状态")= "已完成"
    End If
End If


--  作者:lunengcheng
--  发布时间:2018/12/10 11:16:00
--  
用甜老师的代码已经搞定,多谢两位老师指点!