以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在身份证阅读器获取数据时候,出现有效期是长期,那么在有效期时间列属性中会报错,求解!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52258)

--  作者:李孝春
--  发布时间:2014/6/12 10:30:00
--  在身份证阅读器获取数据时候,出现有效期是长期,那么在有效期时间列属性中会报错,求解!
附表结构图及说明

图片点击可在新窗口打开查看此主题相关图片如下:0123.jpg
图片点击可在新窗口打开查看
错误提示如下

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

代码如下:
Dim Info As String
Info = FileSys.ReadAllText(ApplicationPath & "wz.txt", Encoding.Unicode) \'读取生成的文本文件
info = info.Replace(vbcrlf,vblf) \'将回车换行替换为换行
Dim pars() As String = Info.Split(vblf) \'将读取的信息拆分为数组
Dim r As Row = Tables("表A").AddNew
Dim s As String = pars(0).Trim()
r("备注") = s
Dim xm As String = s.split(" ")(0)
r("姓名") = xm
s = s.Replace(xm,"").Trim()
Info = FileSys.ReadAllText(ProjectPath & "mz.INI",Encoding.Default) \'读取生成的文本文件
For Each Str As String In Info.Split(Chr(10), Chr(13))
    If Str.StartsWith(s.SubString(1,2)) Then
        r("名族") = Str.Replace(s.SubString(1,2) & "=", "")
        Exit For
    End If
Next
r("住址") = s.split(" ")(0).SubString(11)
s = s.Replace(s.split(" ")(0),"").Trim()
r("身份证号码") = s.SubString(0,18)
Dim xbm As Integer = val(s.SubString(0,18).SubString(16,1)) Mod 2
r("性别") = "女,男".split(",")(xbm)
r("出生日期") = s.SubString(0,18).SubString(6,8).Insert(6,"-").Insert(4,"-")
s = s.Replace(s.SubString(0,18),"").Trim()
r("发证机关") = s.split(" ")(0)
s = s.Replace(s.split(" ")(0),"").Trim()
r("签发日期") = s.SubString(0,8).Insert(6,"-").Insert(4,"-")
r("有效日期") = s.SubString(8,8).Insert(6,"-").Insert(4,"-")      求修改这个代码地方
[此贴子已经被作者于2014-6-12 10:33:59编辑过]

--  作者:有点甜
--  发布时间:2014/6/12 11:13:00
--  

 加一个判断,处理

 

If s.Contains("长期") Then
    r("有效日期") = Date.Today.AddYears(200)
Else
    r("有效日期") = s.SubString(8,8).Insert(6,"-").Insert(4,"-")      求修改这个代码地方
End If


--  作者:李孝春
--  发布时间:2014/6/12 11:20:00
--  回复:(有点甜) 加一个判断,处理 If...
感谢有点甜老师! 

r("有效日期") = Date.Today.AddYears(200)

有点甜老师  这个增加两百年?呵呵  开个玩笑  那不成人妖啦!

有没有办法直接显示为长期字样呢?

--  作者:有点甜
--  发布时间:2014/6/12 11:43:00
--  
 回复3楼,除非你这一列弄成 字符列,日期列只能存日期。
--  作者:李孝春
--  发布时间:2014/6/12 11:58:00
--  回复:(有点甜) 回复3楼,除非你这一列弄成 字...
貌似可以弄成字符咧哦 弄成字符咧代码会不会变!
因为这个有效日期就是从已经生成的WZ.TEXT中利用字符读取出来的

--  作者:有点甜
--  发布时间:2014/6/12 12:00:00
--  

 弄成字符列以后没问题的。

 

 不过,你截取信息的时候,如果是长期的情况的话,有可能后面截取到的信息需要调整一下位置。


--  作者:李孝春
--  发布时间:2014/6/12 12:03:00
--  回复:(有点甜)?弄成字符列以后没问题的。&n...
 r("有效日期") = s.SubString(8,8).Insert(6,"-").Insert(4,"-") 



将这个转换为
 r("有效日期") =  s.SubString(4,4)
可否  
在上面的判断事件中用这个代码

wx记事本文件如下:
夏万春
汉族
19830304
贵州省瓮安县珠
52272519830304711X
瓮安县公安局
20101109
长期

[此贴子已经被作者于2014-6-12 12:05:48编辑过]

--  作者:有点甜
--  发布时间:2014/6/12 12:07:00
--  

 回复7楼,可以。后面的位置跟着变即可。


--  作者:李孝春
--  发布时间:2014/6/12 15:57:00
--  回复:(有点甜) 回复7楼,可以。后面的位置跟着...
有点甜老师  谢谢你

根据你的思路 我将代码改成了如下:
If s.Contains("长期") Then
    r("有效日期") = “长期”
Else
    r("有效日期") = s.SubString(8,8).Insert(6,"-").Insert(4,"-")      求修改这个代码地方
End If

问题圆满解决!再次感谢!