以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按钮代码问题求助版主!!!!!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71949)

--  作者:lisheng7177
--  发布时间:2015/7/21 10:36:00
--  按钮代码问题求助版主!!!!!!

Dim Result As DialogResult
Result = MessageBox.Show("确定导出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)
Dim Cols1() As String = {"工作单位","县公司","姓名","性别","身份证号码","文化程度","现岗位名称","参加工作时间","现工种工作时间","原技术资格等级","原等级取得时间","原资格证书工种","原资格证书编号","鉴定等级","申报鉴定工种","鉴定批次","申报性质","用工性质","原人才当量值","备注","照片","是否合格","资格审核","鉴定时间"}
Dim Cols2() As String = {"工作单位","县公司","姓名","性别","身份证号码","文化程度","现岗位名称","参加工作时间","现工种工作时间","原技术资格等级","原等级取得时间","原资格证书工种","原资格证书编号","鉴定等级","申报鉴定工种","鉴定批次","申报性质","用工性质","原人才当量值","备注","照片","是否合格","资格审核","鉴定时间"}
For Each dr1 As DataRow In DataTables("报名登记表").Select("[资格审核] = True ")
    Dim dr2 As DataRow = DataTables("审核合格表").Find("身份证号码 = \'" & dr1("身份证号码") & "\' And 鉴定批次 = \'" & dr1("鉴定批次") & "\'")
    If dr2 Is Nothing Then
        dr2 = DataTables("审核合格表").AddNew
    End If
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next

 

上述代码有什么问题吗?为什么一点“按钮”就死机,没反应?


--  作者:大红袍
--  发布时间:2015/7/21 10:44:00
--  

 肯定是你Datacolchanged的代码写得有问题,暂时可以这样处理

 

Dim Result As DialogResult
Result = MessageBox.Show("确定导出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)
If result = DialogResult.Yes Then
    Dim Cols1() As String = {"工作单位","县公司","姓名","性别","身份证号码","文化程度","现岗位名称","参加工作时间","现工种工作时间","原技术资格等级","原等级取得时间","原资格证书工种","原资格证书编号","鉴定等级","申报鉴定工种","鉴定批次","申报性质","用工性质","原人才当量值","备注","照片","是否合格","资格审核","鉴定时间"}
    Dim Cols2() As String = {"工作单位","县公司","姓名","性别","身份证号码","文化程度","现岗位名称","参加工作时间","现工种工作时间","原技术资格等级","原等级取得时间","原资格证书工种","原资格证书编号","鉴定等级","申报鉴定工种","鉴定批次","申报性质","用工性质","原人才当量值","备注","照片","是否合格","资格审核","鉴定时间"}
    SystemReady = False
    For Each dr1 As DataRow In DataTables("报名登记表").Select("[资格审核] = True ")
        Dim dr2 As DataRow = DataTables("审核合格表").Find("身份证号码 = \'" & dr1("身份证号码") & "\' And 鉴定批次 = \'" & dr1("鉴定批次") & "\'")
        If dr2 Is Nothing Then
            dr2 = DataTables("审核合格表").AddNew
        End If
        For i As Integer = 0 To Cols1.Length -1
            dr2(Cols2(i)) = dr1(Cols1(i))
        Next
    Next
    SystemReady = True
End If


--  作者:lisheng7177
--  发布时间:2015/7/21 10:55:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看谢谢版主!应该是Datacolchanged的代码问题,原来是可以的,只是我加了些代码就出问题了
--  作者:大红袍
--  发布时间:2015/7/21 10:56:00
--  

 Datacolchanged一定要判断列名

 

http://www.foxtable.com/help/topics/1522.htm

 


--  作者:lisheng7177
--  发布时间:2015/7/21 11:22:00
--  

If e.DataRow("鉴定等级") = "技师" Then
    If e.DataRow("原技术资格等级") = "助理工程师(电力类)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4 Then
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "工程师(电力类)"
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "助理工程师(工业工程)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4 Then
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "工程师(工业工程)"
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "高级工程师(电力类)"
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "高级工程师(工业工程)"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "破格评审"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "重新评审"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考实操"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考潜能"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考两项"
        e.DataRow("是否合格") = True
    Else If e.DataRow("原技术资格等级") = "技师"
        Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = \'" & e.DataRow("身份证号码") & "\' And 证书编号 = \'" & e.DataRow("原资格证书编号") & "\'")
        e.DataRow("是否合格") = fdr IsNot Nothing
    Else If e.DataRow("原技术资格等级") = "高级技师"
        Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = \'" & e.DataRow("身份证号码") & "\' And 证书编号 = \'" & e.DataRow("原资格证书编号") & "\'")
        e.DataRow("是否合格") = fdr IsNot Nothing
    Else If e.DataRow("原技术资格等级") = "高级工" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 3
        Dim dr As DataRow
        dr = DataTables("相近工种表").Find("工种 like \'%" & e.DataRow("申报鉴定工种") & "%\'")
        If dr IsNot Nothing Then
            Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = \'" & e.DataRow("身份证号码") & "\' And 申报鉴定工种 in (\'" & dr("工种").Replace(",", "\',\'") & "\') And 证书编号 = \'" & e.DataRow("原资格证书编号") & "\'")
            e.DataRow("是否合格") = fdr IsNot Nothing
        Else
            e.DataRow("是否合格") = False
        End If
    End If
End If

这是Datacolchanged的原来的代码,正常!


--  作者:lisheng7177
--  发布时间:2015/7/21 11:24:00
--  

If e.DataRow("鉴定等级") = "高级技师" Then
    Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = \'" & e.DataRow("身份证号码") & "\' And 证书编号 = \'" & e.DataRow("原资格证书编号") & "\' And 鉴定等级 = \'" & e.DataRow("原技术资格等级") & "\' And 申报鉴定工种 = \'" & e.DataRow("原资格证书工种") & "\'")
    If fdr Is Nothing Then
        e.DataRow("是否合格") = False
    Else
        If fdr("鉴定等级") = "技师" AndAlso fdr("申报鉴定工种") = e.DataRow("申报鉴定工种") AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 2 Then
            e.DataRow("是否合格") = True
        Else
            e.DataRow("是否合格") = False
        End If
    End If
End If

If e.DataRow("鉴定等级") = "高级技师" Then
    If e.DataRow("是否合格") = True Then
        e.DataRow("资格审核") = True
    Else
        e.DataRow("资格审核") = False
    End If
End If

 

If e.DataRow("鉴定等级") = "中级工" Then
    If e.DataRow("申报性质") = "正常申报"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考实操"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考理论"
        e.DataRow("是否合格") = True
    Else
        e.DataRow("是否合格") = False
    End If
End If

If e.DataRow("鉴定等级") = "高级工" Then
    If e.DataRow("申报性质") = "正常申报"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考实操"
        e.DataRow("是否合格") = True
    Else If e.DataRow("申报性质") = "补考理论"
        e.DataRow("是否合格") = True
    Else
        e.DataRow("是否合格") = False
    End If
End If

If e.DataRow("鉴定等级") = "中级工" Then
    If e.DataRow("是否合格") = True Then
        e.DataRow("资格审核") = True
    Else
        e.DataRow("资格审核") = False
    End If
End If

If e.DataRow("鉴定等级") = "高级工" Then
    If e.DataRow("是否合格") = True Then
        e.DataRow("资格审核") = True
    Else
        e.DataRow("资格审核") = False
    End If
End If

 

这是Datacolchanged的后加的代码,就不正常了,请版主指教!


--  作者:大红袍
--  发布时间:2015/7/21 11:26:00
--  

 叫你判断列名啊亲

 

 全部放在判断里面

 

Select Case e.DataCol.Name

    Case "鉴定等级",  "是否合格", "申报性质"

 

End Select


--  作者:有点蓝
--  发布时间:2015/7/21 11:28:00
--  
  你是效率问题,请看帮助常见效率问题
--  作者:lisheng7177
--  发布时间:2015/7/21 11:30:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看谢谢版主!!!!!!本人在代码方面很小白,都是依葫芦画瓢
--  作者:lisheng7177
--  发布时间:2015/7/21 14:09:00
--  

If e.DataRow("鉴定等级") = "高级工" Then
    e.DataRow("是否合格") = True
End If

If e.DataRow("鉴定等级") = "中级工" Then
    e.DataRow("是否合格") = True
End If

Select Case e.DataCol.Name
    Case "鉴定等级",  "是否合格", "申报性质"
        If e.DataRow("鉴定等级") = "高级技师" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("是否合格") = True Then
                e.DataRow("资格审核") = True
            Else
                e.DataRow("资格审核") = False
            End If
        End If
        If e.DataRow("鉴定等级") = "高级工" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("是否合格") = True Then
                e.DataRow("资格审核") = True
                If e.DataRow("申报性质") = "补考理论" AndAlso e.DataRow("是否合格") = True Then
                    e.DataRow("资格审核") = True
                    If e.DataRow("申报性质") = "补考实操" AndAlso e.DataRow("是否合格") = True Then
                        e.DataRow("资格审核") = True
                    Else
                        e.DataRow("资格审核") = False
                    End If
                End If
            End If
        End If
        If e.DataRow("鉴定等级") = "中级工" Then
            If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("是否合格") = True Then
                e.DataRow("资格审核") = True
                If e.DataRow("申报性质") = "补考理论" AndAlso e.DataRow("是否合格") = True Then
                    e.DataRow("资格审核") = True
                    If e.DataRow("申报性质") = "补考实操" AndAlso e.DataRow("是否合格") = True Then
                        e.DataRow("资格审核") = True
                    Else
                        e.DataRow("资格审核") = False
                    End If
                End If
            End If
        End If
End Select

 

版主,上述是我修改的后加入的代码,原有代码不变,现在正常了,但就是时间很长,是不是代码上还有什么问题?请指教!!!!!!谢谢先!!!!!!