在会计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")
似乎答案是
-
从数据集中删除数据表,然后再次添加它们(这使我们成为了其中的一部分)
-
再次命名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)
现在它似乎正常工作: - )