Vs 10 VB.net Ms选择时访问数据库dbnull值

时间:2012-06-07 11:51:04

标签: ms-access-2007 vb.net-2010

好的,所以我在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 

“” “” “” “” “” “” “” “” “” “” “”” 但由于它自动生成它不断删除它并再次使旧的

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

Public Property Postion() As String存储为Object,如果String不是PositionDBNull.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不太好,所以如果有语法问题请原谅。