如下代码:
conn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Dbpath & ""
Set rs = conn.OpenSchema(adSchemaTables)
Do Until rs.EOF
Combo1.AddItem rs!Table_name 
rs.MoveNext
Loop
我的数据库里的表为a,b.可为何显示的列表为:a
MSysAccessObjects
MSysACEsSYSTEM 
MSysModules
MSysModules2
MSysObjectsSYSTEM 
MSysQueriesSYSTEM 
MSysRelationshipsSYSTEM 
b
这是什么原因?怎么将中间的这些东东去掉?望各位大虾指点。

解决方案 »

  1.   

    试试conn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Dbpath & ""
    Set rs = conn.OpenSchema(adSchemaTables)
        Do Until rs.EOF
            If rs!Table_Type = "TABLE" Then
                Combo1.AddItem rs!Table_name
            End If
            rs.MoveNext
        Loop
      

  2.   

    没有用!:(  不过少了一些!:目
    a
    MSysAccessObjects
    MSysModules
    MSysModules2
    b
      

  3.   

    呵呵,你的机子还真怪
    你这样
    msgbox rs!Table_name & vbtab & rs!Table_Type 把所有的表名和类型都列出来,看看a,b的类型和其它系统表有什么不同
    用那种类型过滤就行了我的用Table过滤就只有我自己的表了
      

  4.   

    我看过了,好像类型都是TABLE的,:(
      

  5.   

    怎么好像呢,呵呵
    你试过了么,看看我的显示结果MSysAccessObjects   ACCESS TABLE
    MSysAccessXML       ACCESS TABLE
    MSysACEs            SYSTEM TABLE
    MSysObjects         SYSTEM TABLE
    MSysQueries         SYSTEM TABLE
    MSysRelationships   SYSTEM TABLE
    students            TABLE
      

  6.   

    晕,怎么会这样,我的是:
    a TABLE
    MSysAccessObjects TABLE
    MSysModules TABLE
    MSysModules2 TABLE
    b TABLE
    我的是access97数据库!有关系吗?
      

  7.   

    转换为access97数据库之后的显示MSysACEs       SYSTEM TABLE
    MSysModules    ACCESS TABLE
    MSysModules2   ACCESS TABLE
    MSysObjects    SYSTEM TABLE
    MSysQueries    SYSTEM TABLE
    MSysRelationships    SYSTEM TABLE
    students    TABLE
      

  8.   

    啊,怎么会这样!我哭~~~!
    为什么我的会只显示是“TABLE”呢?
    加什么前缀啊?
      

  9.   

    加了ms的前缀过滤,不过还是不知道为什么这几个系统的表只是显示“table”呢?
      

  10.   

    你到其它机子上试试,看看什么环境什么结果我的是WinXP + OfficeXP +vb英文6。0+sp5 + VS.net2003