Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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查询不像Access查询那样运行_Vba_Ms Access_Jet - Fatal编程技术网

VBA查询不像Access查询那样运行

VBA查询不像Access查询那样运行,vba,ms-access,jet,Vba,Ms Access,Jet,我为您即将收到的一组代码道歉。问题是:为什么我的查询在设计窗口中工作(请注意,Debug.Print.CommandText输出我放入access查询中的确切文本),但提出了对象的方法“Execute”失败,并且没有运行插入查询。代码如下: cnn.BeginTrans 'Begin deletion cmdText = "DELETE * FROM tblB1B2" Set cmd = New ADODB.Command With cmd .Co

我为您即将收到的一组代码道歉。问题是:为什么我的查询在设计窗口中工作(请注意,
Debug.Print.CommandText
输出我放入access查询中的确切文本),但提出了对象的方法“Execute”失败,并且没有运行插入查询。代码如下:

    cnn.BeginTrans 'Begin deletion
    cmdText = "DELETE * FROM tblB1B2"
    Set cmd = New ADODB.Command
    With cmd
        .CommandType = adCmdText
        .ActiveConnection = cnn
        .CommandText = cmdText
        .Execute
    End With
    cnn.CommitTrans 'Commit Deletion

    cnn.BeginTrans 'Begin update
    cmdText = "INSERT INTO tblB1B2 IN '" & toDB & "' " & _
                "SELECT interne AS interne, groupe AS groupe, MAX(itemref) AS [item], largeur AS largeur, hauteur AS hauteur, local AS [local], etage AS etage, partie AS partie, dessin AS dessin, datezonage AS datezonage, externe AS externe, erreur AS erreur, tag_hndl AS tag_hndl, tag_dessin AS tag_dessin, pobj_hndl AS pobj_hndl, pobj_type AS pobj_type, pobj_bname AS pobj_bname, zpl_hndl AS zpl_hndl, id AS id, Sidewalk AS Sidewalk, BarrierFreePathOfTravel AS BarrierFreePathOfTravel, Signage AS Signage, Hardware AS Hardware, PowerDoorOperator AS PowerDoorOperator, PDOMountHeight AS PDOMountHeight, ClearWidth AS ClearWidth, ClearSpace AS ClearSpace, ManoeuveringSpace AS ManoeuveringSpace, TwoDoorsInASeries AS TwoDoorsInASeries, Comments AS [Comments] " & _
                "FROM " & _
                    "(SELECT interne, groupe, [item] AS itemref, largeur, hauteur, local, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, [Comments] " & _
                    "FROM tblB1B2 IN '" & dbArray(0) & "' " & _
                "UNION ALL " & _
                    "SELECT interne, groupe, [item] AS itemref, largeur, hauteur, local, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, [Comments] " & _
                    "FROM tblB1B2 IN '" & dbArray(1) & "' " & _
                "UNION ALL " & _
                    "SELECT interne, groupe, [item] AS itemref, largeur, hauteur, local, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, [Comments] " & _
                    "FROM tblB1B2 IN '" & dbArray(2) & "' " & _
                ") AS FullTable " & _
              "GROUP BY interne, groupe, largeur, hauteur, local, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, [Comments]"

    Set cmd = New ADODB.Command
    With cmd
        .CommandType = adCmdText
        .ActiveConnection = cnn
        .CommandText = cmdText
        Debug.Print .CommandText
        .Execute
    End With
    cnn.CommitTrans 'Commit update
复制粘贴到access查询时打印的文本运行良好;但在VBA中会产生此错误。为什么?我怎样才能避开它?我使用的是我不知道的关键字吗

另外,是否有一种方法可以在不指定每个字段的情况下执行此查询?(注意
MAX(itemref)

井。。在这里发布后(像往常一样,经过大约3个小时的尝试和失败)。。我得到了它。原来“local”是JET中的保留关键字。我必须做一些创造性的操作,让它认识到这是一个领域。对于其他有此类问题的人,以下是修复的.CommandText:

cmdText = "INSERT INTO tblB1B2 IN '" & toDB & "' " & _
                    "SELECT interne AS interne, groupe AS groupe, MAX(itemref) AS item, largeur AS largeur, hauteur AS hauteur, localref AS [local], etage AS etage, partie AS partie, dessin AS dessin, datezonage AS datezonage, externe AS externe, erreur AS erreur, tag_hndl AS tag_hndl, tag_dessin AS tag_dessin, pobj_hndl AS pobj_hndl, pobj_type AS pobj_type, pobj_bname AS pobj_bname, zpl_hndl AS zpl_hndl, id AS id, Sidewalk AS Sidewalk, BarrierFreePathOfTravel AS BarrierFreePathOfTravel, Signage AS Signage, Hardware AS Hardware, PowerDoorOperator AS PowerDoorOperator, PDOMountHeight AS PDOMountHeight, ClearWidth AS ClearWidth, ClearSpace AS ClearSpace, ManoeuveringSpace AS ManoeuveringSpace, TwoDoorsInASeries AS TwoDoorsInASeries, Comments AS Comments " & _
                    "FROM " & _
                        "(SELECT interne, groupe, item AS itemref, largeur, hauteur, [local] AS localref, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, id, Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, Comments " & _
                        "FROM tblB1B2 IN '" & dbArray(0) & "' " & _
                    "UNION ALL " & _
                        "SELECT interne, groupe, item AS itemref, largeur, hauteur, [local] AS localref, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, Comments " & _
                        "FROM tblB1B2 IN '" & dbArray(1) & "' " & _
                    "UNION ALL " & _
                        "SELECT interne, groupe, item AS itemref, largeur, hauteur, [local] AS localref, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, Comments " & _
                        "FROM tblB1B2 IN '" & dbArray(2) & "' " & _
                    ") AS FullTable " & _
                  "GROUP BY interne, groupe, largeur, hauteur, localref, etage, partie, dessin, datezonage, externe, erreur, tag_hndl, tag_dessin, pobj_hndl, pobj_type, pobj_bname, zpl_hndl, [id], Sidewalk, BarrierFreePathOfTravel, Signage, Hardware, PowerDoorOperator, PDOMountHeight, ClearWidth, ClearSpace, ManoeuveringSpace, TwoDoorsInASeries, Comments"

注意:在
local
字段周围,我必须在子查询中将
[local]设为localref
,在主查询中将
localref设为[local]
,以避免关键字和循环引用。

很好,您不需要别名保留字,方括号应该可以解决问题。是的,但由于某种原因,它导致了一个循环引用,其中[local]作为[local],而不是任何其他字段作为字段引用。。不知道为什么。