明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3675|回复: 13

(mccad请进)VBA与Access链接查询求教

  [复制链接]
发表于 2007-4-24 08:55:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-6-14 20:26:10 编辑

VBA中,需要根据三个条件在Access中查询符合条件的记录:要求同时以VBA中的三个条件,查找出Access中符合要求的记录。我在作数据库链接时好像是陷入了死循环,电脑就没有了反映……请高手指点该如何链接、查询!!!

发表于 2007-5-1 14:36:00 | 显示全部楼层
你的代码?
 楼主| 发表于 2007-6-8 08:40:00 | 显示全部楼层

先谢谢mccad大师!

Dim wr As Workspace '声明工作空间变量,为打开数据库提供空间
Dim db As Database  '声明数据库对象变更,用于打开数据库
Dim dl As Recordset '声明数据库表,用于打开数据库库表
Dim xl As Recordset
Dim DTYPE As Recordset
Dim DLOAD As Recordset
Dim DSPEED As Recordset
Dim DNBE As Recordset
Dim DNBS As Recordset
Dim DRMax As Recordset


Set wr = CreateWorkspace("", "admin", "", dbUseJet)
Set db = wr.OpenDatabase("C:\Program Files\Database.mdb", False, True, "")
Set dl = db.OpenRecordset("Data", dbOpenDynaset, dbReadOnly)
Do
    If dl.EOF = False Then
        cobType.AddItem dl.Fields("Type").Value
        dl.MoveNext
    Else
        Exit Do
    End If
Loop


以上为Access连接部分,实际上我是要根据Access中的DTYPE、DLOAD、DSPEED、DNBE、DNBS、和DRMax,总共6列的数据来最终查找出一条记录,并将找出的这条记录中的其它字段的数据赋值给AutoCAD VBA窗口中的相应控件。

发表于 2007-6-8 08:49:00 | 显示全部楼层

改为

    Do while Not dl.EOF
        cobType.AddItem dl.Fields("Type").Value
        dl.MoveNext
    Loop

 楼主| 发表于 2007-6-8 10:26:00 | 显示全部楼层

以上是我的Access数据

本帖子中包含更多资源

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

x
 楼主| 发表于 2007-7-8 22:03:00 | 显示全部楼层

怎么解决??

还有找到后怎么从access中取数值?这方面是一窍不通啊~~~

发表于 2007-7-18 08:53:00 | 显示全部楼层
控件=dl.Fields("Type").’将access字段值付给控件某个属性。
 楼主| 发表于 2007-9-26 23:22:00 | 显示全部楼层

大家有没有这种的成功案例啊~~

发表于 2007-9-27 12:49:00 | 显示全部楼层
  1. Public Function OpenConnection(DbPath)
  2.     Dim TempConn
  3.     'On Error Resume Next
  4.     Set OpenConnection = CreateObject("ADODB.Connection")
  5.     OpenConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DbPath
  6.     If Err Then
  7.         Err.Clear
  8.         MsgBox "链接出错,请检查数据库链接字符串!"
  9.     End If
  10. End Function
  11. Sub DoAccess()
  12.     Dim RS, CONN
  13.     Dim DbPath As String
  14.     Dim TableList
  15.     Dim RecordCnt As Integer
  16.     Dim i As Integer
  17.     DbPath = "D:\mdbpath\mdbfile.mdb"
  18.     Set CONN = OpenConnection(DbPath)
  19.     If IsObject(CONN) Then
  20.         Set RS = CONN.execute("select  DTYPE,DLOAD,DSPEED,DNBE,DNBS,DRMax from mdbtable where  dtype=true and dload=15")
  21.         If RS.bof And RS.EOF Then
  22.             RS.Close: Set RS = Nothing: Set CONN = Nothing
  23.             Exit Sub
  24.         End If
  25.          '
  26.         TableList = RS.GetRows(-1)
  27.         Set RS = Nothing
  28.         Set CONN = Nothing
  29.         RecordCnt = UBound(TableList, 2)
  30.         For i = 0 To RecordCnt
  31.             Debug.Print TableList(0, i)
  32.             Debug.Print TableList(1, i)
  33.             Debug.Print TableList(2, i)
  34.             Debug.Print TableList(3, i)
  35.             Debug.Print TableList(4, i)
  36.             Debug.Print TableList(5, i)
  37.             Debug.Print "+++++++++++++++++++"
  38.         Next
  39.     End If
  40. End Sub
发表于 2007-10-6 11:16:00 | 显示全部楼层
本帖最后由 作者 于 2007-10-6 11:43:04 编辑

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 12:17 , Processed in 0.185546 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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