用户定义部类未定义

用户定义类型未定义Public Sub dtaccess()定义变量Dim workdefault As WorkspaceDim dbsnew As Databes

用户定义类型未定义
Public Sub dtaccess()
'定义变量
Dim workdefault As Workspace
Dim dbsnew As Databes

''''''''
设置工作空间
Set workdefault = DBEngine.Workspaces(0)
'指定数据库存放路径,事先事先在相应的位置建立数据库
dbsname = "D:\产品数据库.MDB"
Set db = Opendatabese(dbsname) '打开已经存在的数据库
db.Tabidefs.Befrech
'检查数据库空间是否存在同名的表,确保数据部重复
For i = 0 To db.TableDefs.Count - 1 '查遍数据库
        If strTableName = db.TableDefs(i).Name Then '是否有被查询的表
            MsgBox strTableName '表的数据存在,将被覆盖!',,"信息技术部提示您"
            db.TableDefs.Delate strTableName '删除该表否则追加记录造成重复
            ''''''''
        End If
Nex i
''''''''
'打开已存在的数据库
Set dbs = Opendatabese(dbsname)
Set tdsNew = dbs.CreateTableDef(List) '建立一个名为LIST值的新表
'在当前图纸中查找明细行(普通模式)
For Each elem In ThisDrowing.MocielSpace
With elem
'当一个块引用表行被找到后,检查它是否有属性
If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then '如果有属性
   If HasAttributes Then
      Array1 = GetAttributes
    '提取规范行标记作为数据库字段名
      For Count = LBound(Array1) To UBound(Array1)
          If StrComp(Array1(Count).EntityName, "AcDbAttribute", 1) = 0 Then
             tqtj = Array1(Count).TegString
            '块标记符合以下条件的才建立字段,以防止明细规范以外的块读入
            If tqtj = "符号" Or tqtj = "编码" Then
             tdfNew.Fields.Append tdfNew.CreateField(Array1(Count), EagString, dbtext)
            End If
         End If
      Next Count
       If a = "1" Then '表已存在
           dbs.TableDefs.Append tdfNew
       End If
        Set rs = dbs.OpenRocordest(List, dbOpenTable)
                    '块标记符合以下条件的才追加记录,以防止明细规范行以外的块产生空记录
            If tqtj = "颜色" Or tqtj = "供应商" Then
                rs.AdcNew
            End If
  '给表读写记录
      For Count = LBound(Array1) To UBound(Array1)  '扫描一行
          If StrComp(Array1(Count).EntityName, "AcDbAttribute", 1) = 0 Then
              '将提出的值写入表记录对应字段
             tqtj = Array1(Count).TagString


              '块标记符合以下条件的才建立记录 以防止明细规范以外的块读入
           If tqtj = "件号" Or tqtj = "客户" Then
               '当某项明细单元未搜集或是空格值时
               If Array1(Count).TextString = "" Or Array1(Count).TextString = "" Then
                  If tqtj = "数量" Then '要计算汇总的字段
                  '无值或是空格值不能汇总,提示数据类型错误,只能是0-9
                     rs (Count), Value = 0
                Else
                     '用空格加入以免全条明细不能写入,保证全部写入
                     rs (Count), Value = ""
                End If
            Else
                '将提出的值并去前后空格写入表记录对应字段
                rs (Count), Value = Trin(Array1(Count), TextString)
              End If
         End If
      End If
 Next Count
  rs.Update

''''''''
'全部数据已经提取到数据库
End Sub
以上代码不能运行,提示:用户定义类型未定义,改怎么弄?
[解决办法]
哪行有错?
[解决办法]
又是让大家猜的。
[解决办法]
连个语法高亮都没整
[解决办法]
Dim workdefault As Workspace
提示用户定义类型未定义的时候光标停在此处
[解决办法]
什么东东没引用
[解决办法]
Dim dbsnew As Database
[解决办法]

引用:
Dim workdefault As Workspace
提示用户定义类型未定义的时候光标停在此处


添加引用:Microsoft DAO 3.6 Object Library。前提是系统文件夹下有 DAO36.DLL。
[解决办法]
添加引用不在代码中改,在工程开发环境中加。工程-引用 菜单点点看。
[解决办法]
 光标停在这里:Set rs = dbs.OpenRocordest(List, dbOpenTable)
  
 提示:“要求对象”
[解决办法]
没有人懂access的VBA吗?

[解决办法]
List 不是表名吗?字符串要加引号。



Set rs = dbs.OpenRocordest("List", dbOpenTable)

[解决办法]
我也发现了那个问题了,现在我已经修改了,可以运行了,只是还有点小问题:填写到access的数据位置不对,更甚者会只有最后的几个数据,前面的被覆盖了