尝试从Excel运行Access查询

时间:2017-08-25 20:39:59

标签: excel-vba access-vba vba excel

我刚遇到两个问题。首先,我似乎无法从Excel中运行Access中的Make Table Query。我收到一条错误消息,指出“表格风险评级已经存在”'。必须有一种方法从Excel运行Make表查询。此外,更重要的是,我的代码似乎非常不稳定。如果我通过反复击中F8来运行它,一切正常。如果我通过按钮单击事件运行它,我会收到以下错误:'远程服务器计算机不存在或不可用'。看起来Excel正在失去与Access的通信。这只是猜测。这个东西在我的桌面上,所以我真的不认为远程机器不可用。

这是我的代码。

Sub RunQueriesInAccess()

Dim AC As Access.Application

    Set AC = CreateObject("Access.Application")
    strDatabasePath = ThisWorkbook.Path & "\Database1.accdb"
    With AC
        .OpenCurrentDatabase (strDatabasePath)
        .CurrentDb.Execute "qry_RISK_RATING"
        .CurrentDb.Execute "qry_Delete_ALLL"

            Set DB = AC.CurrentDb
            Set qry = DB.QueryDefs("qry_DATA_HIST")
            qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value
            qry.Execute

            Set qry = DB.QueryDefs("qry_LIMIT_HIST")
            qry.Parameters(0) = Worksheets("Impact Analysis New").Range("B1").Value
            qry.Execute

        .Quit
    End With

ActiveWorkbook.RefreshAll

End Sub

知道这里发生了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我要回答我所知道的事情,但不能复制模糊的不稳定。

使用 $em = $this->getEntityManager(); $rsm = new ResultSetMappingBuilder($em); $query = $em->createNativeQuery('SELECT a1.* FROM activity a1 INNER JOIN ( SELECT id, max(execution_date) MaxPostDate, objectelementtask_id FROM activity GROUP BY objectelementtask_id ) a2 ON a1.execution_date = a2.MaxPostDate AND a1.objectelementtask_id = a2.objectelementtask_id order by a1.execution_date desc', $rsm); $rsm->addRootEntityFromClassMetadata('AppBundle:Activity', 'a1'); $activities = $query->getResult(); ,您可以执行操作查询,但无法使用.CurrentDb.ExecuteCREATE TABLE查询覆盖表格。

但是,您可以使用SELECT ... INTO.DoCmd.SetWarnings False。 如果参数化查询也在创建表格,则可以使用.DoCmd.OpenQuery

您在代码段中使用了大量未声明的变量。我将为你声明它们并使用后期绑定.DoCmd.SetParameter,而不是你在那里的早期/晚期绑定组合。

Access.Application