2016-12-06 90 views
0

在會計WPF應用程序中,我們有許多公用DataTable,可在打開選項卡後重新加載數據。這在本地很好,因爲報告只是指這些表格。將數據表更新爲數據集

對於一些更復雜的報告,我們剛剛設置了一個Web服務來運行它們並返回一個PDF ...爲了使它更容易,我想加載這些DataTables轉換成DataSet,然後在服務器端提取它們。這在第一次運行的時候是完美的,但隨後(盡我所能解決這個問題)它會爲後續報告發送不正確的(上次加載的)數據。在本地它仍然可以正常工作,但我們在DataSet中發送的DataTable似乎沒有更新。已嘗試刪除表並重新添加它們,但只是在服務器首次從DataTable中選擇DataRow時拋出「未設置對象引用」。

必須有一些非常基本的,我一直缺少:-(

任何想法?

感謝

Private Async Sub RunProfitAndLossOnServer(sender As Object, e As RoutedEventArgs) 
    Try 
     Dim StartDateTB As DateTBx = ReportBalanceSheet_Grid.FindName("BalanceSheet_StartDateTB") 
     Dim EndDateTB As DateTBx = ReportBalanceSheet_Grid.FindName("BalanceSheet_EndDateTB") 

     ReportStartDate = StartDateTB.Value 
     ReportEndDate = EndDateTB.Value 
     ReportDate = Today 
     ReportName = "Profit and Loss Report" 
     PaperLandscape = False 
     ReportFontSize = 8 
     PopupModals_ReportGenerator() 
     If ReportGeneratorRun = True Then 

      Dim vPDF() As Byte = Nothing 
      'Determine if the Export Dataset has already been created 
      If ExportDS Is Nothing Then 
       ExportDS = New DataSet 
       VariablesDT = New DataTable 
       With VariablesDT.Columns 
        .Add("Current_HOA_Name", GetType(String)) 
        .Add("Current_HOA_ID", GetType(Integer)) 
        .Add("ReportName", GetType(String)) 
        .Add("ReportFontSize", GetType(Integer)) 
        .Add("ReportStartDate", GetType(Date)) 
        .Add("ReportEndDate", GetType(Date)) 
        .Add("User_InternationalDate", GetType(Integer)) 
        .Add("PaperSize", GetType(String)) 
        .Add("PaperLandscape", GetType(Boolean)) 
        .Add("Reports_IsSplitGL", GetType(Boolean)) 
        .Add("Form_ID", GetType(Integer)) 
       End With 
       With VariablesDT.Rows 
        .Add(Current_HOA_Name, Current_HOA_ID, ReportName, ReportFontSize, ReportStartDate, ReportEndDate, User_InternationalDate, PaperSize, PaperLandscape, False, Form_ID) 
       End With 
       VariablesDT.TableName = "VariablesDT" 
       ExportDS.Tables.Add(VariablesDT) 
       ResIncomeDT.TableName = "ResIncomeDT" 
       ExportDS.Tables.Add(ResIncomeDT) 
       ResIncNomDT.TableName = "ResIncNomDT" 
       ExportDS.Tables.Add(ResIncNomDT) 
       ResExpensesDT.TableName = "ResExpensesDT" 
       ExportDS.Tables.Add(ResExpensesDT) 
       ResExpNomDT.TableName = "ResExpNomDT" 
       ExportDS.Tables.Add(ResExpNomDT) 
       RevenueDT.TableName = "RevenueDT" 
       ExportDS.Tables.Add(RevenueDT) 
       ExpensesDT.TableName = "ExpensesDT" 
       ExportDS.Tables.Add(ExpensesDT) 
       RevenueNomDT.TableName = "RevenueNomDT" 
       ExportDS.Tables.Add(RevenueNomDT) 
       ExpensesNomDT.TableName = "ExpensesNomDT" 
       ExportDS.Tables.Add(ExpensesNomDT) 
      Else 

       ExportDS.Tables.Remove("ResIncomeDT") 
       ExportDS.Tables.Remove("ResIncNomDT") 
       ExportDS.Tables.Remove("ResExpensesDT") 
       ExportDS.Tables.Remove("ResExpNomDT") 
       ExportDS.Tables.Remove("RevenueDT") 
       ExportDS.Tables.Remove("ExpensesDT") 
       ExportDS.Tables.Remove("RevenueNomDT") 
       ExportDS.Tables.Remove("ExpensesNomDT") 

       ExportDS.Tables.Add(ResIncomeDT) 
       ExportDS.Tables.Add(ResIncNomDT) 
       ExportDS.Tables.Add(ResExpensesDT) 
       ExportDS.Tables.Add(ResExpNomDT) 
       ExportDS.Tables.Add(RevenueDT) 
       ExportDS.Tables.Add(ExpensesDT) 
       ExportDS.Tables.Add(RevenueNomDT) 
       ExportDS.Tables.Add(ExpensesNomDT) 

       ExportDS.Tables.Remove("VariablesDT") 

       For Each row As DataRow In VariablesDT.Rows 
        row("Current_HOA_Name") = Current_HOA_Name 
        row("current_HOA_ID") = Current_HOA_ID 
        row("ReportFontSize") = ReportFontSize 
        row("User_InternationalDate") = User_InternationalDate 
        row("PaperSize") = PaperSize 
        row("PaperLandscape") = PaperLandscape 
        row("Reports_IsSplitGL") = False 
        row("ReportStartDate") = ReportStartDate 
        row("ReportEndDate") = ReportEndDate 
        row("ReportName") = ReportName 
        row("Form_ID") = Form_ID 
       Next 


       ExportDS.Tables.Add(VariablesDT) 

      End If 

      Dim vImage As New LoadingImage 
       LoadingStarted("Uploading to xSoftware... Please wait...", vImage) 
       Await Task.Run(Sub() 
            Using vService As New Service5Client 
             vPDF = vService.ReturnProfitAndLossSheet(ExportDS) 
            End Using 
           End Sub) 

       LoadingCompleted("File uploaded to xSoftware...", "File was uploaded and PDF returned...", vImage) 

       Dim vFile As String = ByteToFilePath(vPDF) 
       If System.IO.File.Exists(vFile) Then 
        Dim P As New Process 
        With P 
         .StartInfo.FileName = vFile 
         .StartInfo.Verb = "Open" 
         .Start() 
        End With 
       Else 
        AppBoxError("The file path for the PDF is not valid!") 
       End If 


      End If 
    Catch ex As Exception 
     EmailError(ex) 
    End Try 
End Sub 

在服務器端拋出一個錯誤,如果我們刪除和添加的數據表背到數據集

Dim RevenueData() As DataRow = RevenueDT.Select("FormID = " & Form_ID, "Position") 
     Dim ExpenseData() As DataRow = ExpensesDT.Select("FormID = " & Form_ID, "Position") 
     Dim RevenueNomData() As DataRow = RevenueNomDT.Select("FormID = " & Form_ID, "Position") 
     Dim ExpenseNomData() As DataRow = ExpensesNomDT.Select("FormID = " & Form_ID, "Position") 

回答

0

看起來像答案是

  1. 取下DataSet中的數據表,並再次添加它們(這得到了我們的存在方式的一部分)

  2. 名稱再次數據表!

    ExportDS.Tables.Remove("ResIncomeDT") 
          ExportDS.Tables.Remove("ResIncNomDT") 
          ExportDS.Tables.Remove("ResExpensesDT") 
          ExportDS.Tables.Remove("ResExpNomDT") 
          ExportDS.Tables.Remove("RevenueDT") 
          ExportDS.Tables.Remove("ExpensesDT") 
          ExportDS.Tables.Remove("RevenueNomDT") 
          ExportDS.Tables.Remove("ExpensesNomDT") 
          ExportDS.Tables.Remove("VariablesDT") 
    
    
    VariablesDT.TableName = "VariablesDT" 
          ExportDS.Tables.Add(VariablesDT) 
          ResIncomeDT.TableName = "ResIncomeDT" 
          ExportDS.Tables.Add(ResIncomeDT) 
          ResIncNomDT.TableName = "ResIncNomDT" 
          ExportDS.Tables.Add(ResIncNomDT) 
          ResExpensesDT.TableName = "ResExpensesDT" 
          ExportDS.Tables.Add(ResExpensesDT) 
          ResExpNomDT.TableName = "ResExpNomDT" 
          ExportDS.Tables.Add(ResExpNomDT) 
          RevenueDT.TableName = "RevenueDT" 
          ExportDS.Tables.Add(RevenueDT) 
          ExpensesDT.TableName = "ExpensesDT" 
          ExportDS.Tables.Add(ExpensesDT) 
          RevenueNomDT.TableName = "RevenueNomDT" 
          ExportDS.Tables.Add(RevenueNomDT) 
          ExpensesNomDT.TableName = "ExpensesNomDT" 
          ExportDS.Tables.Add(ExpensesNomDT) 
    

現在似乎:-)

正常工作