代码之家  ›  专栏  ›  技术社区  ›  Nick LaMarca

使日期为空

  •  0
  • Nick LaMarca  · 技术社区  · 14 年前

    有人能帮我修复我的代码吗?我正试图通过一个除外DTSWO的函数将空值放入SQL Server。

    如果我把dtswo设置为Nothing,它会返回12:00:00 am,这会引发一个异常。该字段在SQL Server中可以为空。我只希望它返回一个空字段。

    Dim _swoDate As String = udSWOReceivedDateDateEdit.Text
            Dim _dtSWO As Date
    
            If _swoDate <> "" Then
                _dtSWO = Date.Parse(udSWOReceivedDateDateEdit.Text)
            Else
                'THIS DOESNT WORK
                _dtSWO = Nothing
            End If
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Martin    14 年前

    您需要使用可为空的类型。默认情况下,日期不将空值(在vb.net中为零)作为值。 Nullable types 不要接受空值(无)。

        Dim _dtSWO As Nullable(Of Date)
    
        If String.IsNullOrEmpty(_swoDate) Then
            _dtSWO = Date.Parse(udSWOReceivedDateDateEdit.Text)
        Else
            _dtSWO = Nothing
        End If
    

    根据注释编辑。

        2
  •  1
  •   Larsenal    14 年前

    使其可以为空。与可空整数问题的情况相同。

    Dim _swoDate As String = udSWOReceivedDateDateEdit.Text
    Dim _dtSWO As Date?
    
    If _swoDate <> "" Then
        _dtSWO = Date.Parse(udSWOReceivedDateDateEdit.Text)
    Else
        _dtSWO = Nothing
    End If