早上好,我正在尝试在observeEvent之外使用数据帧,问题是在其余代码中不可用,一直在搜索读取,因此必须在代码开头将其设置为null并且必须使用makeReactiveBinding,但是它们都不起作用。
这是我到目前为止的代码。
library(shiny)
library(DT)
library(RODBC)
library(shinythemes)
library(shinydashboard)
filename="C:/Users/mg3rami/Documents/apptienda.txt"
sql=readChar(filename,file.info(filename)$size)
ui=navbarPage(theme=shinytheme("sandstone"),title=h3("App Tienda V2"),
tabPanel(
("Consulta"),
sidebarPanel(
textInput("Tienda","Tienda"),
textInput("depto","depto"),
textInput("Articulo","Articulo"),
actionButton("mybutton","Consultar Tienda")
),
mainPanel(
),
DT::dataTableOutput("tableDT1")
),
tabPanel(("DETALLE"),
DT::dataTableOutput("tableDT")),
tabPanel(("text"),
shinyUI(fluidPage(
tags$head(tags$style(HTML("
#final_text {
text-align: center;
}
div.box-header {
text-align: center;
}
"))),
box(verbatimTextOutput("Store_Nbr"), status = "primary", solidHeader = TRUE, collapsible = TRUE, width = 2, title = "Collapsable text")
)))
)
server=function(input,output,session){
mydata=NULL
makeReactiveBinding("mydata")
observeEvent(input$mybutton,{
withProgress({
setProgress(message = "Procesando consulta espere...")
if(is.null(input$Tienda)){
return(NULL)
}else if((input$Articulo=="") & (input$depto=="")){
my_sql=gsub("condicionales","Store_Nbr IN (Tienda)",sql)
}
else if(input$depto==""){
my_sql=gsub("condicionales","Store_Nbr IN (Tienda) AND Old_Nbr IN (Articulo)",sql)
}
else if(input$Articulo==""){
my_sql=gsub("condicionales","Store_Nbr IN (Tienda) AND DEPT_nbr IN (depto)",sql)
}
else {
my_sql=gsub("condicionales","Store_Nbr IN (Tienda) AND Old_Nbr IN (Articulo) AND DEPT_nbr IN (depto)",sql)
}
my_sql=gsub("depto",input$depto,gsub("Tienda",input$Tienda,gsub("Articulo",input$Articulo,my_sql)))
ch=odbcConnect("WM3", uid="***",pwd="***")
resultset=sqlQuery(channel=ch,query=my_sql)
odbcClose(channel=ch)
output$tableDT=DT::renderDataTable(resultset[1:nrow(resultset),],
options=list(paging=T),
rownames=F,
filter="top",
selection="single")
mydata=resultset[,c("Store_Nbr","Store_Name","Old_Nbr","UPC","Dept_Nbr","Category_Nbr","Dept_Name","Category_Name","Item_Desc","Vendor_Name",
"Type_Code","Status_Code","Ordbk_Flag","Effective_Date","Expire_Date","Vnpk_Qty","Whpk_Qty","MBM","Carry_Option","Carried_Status",
"Channel_Mthd_Desc","Cedis","CWO","OH","Oh_Cedis","IT","IW","OO","Ttl_Cad1","Fr_Cedis","Fr_Item","Last_Receive","Last_Sale",
"SSCov_Pzas","Presentation_Qty","Min_SS_Qty_01","Max_SS_Qty_01","Display_Qty","Smo_04","Smo_03","Smo_02","Smo_01","Smo_00",
"Sell_Price","Unit_Cost","AAVentas_04","AAVentas_03","AAVentas_02","AAVentas_01","AAVentas_00","Ventas_52","Ventas_51","Ventas_50",
"Ventas_49","Ventas_04","Ventas_03","Ventas_02","Ventas_01","Ventas_00","Fcst_X04_X04","Fcst_X03_X03","Fcst_X02_X02","Fcst_X01_X01",
"Fcst_Ttl_Curr","Fcst_Ttl_01","Fcst_Ttl_02","Fcst_Ttl_03","Fcst_Ttl_04","Ship_04","Ship_03","Ship_02","Ship_01","Arrive_00","Arrive_01",
"Arrive_02","Arrive_03","Arrive_04","HOHWLY_4","HOHWLY_3","HOHWLY_2","HOHWLY_1","HOHW_52","HOHW_51","HOHW_50","HOHW_49","HOHW_48","HOHW_4",
"HOHW_3","HOHW_2","HOHW_1","ITOrd_4","ITRec_4","ITOrd_3","ITRec_3","ITOrd_2","ITRec_2","ITOrd_1","ITRec_1","STOrd_4","STRec_4","STOrd_3",
"STRec_3","STOrd_2","STRec_2","STOrd_1","STRec_1","Vta$_04","Ventas_04","Vta$_03","Ventas_03","Vta$_02","Ventas_02","Vta$_01","Ventas_01",
"AAVta$_04","AAVentas_04","AAVta$_03","AAVentas_03","AAVta$_02","AAVentas_02","AAVta$_01","AAVentas_01")]
output$tableDT1=DT::renderDataTable(mydata[1:nrow(mydata),],
options=list(paging=T),
rownames=F,
filter="top",
selection="single")
})
})
origTable_selected <- reactive({
ids <- input$tableDT1_rows_selected
mydata[ids,1]
})
output$Store_Nbr=renderText({origTable_selected()})
}
shinyApp(ui=ui,server=server)
非常感谢