我需要用vb访问dbf格式的数据文件,选择odbc方式实现,由于程序所要运行的客户端间各自采用的数据库不同(有dbase,sqlserver,foxpro),所以要求程序独立于数据库即在没有数据库环境的机器上也能运行访问dbf数据文件。我先用dbase驱动,能够连接,但表名字符数不能超过8个,否则报找不到文件错,改用foxpro驱动,手工配驱动连接成功且表名问题解决,但编程建立数据源,则有问题,总报"an error occured configuring the dsn,please check the parameters and try angain",而且手工配置时必须选择路径,否则即使程序配置SourceDB,执行时也会报SourceDB错误,难道必须安装foxpro后,才能用它的驱动吗?可手工配置怎么又可以用啊,这个问题真把我搞晕了,向高手求救,以下是我的相关程序代码,请帮看一下是否有错误,谢谢了!strattrib = "Description=" _
& "foxpro conn" _
& Chr$(13) & "OemToAnsi=No" _
& Chr$(13) & "SERVER=127.0.0.1" _
& Chr$(13) & "Network=tcp/ip" _
& Chr$(13) & "SourceDB=e:\dbpath" _
& Chr$(13) & "SourceType=DBF" _
& Chr$(13) & "Exclusive=Yes" _
& Chr$(13) & "BackgroundFetch=Yes" _
& Chr$(13) & "Collate=Machine" _
& Chr$(13) & "Null=Yes" _
& Chr$(13) & "Deleted=Yes" _
& Chr$(13) & "Extended Properties = dBASE" _
& Chr$(13) & "Provider=MSDASQL.1"
' & Chr$(13) & "DatabaseType=Free Table directory" _
' & Chr$(13) & "dbq=e:\dbpath" _
rdoegn.rdoRegisterDataSource "bbb", "Microsoft Visual Foxpro Driver", True, strattrib
Set rdoconn = rdoevn.OpenConnection("aaa", rdDriverNoPrompt, "Provider=MSDASQL.1;UID=;PWD=;SourceDB=e:\dbpath;SourceType=DBF;Extended Properties = dBASE")
& "foxpro conn" _
& Chr$(13) & "OemToAnsi=No" _
& Chr$(13) & "SERVER=127.0.0.1" _
& Chr$(13) & "Network=tcp/ip" _
& Chr$(13) & "SourceDB=e:\dbpath" _
& Chr$(13) & "SourceType=DBF" _
& Chr$(13) & "Exclusive=Yes" _
& Chr$(13) & "BackgroundFetch=Yes" _
& Chr$(13) & "Collate=Machine" _
& Chr$(13) & "Null=Yes" _
& Chr$(13) & "Deleted=Yes" _
& Chr$(13) & "Extended Properties = dBASE" _
& Chr$(13) & "Provider=MSDASQL.1"
' & Chr$(13) & "DatabaseType=Free Table directory" _
' & Chr$(13) & "dbq=e:\dbpath" _
rdoegn.rdoRegisterDataSource "bbb", "Microsoft Visual Foxpro Driver", True, strattrib
Set rdoconn = rdoevn.OpenConnection("aaa", rdDriverNoPrompt, "Provider=MSDASQL.1;UID=;PWD=;SourceDB=e:\dbpath;SourceType=DBF;Extended Properties = dBASE")
还有改用ado方式可以不安装数据库直接用吗,有谁试过吗?
con.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=Visual FoxPro Tables;Initial Catalog=f:\fp"
连接SQL
Set CN = New ADODB.Connection
With CN
.ConnectionString = "uid=sa;pwd=;driver={SQL Server};server=ServerName;database=DB"
.ConnectionTimeout = 30
.CursorLocation = adUseServer
.Open
End With
难道真的没有办法实现这个要求。各位帮我想个方法,我一定高分重谢!
'引用:'Microsoft ActiveX Data Objects 2.x Library
'x是版本号,视你的电脑上安装的版本而定Sub Foxpro()
Dim iRe As ADODB.Recordset
Dim iConc As String
iConc = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""DSN=Visual FoxPro Database;UID=;SourceType=DBF;" & _
"SourceDB=c:\""" 'c:\是dbf文件所在的目录
Set iRe = New ADODB.Recordset
iRe.Open "select * from [aa.dbf]", iConc, adOpenKeyset, adLockOptimistic
MsgBox iRe(0)
iRe.Close
End Sub
一般win98第二版以后的操作系统都有.
默认的情况下,win98已经自带了foxpro的驱动程序,如果没有的话,安装了MADOC后也会自动生成这个.所以不需要配置什么.