以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]狐表自动退出  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189945)

--  作者:iyplx2425
--  发布时间:2024/1/6 12:45:00
--  [求助]狐表自动退出
在狐表中对单元格进行剪切、删除操作时,狐表自动退出,是什么问题?


--  作者:有点蓝
--  发布时间:2024/1/6 14:03:00
--  
一般是表事件计算死循环了
--  作者:iyplx2425
--  发布时间:2024/1/6 15:29: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 = "身份证号" Then \'如果更改的是身份证号码列
    If e.DataRow.IsNull("身份证号") Then \'身份证号码是否为空
        e.DataRow("性别") = Nothing \'如果为空,则清除出生日期
    Else
        \'否则从身份证号码列中提取出生日期
        e.DataRow("性别") = Readsex(e.DataRow("身份证号"))
    End If
End If
If e.DataCol.Name = "出生日期" Then
    If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期
        e.DataRow("年龄") = Nothing \'则清空年龄
    Else
        \'否则计算年龄
        e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year
    End If
End If
DataTables("学籍表").DataCols("出生日期").RaiseDataColChanged()
If e.DataCol.Name = "入学日期" Then
    If e.DataRow.IsNull("入学日期") Then \'如果没有输入出生日期
        e.DataRow("学龄") = Nothing \'则清空年龄
    Else
        \'否则计算年龄
        e.DataRow("学龄") = Date.Today.Year - e.DataRow("入学日期").Year
    End If
End If
DataTables("学籍表").DataCols("入学日期").RaiseDataColChanged()
以上是[学籍表]中的DataColChanged事件代码。请审查一下,错误在哪里。
谢谢。

--  作者:有点蓝
--  发布时间:2024/1/6 15:31:00
--  
下面代码去掉,纯粹多此一举

DataTables("学籍表").DataCols("出生日期").RaiseDataColChanged()
DataTables("学籍表").DataCols("入学日期").RaiseDataColChanged()

--  作者:iyplx2425
--  发布时间:2024/1/6 16:34:00
--  
删去两两行问题解决了。但为什么
If e.DataCol.Name = "出生日期" Then
    If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期
        e.DataRow("年龄") = Nothing \'则清空年龄
    Else
        \'否则计算年龄
        e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year
    End If
End If
能计算出年龄,而
If e.DataCol.Name = "入学日期" Then
    If e.DataRow.IsNull("入学日期") Then \'如果没有输入出生日期
        e.DataRow("学龄") = Nothing \'则清空年龄
    Else
        \'否则计算年龄
        e.DataRow("学龄") = Date.Today.Year - e.DataRow("入学日期").Year
    End If
End If
计算不出学龄?同样的代码啊。
谢谢。

--  作者:有点蓝
--  发布时间:2024/1/6 17:07:00
--  
"入学日期"列有输入内容吗?

如果是旧数据,点击菜单的重置列,重置一次

--  作者:iyplx2425
--  发布时间:2024/1/7 9:43:00
--  
可以了。谢谢。