Ich habe eine glänzende Anwendung, die 2 Registerkarten enthält. In der zweiten Registerkarte führe ich eine SQL-Abfrage aus, um einen Datenrahmen zurück zu bekommen, den ich auf dem Bildschirm veröffentlichen möchte, damit der Benutzer sehen kann. Der Kürze halber habe ich nur den relevanten Code eingefügt. Grundsätzlich wählt der Benutzer einen Datumsbereich aus, dieser geht zur Datenbank und zieht die relevanten Informationen und gibt diese Informationen an den Server zurück, um sie auf dem Bildschirm zu veröffentlichen. Zur Zeit laufen, wenn die App erhalte ich die FehlermeldungR glänzend, kann die Funktion nicht finden
Error: could not find function "report_data"
ich für jede Hilfe dankbar sein würde Sie
#-----------------------------------------------------------------------------------------
# UI
# TAB 2 which lets the user select a date range and press the submit button
#-----------------------------------------------------------------------------------------
tabPanel("Review Uploaded Data",
# Side Panel with Options
fluidRow(
column(4, wellPanel(
id = "leftPanel",
div(id = "Header",
h3("Options", align = "center"),
tags$hr()
),
div(id = "form2",
dateRangeInput("dates", label = h3("Entry Date Range")),
actionButton("search", "Search Database", class = "btn-primary")
)
)),
column(8, id = "reporttable",
# Main Panel shows the uploaded excel document when a user first uploads
DT::dataTableOutput("reportTable")
)))
#-----------------------------------------------------------------------------------------
# Server
# TAB 2 Review Uploaded Data
#-----------------------------------------------------------------------------------------
# When User selects a date Range. Run the SQL to pull information for that Date Range
report_data <- observeEvent(input$search, {
load_data(input$dates)
})
# Show the summary table
output$reportTable <- DT::renderDataTable(
DT::datatable(
report_data(),
rownames = TRUE,
options = list(searching = FALSE, lengthChange = FALSE, scrollX = FALSE)
))
Diese Funktion ist die Funktion, die auf die Datenbank geht liefern könnten und gibt den Datenrahmen basierend auf die Benutzerauswahl eines Datumsbereichs.
# Load the data from the MYSQL table
load_data <- function(dateRange) {
# Connect to the database
db <- dbConnect(MySQL(), dbname = databaseName, host = options()$mysql$host,
port = options()$mysql$port, user = options()$mysql$user,
password = options()$mysql$password)
start_date <- dateRange[1]
end_date <- dateRange[2]
# Construct the fetching query
query <- sprintf("SELECT USER, COUNT(*) as records FROM %s
WHERE ENTRY_DATE BETWEEN '%s' AND '%s' GROUP BY 1", table, start_date, end_date)
# Submit the fetch query and disconnect
data <- dbGetQuery(db, query)
dbDisconnect(db)
names(data) <- c("User", "records")
return(data)
}
verwenden Sie müssen 'eventReactive' statt' observeEvent' weil observeEvent - nichts zurückgeben – Batanichek
Vielen Dank, ich kratzte mich seit Ewigkeiten darüber. Bitte stellen Sie es als Antwort und ich werde es sofort markieren –