|
数据库中有3千多条数据,其中有1千多为15位身份证号。现需要将其中15位的转换为18位的。要用asp批量处理,1千多条,一条一条处理太慢了。 要详细的asp处理方法 或者例子,是ADODB连的数据库,一般的程序都是这,虚拟主机用不了ODBC的
----------------------------------------------------------------------
rs.open sql,conn,0,2 '打开修改权限 do while not rs.eof rs("身份证号码")=转换模块(传入rs("身份证号码")) rs.update '更新 rs.movenext loop rs.close
--------------------------------------------------------
rs.open sql,conn,0,2 '打开修改权限 do while not rs.eof if len(rs("身份证号码"))=15 then '15位的才更新 rs("身份证号码")=转换模块(传入rs("身份证号码")) rs.update '更新 end if rs.movenext loop rs.close
--------------------------------------------------------
<!--#include file=conn.asp--> <% Function GetNewIDCard(IDCard) Dim i,S,Wi,Wf,result Wi= split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2",",",-1,1) Wf= Split("1,0,X,9,8,7,6,5,4,3,2", ",",-1,1) IDCard = Mid(IDCard, 1, 6) & "19" & Mid(IDCard, 7, 9) S=0 For i = 0 To ubound(wi) S = cint(Wi(i)) *cint(Mid(IDCard, i + 1, 1)) +S Next GetNewIDCard=IDCard & Wf(S Mod 11) End Function
dim rs set rs=server.CreateObject("ADODB.RecordSet") rs.open "select * from admin1" rs.open sql,conn,0,2 '打开修改权限 do while not rs.eof if len(rs("number"))=15 then '15位的才更新 rs("number")=GetNewIDCard(IDCard) rs.update '更新 end if rs.movenext loop rs.close %>
有什么错误的地方吗?
--------------------------------------------------------
如果要性能就应该再 Access 中进行: ①再 Access 的宏编辑器中添加一个模块,里面添加一个函数 public function ID15To18(byval id as string) as string ... end function Access 的好处就是函数 ID15To18 现在可以在 SQL 中使用了
②之间用 Access 的更新查询或 ASP 中执行以下 SQL 就成了 Update table1 Set 身份证号码=ID15To18(身份证号码)
--------------------------------------------------------
不会在access中做啊 Tiger_Zhao发的我一点也看不懂 而且数据库不段新增号码 新号码有15的也有18的 数据库在虚拟主机上 用asp的话方便些
--------------------------------------------------------
to: Tiger_Zhao(VB老鸟) access模块中自定义函数只能在access环境中使用吧?
--------------------------------------------------------
vbman2003(家人) ( ) 信誉:100
可以在VB中调用的,至少dao中可以。
--------------------------------------------------------
用VB+ADO测试了一下,不行,错误提示:“表达式中xxxx函数末定义......”
|