我想向R发送查询并从Microsoft Access中的命令按钮执行R脚本。有没有人以前这样做过,可以建议如何实现这个?
数据存储在Microsoft Access中,查询基于用户在Microsoft Access中单击的按钮。
由于
答案 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/
在您的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?