Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 试图将描述属性从数据库复制到外部数据库(错误3270)_Vba_Ms Access - Fatal编程技术网

Vba 试图将描述属性从数据库复制到外部数据库(错误3270)

Vba 试图将描述属性从数据库复制到外部数据库(错误3270),vba,ms-access,Vba,Ms Access,我已经从当前数据库中的现有表创建并操作了一个外部数据库 问题是我必须在新的数据库字段中操作“Description”属性 当我尝试从cereated外部数据库检索“Description”属性时,响应是“Description”不是属性(错误3270,“property not found”) 我怎么做呢 我尝试了以下代码: Sub Actualizacomentarios() Dim dbFinal As DAO.Database Dim tbl As DAO.TableDef Dim f

我已经从当前数据库中的现有表创建并操作了一个外部数据库

问题是我必须在新的数据库字段中操作“Description”属性

当我尝试从cereated外部数据库检索“Description”属性时,响应是“Description”不是属性(错误3270,“property not found”)

我怎么做呢

我尝试了以下代码:

Sub Actualizacomentarios()

Dim dbFinal As DAO.Database

Dim tbl As DAO.TableDef
Dim fld As DAO.Field

Dim tblFinal As DAO.TableDef
Dim fldFinal As DAO.Field
Dim prpFinal As DAO.Property
Set dbFinal = DBEngine.OpenDatabase("D:\Dropbox\Expedientes JLE nueva epoca activos\17002 - Fermin Torres. Programa\NuevoFoasat.accdb")

For Each tbl In CurrentDb.TableDefs

    If InStr(tbl.Name, "JLE_") > 0 Then

        For Each fld In tbl.Fields

            Set tblFinal = dbFinal.TableDefs(tbl.Name)
            Set fldFinal = tblFinal.Fields(fld.Name)

            fldFinal.Properties("Description") = fld.Properties("Description") 'HERE OCCURS ERROR

        Next fld

    End If

Next tbl

dbFinal.Close
Set dbFinal = Nothing

重写和工作。感谢@HansUp

Sub Actualizacomentarios()

Dim dbFinal As DAO.Database

Dim tbl As DAO.TableDef
Dim fld As DAO.Field

Dim tblFinal As DAO.TableDef
Dim fldFinal As DAO.Field
Dim prpFinal As DAO.Property
Set dbFinal = DBEngine.OpenDatabase("D:\Dropbox\Expedientes JLE nueva epoca activos\17002 - Fermin Torres. Programa\NuevoFoasat.accdb")

For Each tbl In CurrentDb.TableDefs

    If InStr(tbl.Name, "JLE_") > 0 Then

        For Each fld In tbl.Fields

            Set tblFinal = dbFinal.TableDefs(tbl.Name)
            Set fldFinal = tblFinal.Fields(fld.Name)

            On Error GoTo ErrorTrap

            If Nz(fld.Properties("Description"), "") <> "" Then

                Set prpFinal = fldFinal.CreateProperty("Description")
                prpFinal.Type = dbText
                prpFinal.Value = fld.Properties("Description")


                    fldFinal.Properties.Append prpFinal

                'Debug.Print fldFinal.Name, fldFinal.Properties("Description")

                fldFinal.Properties("Description") = fld.Properties("Description")

            End If

            On Error GoTo 0

        Next fld

    End If

Next tbl

dbFinal.Close
Set dbFinal = Nothing
Exit Sub

ErrorTrap:

    If Err.Number = 3367 Then

        Debug.Print "Property already exists on " & tbl.Name & " (Field: " & fld.Name & ")"

    Else
    Stop
        Debug.Print "Not Found or empty on " & tbl.Name & " (Field: " & fld.Name & ")"

    End If

    Resume Next

End Sub
Sub-Actualizacomentarios()
Dim dbFinal作为DAO.Database
将tbl设置为DAO.TableDef
模糊fld为刀场
Dim tblffinal为DAO.TableDef
将fldFinal设置为DAO.字段
Dim prpFinal作为DAO.Property
设置dbFinal=DBEngine.OpenDatabase(“D:\Dropbox\enquities JLE nueva epoca activos\17002-Fermin Torres.Programa\NuevoFoasat.accdb”)
对于CurrentDb.TableDefs中的每个tbl
如果仪表(tbl.Name,“JLE”)大于0,则
对于tbl.字段中的每个fld
Set tblFinal=dbFinal.TableDefs(tbl.Name)
设置fldFinal=tblFinal.Fields(fld.Name)
关于错误转到错误陷阱
如果新西兰(fld.Properties(“Description”),则
Set prpFinal=fldFinal.CreateProperty(“说明”)
prpFinal.Type=dbText
prpFinal.Value=fld.Properties(“说明”)
fldFinal.Properties.Append prpFinal
'Debug.Print fldFinal.Name,fldFinal.Properties(“说明”)
最终属性(“说明”)=最终属性(“说明”)
如果结束
错误转到0
下一个fld
如果结束
下一个tbl
dbFinal,结束
Set dbFinal=Nothing
出口接头
错误陷阱:
如果错误编号=3367,则
Debug.Print“属性已存在于”&tbl.Name&“(字段:&fld.Name&”)上”
其他的
停止
Debug.Print“在”&tbl.Name&“(字段:&fld.Name&”)上未找到或为空
如果结束
下一步继续
端接头

谢谢,@HansUp,我已经用你的想法重写了代码。如果你想看的话,那就看吧,速度快得出奇!当然你一定是在我发表评论之前开始的!:-)我在考虑这个主意,但你的想法是照明:)非常感谢