以文本方式查看主题

-  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=126935)

--  作者:lisheng1971
--  发布时间:2018/11/1 11:43:00
--  问题求助

        Else If e.DataRow("鉴定等级") = "高级工" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year <= Date.Today.Year - 12 Then
                e.DataRow("是否合格") = True
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year > Date.Today.Year - 12 Then
                e.DataRow("是否合格") = False
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso e.DataRow("参加工作时间") = Nothing Then
                e.DataRow("是否合格") = False
            End If
        End If
End Select

表中有“鉴定等级”、“申报性质”,“参加工作时间”,“原技术资格等级”,“是否合格”等列,这是其中一段代码,当“鉴定等级”为中级工时,想实现如下功能判断:

1、当“申报性质”是“正常申报”时,如“原技术资格等级”为空,且“参加工作时间”满12年(含),则“是否合格”为True;

2、当“申报性质”是“正常申报”时,如“原技术资格等级”为空,且“参加工作时间”不满12年,则“是否合格”为False;

3、当“申报性质”是“正常申报”时,如“原技术资格等级”、“参加工作时间”都为空,则“是否合格”为True;

现在的问题是:当“参加工作时间”为空时,“是否合格”没有变化!!!也不报错!!!

这是代码上出了什么问题吗?

烦请版主指点!!!谢谢!!!


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

        Else If e.DataRow("鉴定等级") = "高级工" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year <= Date.Today.Year - 12 Then
                e.DataRow("是否合格") = True
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year > Date.Today.Year - 12 Then
                e.DataRow("是否合格") = False
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso e.DataRow("参加工作时间") = Nothing Then
                e.DataRow("是否合格") = true

            else

                e.DataRow("是否合格") = false
            End If
        End If

 

逻辑错误的时候,加入msgbox弹出关键值,看是否正常。


--  作者:lisheng1971
--  发布时间:2018/11/1 15:23:00
--  
谢谢版主!情况还是一样!
 Else If e.DataRow("鉴定等级") = "高级工" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year <= Date.Today.Year - 12 Then
                e.DataRow("是否合格") = True
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year > Date.Today.Year - 12 Then
                e.DataRow("是否合格") = False
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso e.DataRow("参加工作时间") = Nothing Then
                e.DataRow("是否合格") = true----此处实际是想实现为 False 前面我打错了!


--  作者:lisheng1971
--  发布时间:2018/11/1 15:31:00
--  

版主,这个问题是不是和“参加工作时间”是日期时间型有关?


--  作者:有点甜
--  发布时间:2018/11/1 15:36:00
--  

改成

 

        Else If e.DataRow("鉴定等级") = "高级工" Then
            If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso e.DataRow("参加工作时间") = Nothing Then
                e.DataRow("是否合格") = False           

            else If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year <= Date.Today.Year - 12 Then
                e.DataRow("是否合格") = True
            Else If  e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("原技术资格等级") = Nothing AndAlso Cdate(e.DataRow("参加工作时间")).Year > Date.Today.Year - 12 Then
                e.DataRow("是否合格") = False
            End If
        End If


--  作者:lisheng1971
--  发布时间:2018/11/1 15:47:00
--  
图片点击可在新窗口打开查看可以了,这个居然还有先后秩序!!!谢谢!!!