vb如何获取access数据库的所有表和字段名??

db1.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=新_数据库.accdb;PersistSecurityInfo... db1.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=新_数据库.accdb;Persist Security Info=False"
rs1.ActiveConnection = db2
如何获取表和字段的个数及所有的名称??
展开
 我来答
zdingyun
2014-12-02 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48170
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

给LZ一个代码可以搜索ACCESS数据库内所有表名的代码。

Option Explicit
    Dim TableSet As ADODB.Recordset
    Dim Gconnection As ADODB.Connection
    Dim lianjie As String

Sub getTableName()
    lianjie = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=J:\LDGZ\南汇40M^2New\ldgz30_wd20100205N19200\Data\wdold.mdb;Persist Security Info=False"
    Set Gconnection = New ADODB.Connection
    Gconnection.Open lianjie
    Set TableSet = Gconnection.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty))
    Do Until TableSet.EOF
         List1.AddItem TableSet!table_name
         TableSet.MoveNext
    Loop
End Sub

Private Sub Form_Load()
    getTableName
End Sub

 LZ可以将lianjie变量以你自己的连接字符串替代。我这里是用ACCESS7的数据库。

再给LZ提供一个链接

http://wenku.baidu.com/link?url=mrzZ5qZqgO9tJP_hPOhXDWfKxqHRWhnAK6wxmOgtOzRpK3985pemcpY62rP4ZgUw7a3A_YMjdchndOwxPXnP9DywaayDsX6Ta_DkknVXroq

是关于获取“

VB 读取ACCESS数据库中所有表名及指定表的字段名

“的Word文件。

tjrmgs
2014-12-02 · TA获得超过5764个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1014万
展开全部
楼主可以访问本人的百度空间文章 “VB将ACCESS数据库中的所有表名加载到列表框里”。那里列举了两种解决方案及有关代码,相信能帮到你。

获取某张表的所有字段名可以参考我的以下知道回答
http://zhidao.baidu.com/question/1239443077603133139.html?oldq=1
追问
太感谢了!
rs1.ActiveConnection = db2,这句是干什么的,不要也行是吧?
追答
设置记录集rs1引用db2的连接,应该是dao的方法比较古老了,不要理它改用新一点的ADO吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Coo_boi
2014-12-02 · TA获得超过1333个赞
知道大有可为答主
回答量:2209
采纳率:50%
帮助的人:228万
展开全部

Connection.OpenSchema  adSchemaTables adSchemaColumns

====================================================

具体实现代码:

Private Sub Command1_Click()
    Dim cnn As Object
    
    Const adSchemaTables = 20
    Const adSchemaColumns = 4
    
    Set cnn = CreateObject("adodb.connection")
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\test.mdb';Persist Security Info=False"
    Set rds = cnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
    Debug.Print "Table_Name", "Column_Name"
    Do Until rds.EOF
        Table_name = rds!Table_name
        Set temp = cnn.OpenSchema(adSchemaColumns, Array(Empty, Empty, Table_name))
        Do Until temp.EOF
            Debug.Print Table_name, temp!Column_Name
            temp.MoveNext
        Loop
        rds.MoveNext
    Loop
    
    rds.Close
    temp.Close
    cnn.Close
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veimi
2014-12-02 · TA获得超过2350个赞
知道大有可为答主
回答量:5720
采纳率:28%
帮助的人:3045万
展开全部
引用方法:
引用ADO—— 菜单"工程"-> "引用 "-->勾选 Microsoft ActiveX Data Objects 2.1 Library 或更高版本,点击确定按钮。

方法一
Private Sub Form_Load()

Dim cn As New ADODB.Connection '声明并实例化一个ADO连接对象
Dim cnStr As String '声明一个连接字符串变量
Dim rsSchema As New ADODB.Recordset '声明并实例化一个记录集对象
'设置连接当前目录下“MyAccess.mdb”之连接字符串
cnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\MyAccess.mdb;Persist Security Info=False;"
cn.Open cnStr '打开与该数据库的连接
Set rsSchema = cn.OpenSchema(adSchemaTables) '打开数据库所有表记录集
'循环将所有表名逐个写入列表框
Do Until rsSchema.EOF
If rsSchema!TABLE_TYPE = "TABLE" Then
List1.AddItem rsSchema!TABLE_NAME
End If
rsSchema.MoveNext
Loop
rsSchema.Close '关闭记录集
Set rsSchema= Nothing '释放记录集对象
cn.Close '关闭连接
Set cn = Nothing '释放连接对象

End Sub

方法二
ACCESS数据库系统表"MsysObjects"里存放着所有数据表的资料,但是其访问权限默认为不开放。如果不嫌设置ACCESS数据库系统表权限麻烦,下列VB代码可以直接读取"MsysObjects"里记载的已保存表名信息,并于窗体加载时将得到的全部表名写入列表框里。

首先要设置读取ACCESS数据库系统表"MsysObjects"的权限,方法如下:
打开ACCESS数据库-->菜单-->工具-->选项 打开选项对话框,于视图选项卡 勾选“系统对象”点击“确定”按钮;
跟着,菜单-->工具-->安全-->用户与组权限 打开“用户与组权限”对话框,于权限选项卡 选择 “管理员、"MsysObjects"表 于权限框勾选“读取数据”点击“确定”按钮。

***注意为了确保ACCESS数据库的安全,设置完权限后,应将系统对象重新隐藏。
菜单-->工具-->选项 打开选项对话框,于视图选项卡 取消勾选“系统对象”
点击“确定”按钮。

Private Sub Form_Load()
Dim cn As New ADODB.Connection '声明并实例化一个ADO连接对象
Dim cnStr As String '声明一个连接字符串变量
Dim rs As New ADODB.Recordset '声明并实例化一个记录集对象
Dim sqlStr As String '声明一个SQL查询字符串变量
'设置连接当前目录下“MyAccess.mdb”之连接字符串
cnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False;"
cn.Open cnStr '打开与该数据库的连接
rs.CursorLocation = adUseClient '设置为客户端游标
'设置查询表名列表之SQL语句
sqlStr = "select Name from MsysObjects where type=1 and Flags=0"
rs.Open sqlStr, cn '打开数据库表记录集
'因为直接读取“MsysObjects“得到的表名列表秩序混乱,故这里强制对表名进行排序
rs.Sort = "Name ASC"
'循环逐个将表名放置到列表框里
Do Until rs.EOF
List1.AddItem rs!Name
rs.MoveNext
Loop
rs.Close '关闭记录集
Set rs = Nothing '释放记录集对象
cn.Close '关闭连接
Set cn = Nothing '释放连接对象
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式