ASP.NET VB 使用命令行参数打开 .accdb 数据库的网站

ASP.NET VB Web Site that open .accdb database with command line parameters

是否可以打开包含命令行参数的 .mdb/.accdb 文件(客户端或服务器端)?

我最终想要完成的是在 Outlook 电子邮件中嵌入一个 link(带有参数)(通过按钮的 OnClick VBA 在另一个 Access 数据库中生成)以及当收件人单击 link,它会自动打开 .mdb/.accdb 文件,他们可以在其中打印基于这些参数的报告的当前版本。

第一次尝试

最初,我使用位于我们其中一台服务器上的批处理文件执行此操作(在生成的电子邮件中向该批处理文件嵌入 link):

@echo off
xcopy "\server\share\thisdb.accdb" "C:\local\*.*" /Y
start msaccess.exe "C:\local\thisdb.accdb" /cmd "param1;param2"

...但是,这显然会导致 UAC 和整体电子邮件安全问题。

第二次尝试

因此,在与大学讨论后,他们建议建立一个网站。没问题!在同一天建立了一个 ASP.NET VB 网站和 运行,并且弄清楚了如何将查询字符串从 link 传递和获取到网站。

尝试在客户端 and/or 服务器上打开 Access 时出现问题...

我试过了...

我为什么要这样做

很长一段时间以来,我只是在 VBA 中完成了以下操作:

  1. 自动生成电子邮件
  2. 将多个报告导出(并附加)为 PDF 文件
  3. 显示了电子邮件

随着时间的推移,这会在我们的服务器上占用大量 space 并导致最终用户查看过时的信息。我的最终目标是创建一个实现以下目标的解决方案:

  1. 更小的电子邮件大小(大大有利于我们的电子邮件服务器)
  2. 最终用户点击电子邮件中嵌入的 link 的能力(没有任何 安全问题)并打开报告的当前版本
  3. 所有这一切都在与打开相同的鼠标点击(给予或采取鼠标点击)中完成 Outlook 电子邮件中的附件 PDF

非常感谢help/suggestions:)

您不应该复制应用程序(前端)数据库。保留在本地,只复制后端数据库,其中的表链接到前端。

有关在本地托管前端的指南:

Deploy and update a Microsoft Access application in a Citrix environment

找到后,您可以使用 /x 从命令行切换到 运行 内部宏来调用它:

Command-line switches for Access

对于那些仍然想这样做的人..

对于那些仍然想这样做的人,我可以做到以下几点:

  • 创建 SQL 存储过程(具有 xp_cmdshell 的锁定管理员权限),通过 cmd 和参数删除、重新创建和运行计划任务(链接 here and here)

    select @cmdstring = 'SchTasks /Delete /TN ""tt_' + @param1 + 'SCExport' + @param2 + 'PDF"" /F' exec master.dbo.xp_cmdshell @cmdstring, NO_OUTPUT

    select @cmdstring = 'SchTasks /Create /S ' + @@SERVERNAME + ' /RU useru /RP userp /XML "' + @xmlfilename + '" /TN "tt_' + @param1 + 'SCExport' + @param 2 + 'PDF"' exec master.dbo.xp_cmdshell @cmdstring, NO_OUTPUT

    select @cmdstring = 'SchTasks /Run /TN "tt_' + @param1 + 'SCExport' + @param2 + 'PDF"' exec master.dbo.xp_cmdshell @cmdstring, NO_OUTPUT

    • 计划任务是通过生成的XML文件生成的(使用函数从XML字符串here创建文件)所以我可以正确传递参数通过它到我正在使用的批处理文件(创建和导出虚拟任务将为您提供完成此操作所需的 XML 字符串)

      + ' <Exec>' + ' <Command>"C:\pathtobat\batfile.bat"</Command>' + ' <Arguments>' + @param1 + ' ' + @param2 + '</Arguments>' + ' </Exec>'

    • 批处理文件打开并将参数传递到我的 Access 前端数据库的命令行

      start "" "C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" "C:\pathtoAccessdb\Accessdb.accdb" /cmd "%1;%2"

我决定要做什么...

由于我们公司拥有 SQL Server 2008 R2 Standard 的完整版本(正确设置了 SSRS),我决定简单地在 SSRS 中重建这三个报告并放一个 link在 VBA 生成的发送给 SSRS 托管报告的电子邮件中(包括 URL 中的参数):

http://thisserver/ReportServer/Pages/ReportViewer.aspx?%2fMyReportApp2%2fMyReport&rs:Command=Render&Param1=Value