使用Cursor将t-SQL查询转换为Microsoft Access

时间:2013-10-19 15:18:16

标签: sql tsql vba ms-access ms-access-2010

我的一位经理创建了一个Access数据库,并正在进行一些数据分析 - 如果情景如何。根据不同的条件,他在Access中生成一份报告。

他让我做了一些数据操作,所以我将数据库导入到SQL中并编写了一个带有游标的例程,该游标可以完成他想要的操作。然后我将结果导出回Access。在我使用游标之前得到任何热量之前,这应该是一次性的交易,所以这是我完成它的最快方式。

正如您所期望的那样,现在他希望我一直运行它并要求我将我的例程转换为Access,以便他可以运行它。在你告诉我只使用SQL之前,他非常关注Access并经常出差和离线。

所以,我的问题是:是否有一种“简单”的方法将带有游标的T-SQL查询转换为Access?自从我使用Access以来已经很长时间了,但我怀疑它必须在VBA中重写。我想也许另一个解决方案是从Access调用查询并在SQL中运行它,但我不知道是否可以这样做,或者它是否适用于我的情况,因为他离线(也许在他的笔记本电脑上安装SQL Express?)

任何建议都将不胜感激。

谢谢, 亚历克斯

1 个答案:

答案 0 :(得分:1)

这就是我解决这个问题的方法:

 1.Downloaded and install SQL server express in the user's machine.
 2.uploaded Access database structure and data to the local SQL.
 3.created the stored procedure that I wanted to run in the local SQL server.
 4.back in Access, deleted all the tables and recreated them as linked tables to SQL
 5.Create a form in Access with a big button that executes the stored procedure
    `Private Sub Command0_Click()
     Dim qdf As DAO.QueryDef
     Set qdf = CurrentDb.CreateQueryDef("")
     qdf.Connect = CurrentDb.TableDefs("ANY TABLE").Connect
     qdf.SQL = "EXEC dbo.[stored procedure name]"
     qdf.ReturnsRecords = False
     qdf.Execute
     Set qdf = Nothing`

存储过程截断一个重新填充其中一个表。因此,在执行它之后,我可以打开Access中的表并查看更改。我的经理可以继续使用Access和后端使用的SQL服务器。美好结局! :)