以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  代码执行过程报错,请老师给看看  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=114781)

--  作者:huizhong
--  发布时间:2018/2/22 10:12:00
--  代码执行过程报错,请老师给看看
老师,我在表事件的DataColChanged中输入了一段代码,用于审批之用,但是,代码执行过程报错,显示:调用目标有问题,请老师看看以下代码,如果第2-4行代码不写就没问题,但是加上就不行
If e.DataRow("三审") = "同意" Then
    e.DataRow("三审时间") = Date.Today
    e.DataRow("三审人") = User.Name
    e.DataRow("三审结论") = "同意"
    Dim nma() As String = {"项目编号","项目全称","立项人姓名","所属公司","立项日期","预计启动时间","预计完工时间","预计签订合同日期","执行人姓名","立项合同标的额","预计支付虚开发票额","预计支付客户返佣额","预计虚开及返佣税点","预计其他收入","立项收入合计","预计项目成本","其中无票成本","无票成本税点","预计食宿行费","立项成本合计","立项单毛利","立项单毛利率","审批流"} \'A表数据来源列
    Dim nmb() As String = {"项目编号","项目全称","立项人姓名","所属公司","立项日期","预计启动时间","预计完工时间","预计签订合同日期","执行人姓名","立项合同标的额","预计支付虚开发票额","预计支付客户返佣额","预计虚开及返佣税点","预计其他收入","立项收入合计","项目立项成本","其中无票成本","无票成本税点","预计食宿行费","立项成本合计","立项单毛利","立项单毛利率","立项审批流"} \'B表数据接收列
    Dim dr As DataRow = DataTables("项目结项基础表1").AddNew
    For i As Integer = 1 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
    Tables("项目立项基础表2").Current.Delete
ElseIf e.DataRow("三审") = "驳回" Then
    e.DataRow("三审时间") = Date.Today
    e.DataRow("三审人") = User.Name
    e.DataRow("三审结论") = "驳回"
    e.DataRow("二审") = ""
    e.DataRow("三审") = ""
ElseIf e.DataRow("二审") = "同意" Then
    e.DataRow("二审时间") = Date.Today
    e.DataRow("二审人") = User.Name
    e.DataRow("二审结论") = "同意"
ElseIf e.DataRow("二审") = "驳回" Then
    e.DataRow("二审时间") = Date.Today
    e.DataRow("二审人") = User.Name
    e.DataRow("二审结论") = "同意"
    e.DataRow("一审") = ""
    e.DataRow("二审") = ""
ElseIf e.DataRow("一审") = "同意" Then
    e.DataRow("一审时间") = Date.Today
    e.DataRow("一审人") = User.Name
    e.DataRow("一审结论") = "同意"
ElseIf e.DataRow("一审") = "驳回" Then
    e.DataRow("一审时间") = Date.Today
    e.DataRow("一审人") = User.Name
    e.DataRow("一审结论") = "驳回"
    Dim nma() As String = {"项目编号","项目名称_客户所属区域","项目名称_汽车品牌","项目名称_项目核心内容","立项人姓名","立项日期","预计启动时间","预计完工时间","预计签订合同日期","执行人姓名"} \'A表数据来源列
    Dim nmb() As String = {"项目编号","项目名称_客户所属区域","项目名称_汽车品牌","项目名称_项目核心内容","立项人姓名","立项日期","预计启动时间","预计完工时间","预计签订合同日期","执行人姓名"} \'B表数据接收列
    Dim dr As DataRow = DataTables("项目立项基础表1").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
    Tables("项目立项基础表2").Current.Delete
Else
End If

--  作者:有点甜
--  发布时间:2018/2/22 10:17:00
--  

1、先把这句删除 Tables("项目立项基础表2").Current.Delete

 

2、做个具体例子发上来测试,说明测试步骤(哪行哪个列输入什么值,触发)


--  作者:huizhong
--  发布时间:2018/2/22 10:48:00
--  
老师,按照您的指示,我将Tables("项目立项基础表2").Current.Delete删除,测试时不再报错,但是,复制行复制的是两行相同内容

 


--  作者:有点甜
--  发布时间:2018/2/22 10:52:00
--  

你这样做的目的是什么?为什么要把表的这一行删除?

 

一般而言,数据库里面的数据,是不应该删除,添加以后,都是要保留下来的,方便以后查看。


--  作者:huizhong
--  发布时间:2018/2/22 10:56:00
--  
老师,我做的是一个项目管理软件,要实现立项前和立项后的区分,项目立项时经过审批,通过后将该列相关内容放入结项表,立项表的内容就要删除了,但是,需要保留的内容,我已复制到结项表中
--  作者:huizhong
--  发布时间:2018/2/22 10:57:00
--  
可是,即便没有删除这行指令,那么复制的动作出现了两次,重复复制相同行内容,这个怎么解决呢老师,您给点建议
--  作者:有点甜
--  发布时间:2018/2/22 10:58:00
--  

不需要删除,只需要标记成删除,或者隐藏起来即可。

 

如果确实需要删除,也应该写在项目关闭的时候,整体删除。


--  作者:huizhong
--  发布时间:2018/2/22 11:06:00
--  
可是,即便没有删除这行指令,那么复制的动作出现了两次,重复复制相同行内容,这个怎么解决呢老师,您给点建议
--  作者:有点甜
--  发布时间:2018/2/22 11:10:00
--  
以下是引用huizhong在2018/2/22 11:06:00的发言:
可是,即便没有删除这行指令,那么复制的动作出现了两次,重复复制相同行内容,这个怎么解决呢老师,您给点建议

 

加上列名判断

 

select case e.datacol.name

    case "一审", "二审", "三审"

        \'这里写你1楼的代码

End Select


--  作者:huizhong
--  发布时间:2018/2/22 11:15:00
--  
好的,老师,感谢您的指导