[.NET] Datumkolom van dataset kan geen null returnen.

Pagina: 1
Acties:

  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 19:04
Mensen,
Ik heb een dataset die visual studio 2005 zelf gegenereed heeft (.xsd). Daarin heb ik een tabel met een datum kolom die null mag zijn. Wanneer ik deze kolom uitlees krijg ik de foutmelding:
The value for column 'LaatstGewijzigdDatum' in table 'ServiceHeader' is DBNull.

Dit klopt want de volgende code wordt aangeroepen (deze heeft visual studio zelf gegenereed):
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
        <System.Diagnostics.DebuggerNonUserCodeAttribute()>  _
        Public Property LaatstGewijzigdDatum() As Date
            Get
                Try 
                    Return CType(Me(Me.tableServiceHeader.LaatstGewijzigdDatumColumn),Date)
                Catch e As System.InvalidCastException
                    Throw New System.Data.StrongTypingException("The value for column 'LaatstGewijzigdDatum' in table 'ServiceHeader' is DBNull.", e)
                End Try
            End Get
            Set
                Me(Me.tableServiceHeader.LaatstGewijzigdDatumColumn) = value
            End Set
        End Property


in de properties van de kolom kan ik bij NullValue aangeven wat de null waarde moet zijn. Hierbij kan ik kiezen uit: Throw Exception, Nothing en Empty. Wanneer ik deze wijzig van Throw Exeption naar Nothing krijg ik de volgende foutmelding:
For columns not defined as System.String, the only valid value is (Throw exception).

Bij kolommen van het type string werkt het wel. Als ik dan naar de code kijk dan staat dit er:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
        <System.Diagnostics.DebuggerNonUserCodeAttribute()>  _
        Public Property LaatstGewijzigdGebruiker() As String
            Get
                If Me.IsLaatstGewijzigdGebruikerNull Then
                    Return Nothing
                Else
                    Return CType(Me(Me.tableServiceHeader.LaatstGewijzigdGebruikerColumn),String)
                End If
            End Get
            Set
                Me(Me.tableServiceHeader.LaatstGewijzigdGebruikerColumn) = value
            End Set
        End Property

Nu heb ik geprobeerd om de code van de datum property handmatig aan te passen zodat deze ook Nothing kan returnen maar Visual Studio veranderd deze zelf weer terug naar de oude staat.

Wie kan mij vertellen hoe ik hier mee om moet gaan? Is de melding
For columns not defined as System.String, the only valid value is (Throw exception).
misschien een fout in Visual Studio?

1. oplossing zou zijn om altijd een datum op te staan in de database maar dat vind ik geen goede/mooie oplossing.

If it does not kill u, it makes u stronger


  • NicoD
  • Registratie: Augustus 2004
  • Laatst online: 11:03
Als het goed is, is er voor je datumkolom wel een isVeldnaamNull() functie gegenereerd op de dataset.
Die kun je dus gebruiken om te controleren of er wel/geen datum gezet is alvorens 'm uit te vragen.
De reden dat een string wel een null-value kan teruggeven is dat een string een reference-type is en een datum een value-type.

  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 19:04
Geweldig!!!! Hij doet het! setVeldnaamNull() kende ik al wel, en dan niet even verder denken he....
Hier was is ik dus al de hele dag naar op zoek.

Bedankt!

If it does not kill u, it makes u stronger