ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6030|回复: 3

[求助] 再问:关于vba连接dbf数据库文件~~~~!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-14 14:48 | 显示全部楼层 |阅读模式
我自己在excel home里面翻了一些相关的老帖,特别是老版主northwolves 的方法,最后结论好像都是用:
Driver={Microsoft Visual FoxPro Driver};SourceType=DBF; 来接入的,我自己试了一下,做了如下准备工作:
保证要接入的数据库文件是在相应文件夹下的,同时我也安装了foxpro6.0(但是安装完成时,系统提示是否安装msdn(好像是叫这个)的东西,因为没有光盘没有安装),但是[好像还是不行,提示“3706,未找到提供程序,改程序可能未正确安装”,我的程序如下,大家帮我看看那里有问题,谢谢:
Sub 连接进销存表数据库()

Dim conn As ADODB.Connection
Dim WN As String
Dim sSql As String
Dim TableName As String
Dim ColumnName As String
Dim i As Integer
Dim rst As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Dim db     As Database

WN = "sample.dbf"
TableName = "sample"
Set conn = New ADODB.Connection


With conn
    .Provider = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;"
    .ConnectionString = "SourceDB=" & [CurrentProject].[Path] & "\" & WN
    .Open
    End With


If conn.State = 1 Then
MsgBox "连接成功!"

conn.Close
End If
Set conn = Nothing
End Sub

[ 本帖最后由 yyy811240 于 2009-12-14 14:55 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-12-14 19:05 | 显示全部楼层
我自己尝试解决了一下,解决了一半,呵呵:编码中provider处要加MSDASQL.1,即:

With conn
    .Provider = "MSDASQL.1;Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;"
    .ConnectionString = "SourceDB=" & "D:\交易策略\dbf 连接程序\tt" ' & "\" & WN
    .Open
    End With

整段程序如下:
Sub 连接进销存表数据库()

Dim conn As ADODB.Connection
Dim WN As String
Dim sSql As String
Dim Tablename As String
Dim Columnname As String
Dim i As Integer
Dim rst As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Dim db     As Database
Dim PriceGap As Long

WN = "sample.dbf"
Tablename = "sample"
Columnname = "name"

Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
Set rst2 = New ADODB.Recordset

With conn
    .Provider = "MSDASQL.1;Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;"
    .ConnectionString = "SourceDB=" & "D:\交易策略\dbf 连接程序\tt" ' & "\" & WN
    .Open
    End With
If conn.State = 1 Then
MsgBox "连接成功!"

If rst.State = 1 Then
MsgBox "记录集打开成功!"
End If


sSql = "alter table " & Tablename & " add column " & Columnname & " long"  '在表中加入一个新字段(列)
conn.Execute sSql

sSql = "UPDATE " & Tablename & " SET name = 1"     '将新加入的字段赋值为1
conn.Execute sSql

rst.Open Source:=Tablename, ActiveConnection:=conn.ConnectionString, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
Set rst2 = rst.Clone

conn.Close

End If
Set conn = Nothing
End Sub

其中rst.Open Source:=Tablename, ActiveConnection:=conn.ConnectionString, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
这一句又有问题了,提示:ODBC 驱动程序不支持所需的属性,请高手帮忙看看,谢谢~~!!!!

[ 本帖最后由 yyy811240 于 2009-12-14 19:06 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-12-14 22:25 | 显示全部楼层
Set rst = New ADODB.Recordset
rst 定义为数据集了
Set conn = New ADODB.Connection
conn才是数据源连接

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-12-15 22:44 | 显示全部楼层
原帖由 Scarlett_88 于 2009-12-14 22:25 发表
Set rst = New ADODB.Recordset
rst 定义为数据集了
Set conn = New ADODB.Connection
conn才是数据源连接

斑竹您好~!,我之前回复了,不过好像论坛挂了,帖子不见了:
我知道conn才是数据源连接,我是需要在连接后用到指针(即,记录集recordset),因此需要进行rst的定义,之前尝试连接mdb、xls、accdb文件时,
按照“rst.Open Source:=Tablename, ActiveConnection:=conn.ConnectionString, CursorType:=adOpenKeyset, LockType:=adLockOptimistic”的格式定义rst都没问题,但是连接dbf文件时这样就有问题,系统老是提示“ODBC 驱动程序不支持所需的属性”,请斑竹帮我看看!谢谢~!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 03:09 , Processed in 0.021261 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表