我在向MS Access Form添加一个按钮时遇到问题,该按钮将执行查询并在新窗口(采用任何格式)中打开结果。
两个主要问题是:
不幸的是,下面的代码不起作用。
Sub bQuery_Click()
Dim StrSQL As String
Dim username As String
username = Environ("USERNAME")
StrSQL = "SELECT EntryText, NameID FROM [I:\SharedDrive\Master DB.accdb;PWD=pwd;].Database WHERE NameID='" & username & "';"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, StrSQL, "I:\SharedDrive\file1.xlsx"
End Sub
答案 0 :(得分:1)
您能否/愿意将要查询的表添加为链接表?这样,您可以在前端数据库中创建查询,然后仅导出该查询,而不必在VBA中对SQL进行硬编码。
将该表添加为链接表将在TableDef
对象上公开该密码,但是似乎您已经在VBA中公开了该密码。如果还没有的话,可以锁定数据库以使用户难以打开VBA IDE(有许多策略可以做到这一点,例如创建ACCDE文件,用密码保护模块文件,并锁定功能区和键盘快捷键。
答案 1 :(得分:0)
只需在Access中创建查询,然后单击每个按钮即可更改SQL:
SQL
SELECT EntryText, NameID
FROM [I:\SharedDrive\Master DB.accdb;PWD=pwd;].Database
WHERE NameID='xLokos';
VBA
Sub bQuery_Click()
Dim qdef As QueryDef
username = Environ("USERNAME")
StrSQL = "SELECT EntryText, NameID" _
& " FROM [I:\SharedDrive\Master DB.accdb;PWD=pwd;].Database" _
& " WHERE NameID='" & username & "';"
Set qdef = CurrentDb.QueryDefs("mySavedQuery")
qdef.SQL = strSQL
Set qdef = Nothing 'SAVES QUERY
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, _
"mySavedQuery", _
"I:\SharedDrive\file1.xlsx"
End Sub