在数据集中更新DataTable



在会计wpf应用中,我们有许多公共数据表,一旦打开选项卡,可以重新加载数据。当报告只是指这些表时,本地效果很好。

对于一些更复杂的报告,我们刚刚设置了一个Web服务来运行它们并返回PDF ...以使我更容易地想到将这些数据表加载到数据集中,然后在服务器端提取它们。这是第一次运行时的完美效果,但是(到目前为止,尽我所能,尽我所能)向后续报告发送错误(最后加载)数据。在本地,它仍然可以正常工作,但是我们正在数据集中发送的数据表似乎没有更新。试图删除表并再次重新添加它们,但这只是从服务器上的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")

似乎答案是

  1. 从数据集中删除数据表,然后再次添加它们(这使我们成为了其中的一部分)

  2. 再次命名DataTables!

    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)
    

现在它似乎正常工作: - )

最新更新