好的,所以我在vb.net应用程序中添加了Ms访问表 然后我做了一个过滤器 该表包含带有DBNull值的列 问题是每当我开始在过滤中写入具有dbnull值的单元格的任何内容时,它就会出现错误
“”“表'Parts'中列'Postion'的值是DBNull。”“”
,例外细节是 “” “” “” “” “” “” “” “”“
System.Data.StrongTypingException was unhandled by user code
Message=The value for column 'Postion' in table 'Parts' is DBNull.
Source=Erkat
StackTrace:
at Erkat.cutterprogDataSet.PartsRow.get_Postion() in C:\Users\Mina\Documents\Visual Studio 2010\Projects\Erkatpj\Erkat\cutterprogDataSet.Designer.vb:line 2634
InnerException: System.InvalidCastException
Message=Conversion from type 'DBNull' to type 'String' is not valid.
Source=Microsoft.VisualBasic
StackTrace:
at Microsoft.VisualBasic.CompilerServices.Conversions.ToString(Object Value)
at Erkat.cutterprogDataSet.PartsRow.get_Postion() in C:\Users\Mina\Documents\Visual Studio 2010\Projects\Erkatpj\Erkat\cutterprogDataSet.Designer.vb:line 2632
InnerException:
“” “” “” “” “” “” “” “” “”“
我找到了一个解决方案,但它只是一个临时解决方案
在设计师的AUTO GENERATED代码
中“”“
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
Public Property Postion() As String
Get
Try
Return CType(Me(Me.tableParts.PostionColumn),String)
Catch e As Global.System.InvalidCastException
Throw New Global.System.Data.StrongTypingException("The value for column 'Postion' in table 'Parts' is DBNull.", e)
End Try
End Get
Set
Me(Me.tableParts.PostionColumn) = value
End Set
End Property
“”” 我改成了
“”“”“”“”“”“”“”“”“”“”“”“”
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
Public Property Postion() As String
Get
Try
If Convert.IsDBNull(Me(Me.tableParts.PostionColumn)) Then
Return Nothing
Else
Return CType(Me(Me.tableParts.PostionColumn), String)
End If
Catch e As Global.System.InvalidCastException
Throw New Global.System.Data.StrongTypingException("The value for column 'Postion' in table 'Parts' is DBNull.", e)
End Try
End Get
Set
Me(Me.tableParts.PostionColumn) = value
End Set
End Property
“” “” “” “” “” “” “” “” “” “” “”” 但由于它自动生成它不断删除它并再次使旧的
有人可以帮忙吗?答案 0 :(得分:0)
将Public Property Postion() As String
存储为Object
,如果String
不是Position
或DBNull.Value
,则转换为Nothing
。
Public Property Postion() As Object
Get
Return Me(Me.tableParts.PostionColumn
End Get
Set
Me(Me.tableParts.PostionColumn) = value
End Set
End Property
用法:
Dim pos as String
Dim obj as Object = Position
If Not (obj Is Nothing) And Not (obj = DBNull.Value) Then
pos = CType(obj, String)
' Alternately:
' pos = CString(obj)
' Or:
' pos = obj.ToString()
Else
pos = String.Empty
End If
我的VB不太好,所以如果有语法问题请原谅。