在执行到创建字段的第一句"Set myfie(1) = tdmyTable.CreateField("项目", dbText, 20)”就发生“类型不匹配”,我的源程序如下Dim i As Integer, j As Integer
Dim tdmyTable As TableDef
Dim dbDatabase As Database
Dim rsx As Recordset
Dim myfie(1 To 8) As FieldSet dbDatabase = CreateDatabase(App.Path & "\databases\" & mydate & ".mdb", dbLangGeneral, dbEncrypt)For i = 1 To 32
  
  Set tdmyTable = dbDatabase.CreateTableDef(mysort(i))
       
       Set myfie(1) = tdmyTable.CreateField("项目", dbText, 20)
       Set myfie(2) = tdmyTable.CreateField("合计", dbLong)
       set myfie(3)=...........请问我错在哪?我该怎样改?

解决方案 »

  1.   

    用DAO创建Access数据库的实例:'应用DAOOption ExplicitPrivate Sub Form_Load()
    Dim PathName As String
    PathName = App.PathDim MyTable As TableDef, MyField As Field
       Dim MyDatabase As Database
       Set MyDatabase = CreateDatabase(PathName + "\Favorite.mdb", dbLangGeneral)
       
       Set MyTable = MyDatabase.CreateTableDef("Subclass")
       Set MyField = MyTable.CreateField("Name", dbText, 50)
       MyTable.Fields.Append MyField
       MyDatabase.TableDefs.Append MyTable
       
       Set MyTable = MyDatabase.CreateTableDef("AllRecords")
       Set MyField = MyTable.CreateField("Name", dbText, 50)
       MyTable.Fields.Append MyField
       Set MyField = MyTable.CreateField("Source", dbText, 50)
       MyTable.Fields.Append MyField
       MyDatabase.TableDefs.Append MyTableEnd Sub
      

  2.   

    也许是在创建数据库的时候出问题
    创建一个工作区看看
    Dim wrk as Workspace
    set wrk =DbEngine.Workspace(0)
    Set dbDatabase = wrk.CreateDatabase(App.Path & "\databases\" & mydate & ".mdb", dbLangGeneral, dbEncrypt)
      

  3.   

    我的程序只是CreateField那里出错了,我看了很多遍也不知道错在哪。
      

  4.   

    to  miranda516(美年达) 
    创建一个工作区还是不行,还是在CreateField那里出错了.
    createfield是不是不能支持field是用数组建的,还是别的呢?
      

  5.   

    其实我的程序对比CityBird(鹰扬九洲——只有想不到的,没有做不到的) 的例子是一点错都没有,怎么老在Set myfie(1) = tdmyTable.CreateField("项目", dbText, 20)”说我“类型不匹配”呢,真奇怪
      

  6.   

    单看这一句是没有错误的
    Set myfie(1) = tdmyTable.CreateField("项目", dbText, 20)
    你能不能将你的代码全部贴出来!
      

  7.   

    For i = 1 To 32
      
      Set tdmyTable = dbDatabase.CreateTableDef(mysort(i))
           这个有问题导致后面的问题
      

  8.   

    我昨天出差没能看,我家又不能上网现在看了,今天才看到我的源程序把字段的数组改了,但还是在Set proj = tdmyTable.CreateField("项目", dbText, 20)出错,说“类型不匹配”Dim i As Integer, j As Integer
    Dim tdmyTable As TableDef
    Dim dbDatabase As Database
    Dim rsx As Recordset
    Dim proj As Field
    Dim totl As Field
    set value1 as field
    set value2 as field
    set value3 as filed
    Dim mymessitem(1 To 5) As String
    Dim myitems(1 To 20) As String
    Dim mysort(1 To 32) As Stringmysort(1) = "下属公司1"
    mysort(2) = "下属公司2"
    mysort(3) = "下属公司3"

    一共定义了30个下属公司Set dbDatabase = CreateDatabase(App.Path & "\databases\" & mydate & ".mdb", dbLangGeneral, dbEncrypt)For i = 1 To 32
      
      Set tdmyTable = dbDatabase.CreateTableDef(mysort(i))
           
           Set proj = tdmyTable.CreateField("项目", dbText, 20)
           Set totl = tdmyTable.CreateField("合计", dbLong)
           set value1=tdmyTable.CreateField("数值1", dbLong)
           set value2=tdmyTable.CreateField("数值2", dbLong)
           set value3=tdmyTable.CreateField("数值3", dbLong)
                    tdmyTable.Fields.Append proj
            tdmyTable.Fields.Append totl
            tdmyTable.Fields.Append value1
            tdmyTable.Fields.Append value2
            tdmyTable.Fields.Append value3       dbDatabase.TableDefs.Append tdmyTable
           
           Set rsx = dbDatabase(mysort(i))
           
           For j = 1 To 20
            
            rsx.AddNew        rsx!项目 = myitems(j)
           
           Next j
    Next idbDatabase.Close
    End Sub
      

  9.   

    to nicolas1999king(恋伶) For i = 1 To 32
      
      Set tdmyTable = dbDatabase.CreateTableDef(mysort(i))
    这句是不能改了,我有32个下属公司,如果一个一个的CeatetalbleDef,累死我了,只好这样了。我究竟哪错了?
      

  10.   

    我把for i=1 to 32 next去掉了
    并把mysort(i)改为"下属公司1",结果还是在在Set proj = tdmyTable.CreateField("项目", dbText, 20)出错,说“类型不匹配”
    这是干麻?
      

  11.   

    问题已解决了!!!!!!哈哈哈哈哈!!!!!!!!!!!!!!!
    谢谢ch21st(风尘鸟) !!!!!!!!!!ch21st(风尘鸟) 快到这里,我要给分了
    Sub CreateFieldX()    Dim dbsNorthwind As Database
        Dim tdfNew As TableDef
        Dim fldLoop As Field
        Dim prpLoop As Property    Set dbsNorthwind = OpenDatabase("Northwind.mdb")    Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")      With tdfNew
            .Fields.Append .CreateField("TextField", dbText)
            .Fields.Append .CreateField("IntegerField", dbInteger)
            .Fields.Append .CreateField("DateField", dbDate)
        End With    dbsNorthwind.TableDefs.Append tdfNew
    不要用你的字段数组了
      

  12.   

    你是不是同时又引用了ADO,并且ADO的优先级又比DAO高,是吗?如果是这样,你就把DAO的优先级改成比ADO高就可以了。
      

  13.   

    又引用了ADO,并且ADO的优先级又比DAO高