2016-10-16 2 views
0

Ich möchte eine Abfrage an R senden und R-Skript über eine Befehlsschaltfläche in Microsoft Access ausführen. Hat jemand das schon einmal gemacht und kann vorschlagen, wie man das umsetzt?Ausführen von R-Skript über die Befehlsschaltfläche in Microsoft Access und Weiterleiten von Daten aus Microsoft Access an R

Daten werden in Microsoft Access gespeichert und die Abfrage basiert auf einer Schaltfläche, auf die der Benutzer in Microsoft Access klickt.

Dank

Antwort

2

Rufen Sie einfach einen Shell Befehl mit dem automatisierten Rscript.exe. Zuvor müssen Sie jedoch möglicherweise Ihre Abfragedaten in ein Format exportieren, das R lesen kann, z. B. csv oder txt. Alternativ können Sie R über RODBC mit der Datenbank verbinden.

Im Befehlszeilenaufruf können Sie Parameter wie den Namen der Abfrage (für die RODBC-SQL-Anweisung) oder den csv/txt-Pfad für R senden, indem Sie die Shell-Zeichenfolge mit durch Leerzeichen getrennten Werten verketten. Dann verwenden Sie commandArgs() Liste in R, um Werte zu erhalten.

Auch doppelte Anführungszeichen sind erforderlich, wenn Pfadnamen Leerzeichen enthalten. Und wenn Sie Rscript in Ihrer Umgebungsvariablen PATH haben, können Sie den Befehl Rscript direkt verwenden. Andernfalls geben Sie den vollständigen Pfad ein, in dem sich Rscript.exe befindet (normalerweise im Installationsordnerordner). Beispiele auf Kommentar:

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 
+0

Sorry für vorherige ärgerliche Kommentare:

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 

oder ein anspruchsvolleres Shell Anruf einen Return-Code für die Fehlerbehandlung zu erhalten. Ich konnte keine gute Dokumentation über diese Methode finden, aber Sie scheinen das herauszufinden. Ich war in der Lage, die "einfache" Version Ihres Codes zu erhalten, mit Ausnahme für ein Detail zu arbeiten. http://stackoverflow.com/questions/40538004/prombelm-with-r-script-execution-from-access-2016-command-button Auch habe ich versucht, den Pfad in die "fancy" Version Ihres Codes aber zu ersetzen Ich bekomme jedes Mal eine Fehlermeldung, nicht sicher warum? Danke für Ihre Hilfe – user3781528

0

Sie können R-Code von Microsoft Access mit VBA ausführen, finden https://www.r-bloggers.com/a-million-ways-to-connect-r-and-excel/

Um eine Befehlsschaltfläche für Ihren VBA-Code zu erstellen, 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

In Ihrer R Code sehen, können Sie zugreifen Microsoft Access-Datenbank mit ODBC, siehe http://rprogramming.net/connect-to-ms-access-in-r/

Wenn Sie Probleme mit 64-Bit-Windows und R haben, siehe How to connect R with Access database in 64-bit Window?