以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  点击“按钮”项目强退是为什么?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69911)

--  作者:lisheng7177
--  发布时间:2015/6/12 16:33:00
--  点击“按钮”项目强退是为什么?

在窗口1中有1按钮,作用是将符合条件的人员导到另1个表中,但一点击就强退,不知什么原因,求帮助!!!!!!

 

代码如下:

 

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


--  作者:sloyy
--  发布时间:2015/6/12 16:37:00
--  
只保留一行数据,试试看问题出在哪里
--  作者:lifeofyiyi
--  发布时间:2015/6/12 16:46:00
--  
你这个是还有个覆盖dr2数据的功能吗?
--  作者:大红袍
--  发布时间:2015/6/12 17:31:00
--  

 应该是datacolchanged事件写得有问题,死循环了

 

方法1:关闭事件 http://www.foxtable.com/help/topics/2218.htm

 

方法2:http://www.foxtable.com/help/topics/1522.htm

 


--  作者:lisheng7177
--  发布时间:2015/6/13 12:58:00
--  

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

谢谢大家,我找到原因了,其它的都没问题,就是“鉴定批次”这列单元格内容中有“、”号,去除后就没问题了。


--  作者:lisheng7177
--  发布时间:2015/6/13 14:41:00
--  

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看又有新问题了:是不是表里总行数有什么限制?行数少的时候不出现强退!!!!!!

 


--  作者:Bin
--  发布时间:2015/6/13 14:57:00
--  
无非是你行数少,或者是行的内容没有达到死循环的条件.
--  作者:lisheng7177
--  发布时间:2015/6/13 15:32:00
--  

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

        Else

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

 

 

2 个表,“报名登记表”和“证书编号表”,

    其中“报名登记表”中有“身份证号码”、“原资格证书工种”、“原资格取得时间”、“鉴定等级”、“申报鉴定工种”、“是否合格”等列;

          “证收编号表”中有“身份证号码”、“鉴定等级”、“申报鉴定工种”、“证书编号”等列;

 

想达到的目的:

      当1个员工想报考高级技师,在“报名登记表”中,他的“原技术资格等级”必需是技师,且技师取得时间>=3年,且“原资格证书工种”和现在报名“申报鉴定工种”是一致的,他所“申报鉴定工种”是否和“证书编号表”中他取得技师资格时的“申报鉴定工种”是一致的;

     在“证书编号表”中比对“身份证号码”、“申报鉴定工种”、“证书编号”确定该员工在“报名登记表”中所填的是真实的;

 

通过上述条件判定他报名“是否合格”

 

 

这是表Datacolchanged事件代码


--  作者:lisheng7177
--  发布时间:2015/6/13 15:36: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 - 3 Then
            e.DataRow("是否合格") = True
        Else
            e.DataRow("是否合格") = False
        End If
    End If
End If

搞错了,是上述这段代码


--  作者:狐狸爸爸
--  发布时间:2015/6/13 17:22:00
--  

判断列名:

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