2016-07-29 9 views
0

Ich versuche, DataTable Ausgabe auf Shiny zu rendern. Unten finden Sie eine Erklärung zu meinem Anwendungsfall:Ich kann die Datentabelle nicht rendern

  1. Verbunden mit meiner Datenbank und erhalten Tabellendaten zu df Variable.
  2. hat die ausgewählte Eingabe vom ausgewählten Eingabetextfeld zum Server-Skript gesendet.
  3. Server-Skript sollte diese Eingabe nehmen und die Daten abrufen.

    ui.R

    library(shiny) 
    library(RODBC) 
    
    library(DBI) 
    # Establishing connection to ORE environment 
        dbconnect <- odbcConnect("orecloud", uid="XXXX", pwd="XXXXX", believeNRows=FALSE) 
    # Preparing data frames to get the data and show in select input pick list 
        df <- data.frame() 
        df <- sqlQuery(dbconnect,"SELECT distinct cpan FROM TABLE ") 
        shinyUI(fluidPage(
         headerPanel("ORE XXX Summary"), 
        sidebarLayout(
        sidebarPanel(
         helpText("Please select Patient Details.."), 
         selectInput("CPAN", 
            label = "Choose patient", 
            choices = df, 
            selected = NULL), 
        submitButton(text = "Submit", icon = NULL)), 
        mainPanel(
        dataTableOutput("tableoutput") 
        ) 
    ) 
    )) 
    

server.R

  1. Server-Skript sollte die Eingabe übernehmen und die Daten aus der Tabelle
  2. Rendern der ausgewählten Daten abfragen zu UI
  3. Wenn ich den Wert in der Benutzeroberfläche ändere, sollte er ausgewählte Eingabedaten anzeigen.

    library(RODBC) 
    
    shinyServer(
        function(input, output) { 
         dbconnect <- odbcConnect("orecloud", uid="oracle",  pwd="Edvenswa2016", believeNRows=FALSE) 
         df2 <- data.frame() 
         input_var <- input$CPAN 
         print (input_var) 
         my_query <- paste("select * from CYTOKINE where CPAN= ", input_var) 
         print(myquery) 
         df2 <- sqlQuery(dbconnect,myquery) 
         output$tableoutput <- renderDataTable({df2}) 
        } 
    ) 
    

Antwort

2

Sie müssen es reaktive

df2=reactive({ 
input_var <- input$CPAN 
my_query <- paste("select * from CYTOKINE where CPAN= ", input_var) 
sqlQuery(dbconnect,myquery) 
}) 

und wie renderDataTable({df2()}) })

verwenden tun Wenn CPAN Eingang $ ist Zeichen, das Sie benötigen paste0("select * from CYTOKINE where CPAN= '", input_var,"'")

nicht auch Disconect

vergessen
session$onSessionEnded(function() { 
    odbcClose(dbconnect) 
}) 
+0

@Batanicheck - Danke !! –

Verwandte Themen