表的个数为32个
代码如下:
Dim mydb As Database      '定义一个数据库
Dim mytable As TableDef   '定义一个数据表
    Set mydb = DBEngine.OpenDatabase(curpath & "\mdb\" & "yuanqijian.mdb")
 For i = 1 To 32
       tablename(i) = mydb.TableDefs(i - 1).Name
    Next i
前24个的表名称都对,但到第25个名称变成“MSysAccessObjects”
                        26个“MSysACEs”
                        27个“MSysObjects”真是百思不得其解,遇到过的朋友请帮忙!!!

解决方案 »

  1.   

    Dim mydb As Database      '定义一个数据库
    Dim mytable As TableDef   '定义一个数据表
    DIM TMPSTR AS STRING 
    Set mydb = DBEngine.OpenDatabase(curpath & "\mdb\" & "yuanqijian.mdb")
     For i = 1 To 32
          TMPSTR== mydb.TableDefs(i - 1).Name
          IF UCASE(LEFT$(TMPSTR,4))<>"MSYS" THEN
              tablename(i) = TMPSTR
          END IF
    Next i
      

  2.   

    是系统表,过滤即可
    下面没有测试If Left(mydb.tabledefs(i-1).Name, 4) <> "MSys" Then
    tablename(i) = mydb.TableDefs(i - 1).Name
    End If
      

  3.   

    以MSys开头的是系统表,需要过滤一下
     DIM J as integer
     For i = 1 To 32
         IF UCASE(LEFT(mydb.TableDefs(i - 1).Name,4))<>"MSYS" THEN
             tablename(j) = mydb.TableDefs(i - 1).Name
             j=j+1
         END IF
     Next i