从Microsoft Access中的命令按钮执行R脚本并将数据从Microsoft Access传递到R

时间:2016-10-16 23:34:06

标签: sql-server r ms-access

我想向R发送查询并从Microsoft Access中的命令按钮执行R脚本。有没有人以前这样做过,可以建议如何实现这个?

数据存储在Microsoft Access中,查询基于用户在Microsoft Access中单击的按钮。

由于

2 个答案:

答案 0 :(得分:2)

只需使用自动 Rscript.exe 调用Shell命令即可​​。但是,首先,您可能需要将查询数据导出为R可以读取的格式,例如csv或txt文件。或者,让R通过RODBC连接到数据库。

在命令行调用中,您可以通过将shell字符串与空格分隔的值连接来发送R等参数,例如查询名称(对于RODBC SQL语句)或csv / txt路径。然后在R中使用commandArgs()列表来接收值。

此外,如果路径名称有任何空格,则需要双引号。如果您的环境变量PATH中有 Rscript ,则可以直接使用Rscript命令。否则,请输入 Rscript.exe 所在的完整路径(通常位于安装bin文件夹中)。示例注释掉:

Private Sub QueryCmdButton_Click()
  DoCmd.TransferText acExportDelim, , "qryToExport", "C:\Path\To\CSV.csv"

  Shell "Rscript ""C:\Path\To\R\script.R""", vbNormalFocus
  ' Shell "C:\Path\To\Rscript.exe ""C:\Path\To\R\script.R""", vbNormalFocus    
  ' Shell "Rscript ""C:\Path\To\R\script.R""" & " " & qryName & " " & csvPath, vbNormalFocus

  MsgBox "Successfully processed R script!", vbInformation
End Sub

或更复杂的Shell调用以接收错误处理的返回代码:

Sub RunRscript()
   Dim shell As Object
   Dim path As String
   Dim waitTillComplete As Boolean: waitTillComplete = True
   Dim style As Integer: style = 1
   Dim errorCode As Integer

   DoCmd.TransferText acExportDelim, , "qryToExport", "C:\Path\To\CSV.csv"

   Set shell = VBA.CreateObject("WScript.Shell")

   path = "RScript ""C:\Path\To\R\script.R"""    
   errorCode = shell.Run(path, style, waitTillComplete)

   Set shell = Nothing
End Sub

答案 1 :(得分:0)

您可以使用VBA从Microsoft Access运行R代码,请参阅https://www.r-bloggers.com/a-million-ways-to-connect-r-and-excel/

要为VBA代码创建命令按钮,请参阅https://social.technet.microsoft.com/Forums/office/en-US/d3640d72-e91f-4d86-a52e-6d3a66888bf8/how-to-create-a-button-in-access-2010-that-runs-vba-code?forum=officesetupdeployprevious

在您的R代码中,您可以使用ODBC访问Microsoft Access数据库,请参阅http://rprogramming.net/connect-to-ms-access-in-r/

如果您遇到64位Windows和R的问题,请参阅How to connect R with Access database in 64-bit Window?