while循环中的ra.Value有时是DateTime类型,不幸的是.ToString()方法不足以将其转换为字符串。我应该更改我的代码,以识别ra.Value是DateTime类型并将其转换为String。现在我有一个例外,即从“DateTime”类型到“String”类型的转换无效。
With ro.Attributes.GetEnumerator
While .MoveNext
Dim ra As ReportAttribute = CType(.Current, ReportAttribute)
Dim lstrColumnReportObj As Integer = ra.Column
Dim lstrValueReportObj As String = ra.Value.ToString()
lstrParTable(lstrColumnReportObj) = lstrParTable(lstrColumnReportObj) + lstrValueReportObj
End While
End With
谢谢。
答案 0 :(得分:0)
您可能正在寻找的简单解决方案是:
With ro.Attributes.GetEnumerator
While .MoveNext
Dim ra As ReportAttribute = CType(.Current, ReportAttribute)
Dim lstrColumnReportObj As Integer = ra.Column
Dim lstrValueReportObj As String = Nothing
If TypeOf ra.Value Is Date Then
lstrValueReportObj = ra.Value.ToString("d MMM yyyy")
Else
lstrValueReportObj = ra.Value.ToString()
End If
lstrParTable(lstrColumnReportObj) = lstrParTable(lstrColumnReportObj) + lstrValueReportObj
End While
End With
然而,这确实是一种不好的做法,你可能想重新考虑你的整体设计。通常,当您必须开始为某些类型设置特殊逻辑时,这通常表明您可以以更好的方式执行此操作。例如,当您开始为其他类型开始需要自定义格式时会发生什么。一旦你有超过一些例外,它将变得笨拙并且代码将变得脆弱(容易出现错误)。
另外,我觉得有必要提一下,在.NET中不鼓励使用匈牙利语。如果你的雇主要求你使用它,那很好,但除此之外,我建议你阅读official Microsoft naming guidelines。