无法渲染数据表

时间:2016-07-29 12:15:56

标签: r shiny

我正在尝试将DataTable输出呈现给Shiny。请查看我的用例的以下说明:

  1. 连接到我的数据库并将表数据提供给df变量。
  2. 将所选输入从选择输入文本框发送到服务器脚本。
  3. 服务器脚本应该接受此输入并获取数据。

    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")
        )
      )
    ))
    
  4. server.R

    1. 服务器脚本应该接受输入并查询表中的数据
    2. 将所选数据渲染为UI
    3. 如果我在UI中更改了值,那么它应该显示所选的输入数据。

      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})
         }
      )
      

1 个答案:

答案 0 :(得分:2)

你需要做反应

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

并使用renderDataTable({df2()}) } )

之类的内容

如果输入$ CPAN是字符,则需要paste0("select * from CYTOKINE where CPAN= '", input_var,"'")

也不要忘记disconect

session$onSessionEnded(function() {
  odbcClose(dbconnect )
})