各位老師大家好!我有一個Access資料表,里面有一些身份證號碼是15位的,我怎么做才可以將他們準確的升級到18位身份證號碼呢?本人只懂得一點點基礎,請各位老師用最簡單的方法指教一下,謝謝!
uj5u.com熱心網友回復:
以下用asp撰寫了一段代碼,可實作你的需求。如不想用asp,可按其思路用你常用的語言重新撰寫一下即可。<%
function convertsfz(insfzh) '身份證號碼15,17位轉18位的函式
str = ""
str_len = 0
retStr = ""
tempstr =""
i = 0
ll_Sum = 0
S = Array("1","0","X","9","8","7","6","5","4","3","2")
N = Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1)
retStr=""
str_len=len(insfzh)
if str_len=15 or str_len=17 then
if str_len=15 then '補充年份位
retStr=mid(insfzh,1,6) + "19" + mid(insfzh,7,15)
else
retStr=insfzh '17位只計算校驗位
end if
for i=1 to 17
tempstr = mid(retStr,i,1)
ll_Sum = ll_Sum+cdbl(tempstr)*N(i-1)
response.Write(tempstr&"|"&ll_Sum&"|"&(ll_Sum mod 11) &"<br>")
next
retStr = retStr & S(ll_Sum mod 11)
else
retStr=insfzh
end if
convertsfz=retStr
End Function
set myconn=server.createobject("ADODB.CONNECTION")
StrSQL="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("你的access資料庫名")
myconn.open StrSQL
set rs=myconn.execute("select id,身份證號 from 你的資料表名 where len(身份證號)=15")
if not rs.eof then varr=rs.getrows() end if
rs.Close
set rs=nothing
if isarray(varr) then
vend=ubound(varr,2)
for i=0 to vend
vid=varr(0,i)
vsfzh=rs(1,i)
myconn.execute("update mytab set 身份證號='"&convertsfz(vsfzh)&"' where ID="&vid)
next
end if
myconn.close
set myconn=nothing
response.Write("完成。")
%>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/51340.html
標籤:Access
下一篇:單次查詢量大,時間慢如何解決
