以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]公式列根据身份证号码列读出性别?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100883)

--  作者:老鼠
--  发布时间:2017/5/20 9:45:00
--  [求助]公式列根据身份证号码列读出性别?
刚开始学习使用foxtable就遇到问题:如题所示iif(len(A3) >= 17, iif(convert(substring(A3, 17, 1),\'System.Int64\') % 2 = 1, \'男\', \'女\'), null)这是我在网上搜到的,当然还有这个帮助文件里的:Dim Identify As String = "410110197109172433"
Dim
Sex As String = ReadSex(Identify)
Output.Show(Sex)
但结果都不能满足我的要求.第一个公式无法判定身份号码是否正确,过去的老身份证号码也无法读取结果.帮助里的提示:"Identify"提示运算符后缺少操作数.请大家帮忙解决下.
--  作者:有点蓝
--  发布时间:2017/5/20 9:57:00
--  
前面一段是表达式,后面一段是代码,使用的地方不一样,不要混淆了

到命令窗口执行下面代码


Dim Identify As String = "410110197109172433"
If ValidPIN(Identify) Then
    Dim Sex As String = ReadSex(Identify)
    msgbox(Sex)
Else
    msgbox("错误的身份证号")
End If


--  作者:老鼠
--  发布时间:2017/5/20 16:06:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
也不知道对不对,但操作时没有作用.请版主给学习方向与指导.
[此贴子已经被作者于2017/5/20 16:07:06编辑过]

--  作者:有点蓝
--  发布时间:2017/5/20 16:16:00
--  
基础数据表的DataColChanged事件

If e.DataCol.Name = "公民身份号码" Then \'如果更改的是身份证号码列
    If e.DataRow.IsNull("
公民身份号码"Then \'身份证号码是否为空
        e.
DataRow("性别") = Nothing
    
Else
        e.
DataRow("
性别") = ReadSex(e.DataRow("公民身份号码"))
    End
 If
End
 
If



--  作者:老鼠
--  发布时间:2017/5/20 17:08:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
不知道是我太笨还是没有进入状态.为什么会有这样的提示呢?

 这个公民身份号码是A3列,性别是A4列其中A4是公式列.

[此贴子已经被作者于2017/5/20 17:09:22编辑过]

--  作者:有点蓝
--  发布时间:2017/5/20 17:11:00
--  
确实没有进入状态。

您只是改了默认的3个表的列标题吧。建议连列名称和表名称都改掉吧。否则以后很多麻烦的



--  作者:老鼠
--  发布时间:2017/5/20 17:26:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

这些我都看了,就是不知道为什么会这样呢?能给具体点吗?求解答.
图片点击可在新窗口打开查看此主题相关图片如下:7.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/5/20 17:27:56编辑过]

--  作者:yinyb36
--  发布时间:2017/5/21 9:25:00
--  
A4列为表达式列,需改为数据列,执行 DataColChanged事件


[此贴子已经被作者于2017/5/21 9:38:23编辑过]

--  作者:老鼠
--  发布时间:2017/5/21 10:41:00
--  

谢谢!A4列改成数据列后没有再报错了.那能再请问下这个事件与计算公式的区别吗?为什么表事件就能达到这个效果呢?


--  作者:yinyb36
--  发布时间:2017/5/21 17:31:00
--  
表达式的优点是计算速度快,不占储存
    缺点是函数少,局限性大

数据列的优点是计算灵活
    缺点是代码不严谨容易出错
     计算速度没有表达式快
     代码的质量影响计算速度