日期:2014-05-17  浏览次数:21148 次

求救:ASP怎么读取dbf自由表数据啊?
db="sj" 
 set conn=Server.CreateObject("AdoDb.Connection")
 conn.open "Driver={Microsoft FoxPro VFP Driver (*.dbf)};SourceType=DBF;"&"SourceDB=" & Server.MapPath("db") &";Exclusive=No"

set rs=server.createobject("adodb.recordset")
sql="select * from [bm.dbf]"
rs.open sql,conn,1,1

运用时rs.open sql,conn,1,1该行老报错
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)

请问高手是什么原因啊?


------解决方案--------------------

ASP中实现从dbf数据库导出数据到sql表


说明:dbf数据库结构要与sql表一致
<%
Dim conndbf_dbf,Driver_dbf,SourceType_dbf,DBPath_dbf 
dim Conn_sql ,StrCnn,i,str_dbf
dim dbf_table_name,sql_table_name
'dbf数据库名称
dbf_table_name="20005070" 
'sql表名称
sql_table_name="zjls"

str_dbf=""
' 建立dbfConnection 对象
Set conn_dbf = Server.CreateObject("ADODB.Connection")
Driver_dbf = "Driver={Microsoft Visual FoXPro Driver};"
SourceType_dbf = "SourceType=DBF;"
'datadbf为dbf数据库所在目录
DBPath_dbf = "SourceDB=" & Server.MapPath( "datadbf" )

' 调用Open 方法打开数据库
conn_dbf.Open Driver_dbf & SourceType_dbf & DBPath_dbf

Set rd_dbf= Server.CreateObject("ADODB.Recordset")
' 打开DBF文件,参数二为Connection对象
rd_dbf.Open "select * from "&dbf_table_name, conn_dbf, 2, 2

'建立sqlConnection 对象
Set conn_sql = Server.CreateObject("ADODB.Connection")
'Initial Catalog为sql数据库名,Data Source为本机名
StrCnn = "Provider=sqloledb; User ID=sa; PassXP=; Initial Catalog=jz30data; Data Source=chaihua"
Conn_sql.Open StrCnn 
Set CreateDbfRecordset_sql= Server.CreateObject("ADODB.Recordset")
' 打开DBF文件,参数二为Connection对象
' www.knowsky.com

rd_dbf.movefirst
Do While Not rd_dbf.Eof 
'构造从DBF数据库读出的字段字符串
str_dbf=""
for i=1 to 38
str_dbf=str_dbf&",'"&rd_dbf.fields(i)&"'"
next
str_dbf="'"&rd_dbf.fields(0)&"'"&str_dbf
'插入sql表
CreateDbfRecordset_sql.Open "insert "&sql_table_name&" values("&str_dbf&")", conn_sql,2,2

rd_dbf.MoveNext
Loop

conn_sql.close
conn_dbf.close
response.write("提交XP!")
%>

作者:柴华 XP:57302017





------解决方案--------------------
明显的路径不对
db="sj"

Server.MapPath("sj")区别
自己看
如果你前面用
db="sj"
那么可以改成
Server.MapPath(db)