利用asp网页中将excel中的数据导入到access中的user_info表,两者字段顺序完全一样
<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"Driver={MicrosoftExcelDriv...
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;DBQ=" & Server.MapPath("excel/excel_in.xls")
SQL1="select * from [sheet1$]"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL1, conn, 3, 3
'下面连接OLbaoming_data.mdb表user_info
curDir = Server.MapPath("data_baoming2012/OLbaoming_data.mdb")
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
Set rs1 = Server.CreateObject("ADODB.Recordset")
Set rs1.ActiveConnection = conn1
rs1.Source = "select * from user_info"
rs1.CursorType = 3 ' adOpenKeyset
rs1.LockType = 3 'adLockOptimistic
rs1.Open
Do While Not rs.Eof
rs1.AddNew
rs1(0)=j
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
rs1.Update
rs.MoveNext
j=j+1
Loop
rs.Close
rs1.Close
conn.Close
conn1.Close
Set rs=nothing
Set conn=nothing
%>
提示错误Microsoft JET Database Engine (0x80040E21)
试图将 Null 值赋予一个非 Variant 数据类型的变量。
/excelin.asp, 第 34 行
就是这一行rs1(0)=j
加分请教怎么改! 展开
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;DBQ=" & Server.MapPath("excel/excel_in.xls")
SQL1="select * from [sheet1$]"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL1, conn, 3, 3
'下面连接OLbaoming_data.mdb表user_info
curDir = Server.MapPath("data_baoming2012/OLbaoming_data.mdb")
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
Set rs1 = Server.CreateObject("ADODB.Recordset")
Set rs1.ActiveConnection = conn1
rs1.Source = "select * from user_info"
rs1.CursorType = 3 ' adOpenKeyset
rs1.LockType = 3 'adLockOptimistic
rs1.Open
Do While Not rs.Eof
rs1.AddNew
rs1(0)=j
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
rs1.Update
rs.MoveNext
j=j+1
Loop
rs.Close
rs1.Close
conn.Close
conn1.Close
Set rs=nothing
Set conn=nothing
%>
提示错误Microsoft JET Database Engine (0x80040E21)
试图将 Null 值赋予一个非 Variant 数据类型的变量。
/excelin.asp, 第 34 行
就是这一行rs1(0)=j
加分请教怎么改! 展开
2个回答
展开全部
rs1(0)=j
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
改成
for i=0 to rs.Fields.Count-1
rs1(i+1)=rs(i)
next
先试一下,,
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
改成
for i=0 to rs.Fields.Count-1
rs1(i+1)=rs(i)
next
先试一下,,
更多追问追答
追问
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xb10 Thread 0xd68 DBC 0x67e7074 Excel'。
我已经对C:\WINDOWS\Temp增加了everyone和Iuser权限
文件存为admin_excel_in.asp,放在根目录就成功了,可是放在admin文件夹下,就是上面的错误!!
追答
Server.MapPath("excel/excel_in.xls")
Server.MapPath("data_baoming2012/OLbaoming_data.mdb")
改成
Server.MapPath("../excel/excel_in.xls")
Server.MapPath("../data_baoming2012/OLbaoming_data.mdb")
我刚试过,,路这个程序只要路径不对就会出错,,错误码率代码如下:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xc90 Thread 0x968 DBC 0x1f85014 Excel'。
与C:\WINDOWS\Temp的权限没关系
展开全部
j 没有初始化呀。
在Do While Not rs.Eof 之前加入 j=1 试试呢?
另外,虽然你rs1(0)已经赋值 j 了,但是后面的循环
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
这个循环会覆盖rs1(0)的值。
不知道你的意图是什么,要么不要
rs1(0)=j
这个语句;要么把循环从 i=1 开始:
For i=1 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
在Do While Not rs.Eof 之前加入 j=1 试试呢?
另外,虽然你rs1(0)已经赋值 j 了,但是后面的循环
for i=0 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
这个循环会覆盖rs1(0)的值。
不知道你的意图是什么,要么不要
rs1(0)=j
这个语句;要么把循环从 i=1 开始:
For i=1 to rs.Fields.Count-1
rs1(i)=Trim(rs(i))
Next
追问
我也加过j=1,不行。
我将数据表中id的类型由自动编号改为数字或文本,就成功导入了,但是这样在添加记录的时候,id就不能自动编号了,还是没有解决问题
追答
要自动编号啊?
那就把rs1(0)=j 和 j=j+1 都去掉,
然后循环从 i=1 开始,不给rs1(0)赋值就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询