以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于自动复制行相关问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128020)

--  作者:xlrboy
--  发布时间:2018/11/27 11:02:00
--  关于自动复制行相关问题
您好!   自动复制行代码已经配置成功,但是发现以下问题,如果不小心点错了逻辑列,就会把不需要的行也复制到表B里面了,如何加个提示呢;
          还有就是如果逻辑列的√去掉就自动删除表B里面的行呢,怎么实现。
          我在论坛搜索了相关帖子有以下代码,
          
If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
    Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & e.DataRow("编号") & "\'")
    If dr Is Nothing Then
        dr = DataTables("表B").AddNew
    End If

    For Each dc As DataCol In DataTables("表B").DataCols
        dr(dc.Name) = e.DataRow(dc.Name)
    Next
End If


第二句里面的编号是什么意思,代表什么。

--  作者:有点甜
--  发布时间:2018/11/27 12:22:00
--  
If e.DataCol.Name = "逻辑列名"
    If e.DataRow("逻辑列名") = True Then
        Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & e.DataRow("编号") & "\'")
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew
        End If
       
       
        For Each dc As DataCol In DataTables("表B").DataCols
            dr(dc.Name) = e.DataRow(dc.Name)
        Next
    Else
        DataTables("表B").deletefor("编号 = \'" & e.DataRow("编号") & "\'")
    End If
End If

--  作者:xlrboy
--  发布时间:2018/11/27 14:23:00
--  
版主您好!   按照您给的代码写入后发生错误如下
 
.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:表,在职员工表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Integer”的转换无效。
输入字符串的格式不正确。

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:表,应聘人员表,DataColChanged
详细错误信息:
调用的目标发生了异常。
列“编号”不属于表 应聘人员表。

图片点击可在新窗口打开查看此主题相关图片如下:010.jpg
图片点击可在新窗口打开查看




--  作者:有点甜
--  发布时间:2018/11/27 14:51:00
--  

If e.DataCol.Name = "逻辑列名"
    If e.DataRow("逻辑列名") = True Then
        Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & val(e.DataRow("编号")) & "\'")
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew
        End If
       
        For Each dc As DataCol In DataTables("表B").DataCols
            If e.DataRow.Isnull(dc.name) Then
                dr(dc.Name) = Nothing
            Else
                dr(dc.Name) = e.DataRow(dc.Name)
            End If
        Next
    Else
        DataTables("表B").deletefor("编号 = \'" & val(e.DataRow("编号")) & "\'")
    End If
End If


--  作者:xlrboy
--  发布时间:2018/11/27 15:15:00
--  
版主您好!    按照4楼的代码写入错误依旧, 取消√表B的新增行没有自动删除。  代码中的编号指的是什么呢?
.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:表,在职员工表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Integer”的转换无效。
输入字符串的格式不正确。

.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:表,应聘人员表,DataColChanged
详细错误信息:
调用的目标发生了异常。
列“编号”不属于表 应聘人员表。


  



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

If e.DataCol.Name = "逻辑列名"
    If e.DataRow("逻辑列名") = True Then
        Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & val(e.DataRow("编号")) & "\'")
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew
        End If
       
        For Each dc As DataCol In DataTables("表B").DataCols
            If e.DataTable.DataCols.contains(dc.name) Then
                If e.DataRow.Isnull(dc.name) Then
                    dr(dc.Name) = Nothing
                Else
                    dr(dc.Name) = e.DataRow(dc.Name)
                End If
            End If
        Next
    Else
        DataTables("表B").deletefor("编号 = \'" & val(e.DataRow("编号")) & "\'")
    End If
End If

 


--  作者:xlrboy
--  发布时间:2018/11/27 15:55:00
--  
版主您好!  还是和原来问题一样,我把项目放上来了,您看看。  能解释一下代码中编号的意思吗?没看明白。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:rx人事管理181127.rar


--  作者:有点甜
--  发布时间:2018/11/27 16:50:00
--  

If e.DataCol.Name = "身份证号" Then \'如果更改的是身份证号码列
    If e.DataRow.IsNull("身份证号") Then \'身份证号码是否为空
        e.DataRow("出生日期") = Nothing \'如果为空,则清除出生日期
    Else
        \'否则从身份证号码列中提取出生日期
        e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号"))
    End If
End If

If e.DataCol.Name = "入职确认"
    If e.DataRow("入职确认") = True Then
        Dim dr As DataRow = DataTables("在职员工表").Find("身份证号 = \'" & e.DataRow("身份证号") & "\'")
        If dr Is Nothing Then
            dr = DataTables("在职员工表").AddNew
        End If
       
        For Each dc As DataCol In DataTables("在职员工表").DataCols
            If e.DataTable.DataCols.contains(dc.name) Then
                If e.DataRow(dc.name) = Nothing Then
                    dr(dc.Name) = Nothing
                Else
                    dr(dc.Name) = e.DataRow(dc.Name)
                End If
            End If
        Next
    Else
        DataTables("在职员工表").deletefor("身份证号 = \'" & e.DataRow("身份证号") & "\'")
    End If
End If

[此贴子已经被作者于2018/11/27 16:50:11编辑过]

--  作者:xlrboy
--  发布时间:2018/11/27 20:46:00
--  
版主您好!   去掉逻辑列的勾后表B的新增行自动删除了,但是勾选逻辑列的时候还有一下报错。

.NET Framework 版本:2.0.50727.8766
Foxtable 版本:2018.9.9.1
错误所在事件:表,在职员工表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Integer”的转换无效。
输入字符串的格式不正确。

Dim dr As DataRow = DataTables("在职员工表").Find("身份证号 = \'" & e.DataRow("身份证号") & "\'")
这个代码是什么意思呢,为什么要把编号改为身份证号呢?


--  作者:xlrboy
--  发布时间:2018/11/27 20:50:00
--  
版主你好!  如果想在勾选逻辑列自动复制前面加个确认提示应该怎么做呢?比如勾选时弹出提示 是否把该人员复制到表B,点确认就复制,点否就放弃。