找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 743|回复: 7

[VBA程序]:如何在VBA中引用DAO

[复制链接]
发表于 2004-8-20 20:34:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问如何在vba中引用DAO?
在我下载的块插入程序中的
Dim xxx As WorkSpace 这句出错,总说需要引用
但是点选了DAO3.5也不行
以下是某文章切下来的一段:
请注意DAO并不是随VBA提供的。所以首先你必须确认DAO在所有需要它运行的机器上正确安装。并且你得使用相应的Microsoft方法来获得DAO的使用许可,然后才可以使用。你会发现位于Microsoft网站上的这篇文档也许有用:
http://msdn.microsoft.com/library/techart/msdn_redistmdac.htm

根据不同版本的DAO安装在不同版本的AutoCAD上,安装程序将覆盖一个MFC DLL文件MFC42.DLL。这可能引起AutoCAD或者其他的应用程序的一些问题。所以请小心对待
请问这么引用DAO呢?
上传这个VBA程序,我用的是ACCESS97
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-21 22:26:20 | 显示全部楼层
用Ado连接数据库
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-22 12:43:16 | 显示全部楼层
请问斑竹为什么会出现这个现象呢?
帮忙给推荐个关于块引用的例子吧,相近的也行
还有说:
并且你得使用相应的Microsoft方法来获得DAO的使用许可,
根据不同版本的DAO安装在不同版本的AutoCAD上
是什么意思呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-22 13:09:15 | 显示全部楼层
怎麽还有人用DAO连数据库?我只用过ADO对象连
你试试Dim xxx As Object
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-23 18:34:19 | 显示全部楼层
我倒~!
我的机器就这样呀,没办法
p133+64m的内存,我用R14+offiice97的,软件也就自然落后了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-24 08:10:21 | 显示全部楼层
ADO和机器的配置无关
给你一个简单的ADO连接类,看看

  1. Private pConnection As New ADODB.Connection
  2. Private pRecordset As New ADODB.Recordset
  3. Private pFileName As String

  4. Private Sub OpenConnection()
  5.     With pConnection
  6.         If .State = adStateOpen Then .Close
  7.         .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pFileName & ";Persist Security Info=False"
  8.         .Open
  9.     End With
  10. End Sub

  11. Public Function OpenRecordset(ByVal strSql As String) As ADODB.Recordset
  12.     Dim myRecordset As New ADODB.Recordset
  13.     With myRecordset
  14.         .CursorLocation = adUseClient
  15.         .CursorType = adOpenDynamic
  16.         .Open strSql, pConnection, , , adCmdText
  17.     End With
  18.     Set pRecordset = myRecordset
  19.     Set OpenRecordset = pRecordset
  20. End Function

  21. Public Function RunTrans(ByVal tranSql As String)
  22.   pConnection.BeginTrans
  23.   pConnection.Execute tranSql
  24.   pConnection.CommitTrans
  25. End Function

  26. Public Sub Move(ByVal NumRecords As ADO_LONGPTR, Optional ByVal Start)
  27.     If IsMissing(Start) Then
  28.         pRecordset.Move NumRecords
  29.     Else
  30.         pRecordset.Move NumRecords, Start
  31.     End If
  32. End Sub

  33. Public Sub MoveFirst()
  34.     pRecordset.MoveFirst
  35. End Sub

  36. Public Sub MoveLast()
  37.     pRecordset.MoveLast
  38. End Sub

  39. Public Sub MoveNext()
  40.     pRecordset.MoveNext
  41. End Sub

  42. Public Sub MovePrevious()
  43.     pRecordset.MovePrevious
  44. End Sub

  45. Public Property Let FileName(ByVal str As String)
  46.     Dim fso As New FileSystemObject
  47.     str = UCase(str)
  48.     If fso.FileExists(str) Then
  49.         If str <> pFileName Then
  50.             pFileName = str
  51.             OpenConnection
  52.         End If
  53.     Else
  54.         MsgBox "文件不存在!"
  55.     End If
  56. End Property

  57. Public Property Get Item(Index As Integer)
  58.     Item = pRecordset.Fields(Index).Value
  59. End Property

  60. Public Property Get Count()
  61.     Count = pRecordset.RecordCount
  62. End Property

  63. Public Property Get EOF()
  64.     EOF = pRecordset.EOF
  65. End Property

  66. Public Property Get BOF()
  67.     BOF = pRecordset.BOF
  68. End Property

  69. Private Sub Class_Terminate()
  70. On Error Resume Next
  71.     pRecordset.Close
  72.     Set pRecordset = Nothing
  73.     pConnection.Close
  74.     Set pConnection = Nothing
  75. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-25 10:09:25 | 显示全部楼层
可惜还是没有办法下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 557个

财富等级: 财运亨通

发表于 2004-10-18 14:39:43 | 显示全部楼层
看我的例子
打开数据库
Public db As Database
Public sysdb As Database
    Set sysdb = DBEngine.Workspaces(0).OpenDatabase("C:\sys.MDB", dbOpenDynamic)
    comm.Filter = "Access数据库(*.MDB)|*.MDB"
    comm.ShowOpen
    If comm.FileName <> "" Then
        Set db = DBEngine.Workspaces(0).OpenDatabase(comm.FileName, dbOpenDynamic)
    End If

打开表
   Dim rec As Recordset
    Set rec = sysdb.OpenRecordset("管线信息表", dbOpenDynaset)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 13:29 , Processed in 0.295163 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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