通过基于日期选择的闪亮应用程序从 SQL 服务器获取数据

Fetching Data from SQL Server Through Shiny Application on Date selection bases

大家好我正在开发一个闪亮的应用程序,我们通过 ODBC 连接器从 sql 服务器中提取数据,方法是在应用程序中选择日期和日期。我无法确定问题出在哪里,因为如果我在 R studio 上独立执行代码,我可以从 sql Server 中提取数据但是当在 Shiny Environment 中执行相同的代码时,我无法实现闪亮的数据如下 请指导我谢谢。

# ---------------------ui Code -----------------------------
library(shiny) 

shinyUI(pageWithSidebar( 

  headerPanel("Time Analytics"), 

  sidebarPanel( 


      dateRangeInput(inputId = "dateRange",  
                     label =  "Date range",
                     start = "2007-09-17",
                     max = Sys.Date()
      )


  ),#sidebar Panel Ends


    # 09-Main Panel ----
  mainPanel(
    tabsetPanel(id ="theTabs",
                tabPanel("Summary", dataTableOutput("tabi"),textOutput("tabii")) 

    )
  )#Main Panel Ends
))

#------------------Server ----------------------------------



library(shiny);library(sqldf)
library(plyr);library(RODBC)
library(ggplot2)


#Creating the connection 

shinyServer(function(input, output, session){ # pass in a session argument






  # prep data once and then pass around the program

  passData <- reactive({




    ch = odbcConnect("Test")  
    #qry <- "SELECT * FROM Nifty50"
    #qry <- cat("SELECT * FROM Nifty50 WHERE Date >= ",as.date(input$dateRange[1])," AND Date <= ",input$dateRange[2])
    qry <- paste("SELECT * FROM Nifty50 WHERE Date >= ",input$dateRange[1]," AND Date <= ",input$dateRange[2])
    #paste("SELECT * FROM Nifty50 WHERE Date >= ",input$dateRange[1]," AND Date <= ",input$dateRange[2])
    subset_Table <- sqlQuery(ch,qry)

    odbcClose(ch)
    subset_Table <- as.data.frame(subset_Table)
    return(subset_Table)

  })

  output$tabi <- renderDataTable({

    d<- as.data.frame(passData())
    d
  })

  output$tabii <- renderText({

    paste("Minimium Data :",input$dateRange[1], "Max Date:",input$dateRange[2])
  })




  # ----------------------------------------------------End

})

这里的任务是我需要根据日期到和从标准从选定的 Table 中获取数据,这将是来自闪亮应用程序的选定日期的子集数据。

修改qry如下:

qry <- paste("SELECT * FROM Nifty50 WHERE Date >= '", input$dateRange[1], "' AND Date <= '", input$dateRange[2], "'", sep = "")