我有与MS SQL Server连接的Access数据库项目。数据(表)存储在Ms SQL服务器中,而表单和报表存储在Access .ADP文件中。无法使用“设计”视图创建查询,表,视图,但是可以使用SQL查询创建表和视图并将其存储在服务器上。我没有SQL Server Management Studio女士,也无法在办公室的计算机上安装它。
因此,我要获取的是动态生成的SELECT SQL查询数据表,以便临时查看结果以进行数据分析。我已经在表单中放置了一个文本框和一个按钮,并且想要显示一个数据表,其中包含单击按钮时写在文本框中的SQL查询结果。
我尝试了此操作,但是它对我不起作用,而且似乎也不是我想要的:
MS Access VBA-在数据表子窗体中显示动态生成的SQL结果
我还尝试通过将查询分配给表单的Recordsource属性来进行尝试。它显示空白数据表,但数据表下方的导航窗格显示实际检索到的记录数。因此,它正在工作,但未显示数据。
我尝试过(来自http://www.pcreview.co.uk/forums/create-query-dynamically-vba-t3146896.html):
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim strSQL As String
Set db = CurrentDb
strSQL = "select * from analysts"
Set qd = db.CreateQueryDef("NewQueryName", strSQL)
DoCmd.OpenQuery "db.NewQueryName"
它显示运行时错误91,未在行上设置对象变量或With块变量 Set qd = db....
并且(在同一页面上):
Dim strSql As String
strSql = "select * from analysts"
CurrentDb.QueryDefs("qryExport").SQL = strSql
DoCmd.OpenQuery "qryExport"
返回相同的错误就行了CurrentDb.QueryDefs....
。
有什么想法或解决方法吗?
这似乎效率不高,但是可以正常工作并且有点令人满意:
DoCmd.RunSQL "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS " & _
"WHERE TABLE_NAME = 'tv') DROP VIEW tv"
DoCmd.RunSQL "create view tv as " & txtQry
DoCmd.OpenView "tv"
在这里,我正在按钮的click事件中创建一个临时VIEW(tv)。在创建视图之前,我要检查是否存在同名视图。如果存在,则将其删除,以便可以使用不同的查询创建具有相同名称的新视图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句