尝试创建闪亮的应用程序需要输入条目形式并上传到sql。遇到错误

时间:2020-06-19 11:02:24

标签: css r sql-server shiny shinydashboard

无法正确发布闪亮的应用程序并将数据附加到sql表中? 我可以创建一个接受用户输入的表单,然后单击“提交”,将数据上传到sql表。下面是代码

require(shiny)
require(jpeg)
require(tm)
require(magick)
require(pdftools)
require(magrittr)
library(pdfsearch)
require(readxl)
require(shinythemes)
require(tesseract)
require(tidyverse)
require(foreach)
library(data.table)
library(DT)
library(uuid)
library(shinyjs)
library(dplyr)
library(odbc)
require(DBI)
library(RSQLite)
require(stringr)

df<-data.frame(ID=character(),file=character(),c=character(),d=integer(),e=integer(),date=as.character(),
               stringsAsFactors = FALSE)
dbWriteTable(con,"contracting_assistant",df,overwrite=FALSE,append=TRUE)

##Ui
`
library(shiny)
library(DT)
#library(shinyjs)
#source("/Users/SSACHD12/Desktop/Project/display_code.R")
source("/Users/SSACHD12/Desktop/Project/delete_display_file.R")
#files[grepl("_comp",files)==FALSE]
#files[grep("_comp",files)]

#jscode <- "shinyjs.refresh = function() { history.go(0); }"
ui <- pageWithSidebar(
  headerPanel("Contracting Assistant"),
  sidebarPanel(
    #useShinyjs(),
    #extendShinyjs(text = jscode),
    shinyjs::useShinyjs(),
    #shinyjs::inlineCSS(appCSS),
    fluidRow(
      column(width = 8, offset = 1 , div(style = "height:10px"),
             position=c("left"),fluid=TRUE,

    selectInput("file_name", "File to Select:",choices=list.files("www/",pattern = "pdf$"))
     )
     ),
    fluidRow(actionButton("add_button","Add",icon("plus")),
             actionButton("edit_button","Edit",icon("edit")))

    #actionButton("refresh", "Refresh app")

    ),
  mainPanel(
    # Use imageOutput to place the image on the page
    splitLayout(
    dataTableOutput('Main_table'))
  )
)
`
##Server
shinyServer(function(input, output) {

  con <- dbConnect(RSQLite::SQLite(),Driver = "SQL Server",
                   Server = "XXXXXx",
                   Database = "XXXXXX",
                   Port = 1433)

  df<-reactive({
    input$submit
    input$submit_edit

    dbReadTable(con,"contracting_assistant")
  })

#EntryForm
  entry_form<-function(button_id){
    showModal(
      modalDialog(
        div(id="entry_form"),
        tags$head(tags$style(".model-dialog{width:400px}")),
        tags$head(tags$style(HTML(".shiny-split-layout>div{overflow:visible}"))),
        fluidPage(
          fluidRow(
            splitLayout(
              cellWidths = c("250px","250px"),
              cellArgs = list(style = "vertical-align:top"),
              textInput("c",label="C",placeholder = ""),
              textInput("d",label="D",placeholder = ""),
              textInput("e",label="E",placeholder = ""),
              actionButton(button_id,"Submit")
            ),
            easyClose=TRUE
          )
        )
      )
    )
  }


# #Add Data
  formData<-reactive({
    formData <- data.frame(ID=UUIDgenerate(),
                      file=str_replace(input$file_name,".pdf",""),
                       c=input$c,
                       d=input$d,
                       e=input$e,
                       date=as.character(format(Sys.time(),format="%Y-%m-%d %H:%M:%S")),
                       stringsAsFactors = FALSE)
    return(formData)
    })
#Append data to SQL
  appendData <- function(data){
    query<-sqlAppendTable(con,"contracting_assistant",data,row.names = FALSE)
    dbExecute(con,query)
  }
  observeEvent(input$add_button,priority = 20,{
    entry_form("submit")
  })

  observeEvent(input$submit,priority = 20,{
    appendData(formData())
    shinyjs::reset("entry_form")
    removeModal()
  })

  output$Main_table<-DT::renderDataTable({
    table<-df() %>% select(-ID)
    names(table)<-c("file","c","d","e","date")
    table<-datatable(table,rownames = FALSE,
                     options=list(searching =FALSE, lengthChange=FALSE)
                     )
  })
}
)

有人可以帮助解决这个问题吗。我想创建一个表单,接受用户的输入,然后单击“提交”,将数据上传到sql表。

0 个答案:

没有答案