[VB.NET] DataSet item met Null waarde naar functie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen, ik zit met een klein schoonheids probleempje.
Ik heb een dataset waarin een aantal velden niet hoeft te worden ingevuld.
Hierin heb ik een item dat Address_1 heet, deze kan leeg zijn maar hoeft niet.
Omdat ik er wel een aantal berekeningen mee moet doen zet ik hem onderwater op 0.

Dus:
code:
1
2
3
4
5
6
7
Dim rekenwaarde as Integer

If Row.IsAddress_1Null Then
     rekenwaarde = 0
else
     rekenwaarde  = Row.Address_1
end if


Het probleem is dat dit vrij vaak voor komt, ik wil dus graag een soort "safe" functie maken die deze control voor me doet.

code:
1
2
3
4
5
rekenwaarde  = SafeGetWaarde(Row.Address_1)

Private Function SafeGetWaarde(Byref UnSafe as integer)as integer
'zelfde code als boven
End function


Het probleem is dat ik de lege Row.Address_1 niet mee mag geven aan de functie, en al een error krijg bij de aanroep. Hoe kan ik dit oplossen?

(Selfprotect) Google ed. al aflopen speuren maar niet gevonde.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom wil je überhaupt een magic value aan je rekenwaarde toekennen? 0 is nou eenmaal niet gelijk aan Null. Waarom maak je niet gebruik van een Nullable( http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Woy schreef op maandag 07 september 2009 @ 15:03:
Waarom wil je überhaupt een magic value aan je rekenwaarde toekennen? 0 is nou eenmaal niet gelijk aan Null.
Omdat het gaat om user input, ik moet rekenen met een 0 waarde op het moment dat de user een 0 invoert.
Ik mag dus niet de volgende aanroep doen, omdat ik dan een exception krijg.
-SafeGet(Row.Address_1_Value)
Wat overgens wel werkt:
-SafeGet(Row.Item("Address_1_Value"))
Maar naar mijn idee is de eerste functie iets sneller omdat de column dan al gedefineerd is en in de 2e functie word de column nog opgezocht.
Waarom maak je niet gebruik van een Nullable( http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx )
Omdat ik in die functie SafeGet nog een stukje code wil uitvoeren wat steeds weer terug komt en dat filter ik er liever uit.
Het gaat om tonen en invoeren van I/O die 1 of 0 kan zijn maar de user kan een "force" value doen met een H of een L.
Wat een code als dit oplevert:
code:
1
2
3
4
5
6
7
8
9
10
11
        If Not Row.IsAddress_3_ValueNull Then
            If Row.Address_3_Value = "L" Then
                STD_Status = 0
            ElseIf Row.Address_3_Value = "H" Then
                STD_Status = 1
            Else
                Row.Address_3_Value = STD_Status
            End If
        Else
            Row.Address_3_Value = STD_Status
        End If

[ Voor 41% gewijzigd door Armageddon_2k op 07-09-2009 15:20 ]