TextInput 没有在闪亮的 R 中给出结果
TextInput not giving results in shiny R
我正在制作一个应用程序,用户将在其中输入公司的 ID(即 PID)并单击提交以从 SQL 服务器数据库中获取结果。我创建了下面提到的代码,但代码没有在 SQL 查询中获取输入值。请帮忙。到目前为止我创建的代码是 -
#install.packages("RODBC")
#install.packages("RODBCext")
library(shiny)
library(RODBC)
library(RODBCext)
library(DT)
library(sqldf)
#UI
ui<-fluidPage(
#Application Title
titlePanel(title = "The is Default Database UI Testing Version!!"),
sidebarLayout(
sidebarPanel(
textInput("PID","Enter company's PID",""),
submitButton("Submit", icon("table"))
),
mainPanel(
h4("Database information"),
DT::dataTableOutput({"mydata"})
#tableOutput("mydata")
)
))
#server
shinyServer <- function(input,output)
{
#connect to database
con = odbcConnect('DDB')
#build query
query <-
"
select [COMPANY].[COMP_ID],[COMPANY].[PID], [COMPANY].[COMP_NAME],[CNTRY_NAME],EVENT.[EVENT_ID],[EVENT],[CONSID_DESC],[EVENT_YR],[EVENT_MON],[EVENT_DAY],[PATH]
from EVENT inner join [dbo].[COMPANY] on EVENT.[COMP_ID] = [dbo].[COMPANY].[COMP_ID]
inner join [dbo].[EVENT_TYPE] on EVENT.[EVENT_TYPE_ID] = [dbo].[EVENT_TYPE].[EVENT_TYPE_ID]
inner join [dbo].[SPECIAL_CONSIDERATION] on EVENT.[CONSID_ID] = [dbo].[SPECIAL_CONSIDERATION].[CONSID_ID]
inner join [dbo].[COUNTRY] on [dbo].[COMPANY].[CNTRY_CD] = [dbo].[COUNTRY].[CNTRY_CD]
left join [dbo].[EVENT_DOC] on EVENT.[EVENT_ID] = [dbo].[EVENT_DOC].[EVENT_ID]
where PID = '?,input$PID'"
(
res <- sqlQuery(con,query))
#ddf<-data.frame('res')
# df[qry$mydata == input$select_mydata, ]
output$mydata = DT::renderDataTable({res})
#output$mydata = renderPrint({res})
}
shinyApp(ui, shinyServer)
试试这个:
library(shiny)
library(RODBC)
library(RODBCext)
library(DT)
library(sqldf)
con <- odbcConnect('DDB')
query <- "select [COMPANY].[COMP_ID],[COMPANY].[PID], [COMPANY].[COMP_NAME],[CNTRY_NAME],EVENT.[EVENT_ID],[EVENT],[CONSID_DESC],[EVENT_YR],[EVENT_MON],[EVENT_DAY],[PATH] from EVENT inner join [dbo].[COMPANY] on EVENT.[COMP_ID] = [dbo].[COMPANY].[COMP_ID] inner join [dbo].[EVENT_TYPE] on EVENT.[EVENT_TYPE_ID] = [dbo].[EVENT_TYPE].[EVENT_TYPE_ID] inner join [dbo].[SPECIAL_CONSIDERATION] on EVENT.[CONSID_ID] = [dbo].[SPECIAL_CONSIDERATION].[CONSID_ID] inner join [dbo].[COUNTRY] on [dbo].[COMPANY].[CNTRY_CD] = [dbo].[COUNTRY].[CNTRY_CD] left join [dbo].[EVENT_DOC] on EVENT.[EVENT_ID] = [dbo].[EVENT_DOC].[EVENT_ID] where PID = MYSHINYPID"
ui <- fluidPage(
titlePanel(title = "The is Default Database UI Testing Version!!"),
sidebarLayout(
sidebarPanel(
textInput("PID","Enter company's PID",""),
actionButton("Submit", icon("table"))
),
mainPanel(
h4("Database information"),
dataTableOutput('mydata')
)
)
)
server <- function(session,input,output){
sqldata <- eventReactive(input$Submit,{
req(input$PID)
query <- gsub("MYSHINYPID",input$PID,query)
sqlQuery(con,query)
})
output$mydata <- DT::renderDataTable({
sqldata()
})
}
shinyApp(ui, server)
- 我们将使用字符串替换
gsub
进行查询
- 然后将为 PID 添加
req()
,因此用户必须输入一些内容
- 理想的连接应该在
global
中,这样所有用户只能使用一次
我正在制作一个应用程序,用户将在其中输入公司的 ID(即 PID)并单击提交以从 SQL 服务器数据库中获取结果。我创建了下面提到的代码,但代码没有在 SQL 查询中获取输入值。请帮忙。到目前为止我创建的代码是 -
#install.packages("RODBC")
#install.packages("RODBCext")
library(shiny)
library(RODBC)
library(RODBCext)
library(DT)
library(sqldf)
#UI
ui<-fluidPage(
#Application Title
titlePanel(title = "The is Default Database UI Testing Version!!"),
sidebarLayout(
sidebarPanel(
textInput("PID","Enter company's PID",""),
submitButton("Submit", icon("table"))
),
mainPanel(
h4("Database information"),
DT::dataTableOutput({"mydata"})
#tableOutput("mydata")
)
))
#server
shinyServer <- function(input,output)
{
#connect to database
con = odbcConnect('DDB')
#build query
query <-
"
select [COMPANY].[COMP_ID],[COMPANY].[PID], [COMPANY].[COMP_NAME],[CNTRY_NAME],EVENT.[EVENT_ID],[EVENT],[CONSID_DESC],[EVENT_YR],[EVENT_MON],[EVENT_DAY],[PATH]
from EVENT inner join [dbo].[COMPANY] on EVENT.[COMP_ID] = [dbo].[COMPANY].[COMP_ID]
inner join [dbo].[EVENT_TYPE] on EVENT.[EVENT_TYPE_ID] = [dbo].[EVENT_TYPE].[EVENT_TYPE_ID]
inner join [dbo].[SPECIAL_CONSIDERATION] on EVENT.[CONSID_ID] = [dbo].[SPECIAL_CONSIDERATION].[CONSID_ID]
inner join [dbo].[COUNTRY] on [dbo].[COMPANY].[CNTRY_CD] = [dbo].[COUNTRY].[CNTRY_CD]
left join [dbo].[EVENT_DOC] on EVENT.[EVENT_ID] = [dbo].[EVENT_DOC].[EVENT_ID]
where PID = '?,input$PID'"
(
res <- sqlQuery(con,query))
#ddf<-data.frame('res')
# df[qry$mydata == input$select_mydata, ]
output$mydata = DT::renderDataTable({res})
#output$mydata = renderPrint({res})
}
shinyApp(ui, shinyServer)
试试这个:
library(shiny)
library(RODBC)
library(RODBCext)
library(DT)
library(sqldf)
con <- odbcConnect('DDB')
query <- "select [COMPANY].[COMP_ID],[COMPANY].[PID], [COMPANY].[COMP_NAME],[CNTRY_NAME],EVENT.[EVENT_ID],[EVENT],[CONSID_DESC],[EVENT_YR],[EVENT_MON],[EVENT_DAY],[PATH] from EVENT inner join [dbo].[COMPANY] on EVENT.[COMP_ID] = [dbo].[COMPANY].[COMP_ID] inner join [dbo].[EVENT_TYPE] on EVENT.[EVENT_TYPE_ID] = [dbo].[EVENT_TYPE].[EVENT_TYPE_ID] inner join [dbo].[SPECIAL_CONSIDERATION] on EVENT.[CONSID_ID] = [dbo].[SPECIAL_CONSIDERATION].[CONSID_ID] inner join [dbo].[COUNTRY] on [dbo].[COMPANY].[CNTRY_CD] = [dbo].[COUNTRY].[CNTRY_CD] left join [dbo].[EVENT_DOC] on EVENT.[EVENT_ID] = [dbo].[EVENT_DOC].[EVENT_ID] where PID = MYSHINYPID"
ui <- fluidPage(
titlePanel(title = "The is Default Database UI Testing Version!!"),
sidebarLayout(
sidebarPanel(
textInput("PID","Enter company's PID",""),
actionButton("Submit", icon("table"))
),
mainPanel(
h4("Database information"),
dataTableOutput('mydata')
)
)
)
server <- function(session,input,output){
sqldata <- eventReactive(input$Submit,{
req(input$PID)
query <- gsub("MYSHINYPID",input$PID,query)
sqlQuery(con,query)
})
output$mydata <- DT::renderDataTable({
sqldata()
})
}
shinyApp(ui, server)
- 我们将使用字符串替换
gsub
进行查询 - 然后将为 PID 添加
req()
,因此用户必须输入一些内容 - 理想的连接应该在
global
中,这样所有用户只能使用一次