Avatar billede mickni33 Nybegynder
05. marts 2008 - 16:36 Der er 10 kommentarer og
1 løsning

for each loop exception

hvorfor smider dette loop en :

System.InvalidCastException was unhandled
  Message="Conversion from type 'DBNull' to type 'Double' is not valid."
  Source="Microsoft.VisualBasic"
  StackTrace:
----------------------------------------------------------
Private prisList As ArrayList
  prisList = New ArrayList()


prisList.Add(0.1)
prisList.Add(0.2)
prisList.Add(0.3)
prisList.Add(0.4)

For Each pris As Double In prisList
    Console.Write(pris.ToString() + vbTab)
    counter += 1
Next
Avatar billede erikjacobsen Ekspert
05. marts 2008 - 17:05 #1
Det er vel fordi, der står en DBNull i din liste. Koden som du viser her fejler ikke - jeg har lige "oversat" den til en kørende .aspx side, og den gør det forventede:

Dim prisList as New ArrayList()


prisList.Add(0.1)
prisList.Add(0.2)
prisList.Add(0.3)
prisList.Add(0.4)

For Each pris As Double In prisList
    response.Write(pris.ToString() & vbTab)
Next
Avatar billede arne_v Ekspert
05. marts 2008 - 18:09 #2
Den DBNull boer nok haandteres i den kode som opretter listen.
Avatar billede mickni33 Nybegynder
05. marts 2008 - 18:53 #3
aaahh fordi der et sted bliver sat en Null værdi ind i Listen?
Avatar billede arne_v Ekspert
05. marts 2008 - 19:03 #4
Hvis det bare var et C# null / VB.NET Nothing, saa kunne du bruge double? / Nullable(Of Double),
men et SQL NULL bliver til en DBNull.

Og den mener jeg at du boer konvertere inden den ryger ind i listen.
Avatar billede mickni33 Nybegynder
05. marts 2008 - 19:11 #5
aahhh har ikke lige set den der DBNull før.... men du har ret i at der kan være nogle Null i min select...

læg et svar
Avatar billede mickni33 Nybegynder
05. marts 2008 - 19:22 #6
hmmm hvordan fixer man den hvis man ikke vil add'e dem med DBNull til  Listen:
Kan man lave en IF ?

For Each set As DataRow In _tariff.Tables("Tariff").Rows
if(! set == DBNull)
prisList.Add(VtoN(set!PRIS))
Next
Avatar billede mickni33 Nybegynder
05. marts 2008 - 20:13 #7
If (set!PRIS.Equals(System.DBNull.Value)) Then
                _pris = 0
                prisList.Add(_pris)
            End If
Avatar billede arne_v Ekspert
06. marts 2008 - 04:18 #8
Forudsat at det er .NET 2.0 eller højere så lav en:

List(Of Nullable(Of Double))
Avatar billede mickni33 Nybegynder
14. april 2008 - 14:04 #9
lav et svar
Avatar billede arne_v Ekspert
14. april 2008 - 14:59 #10
svar
Avatar billede arne_v Ekspert
05. maj 2008 - 05:50 #11
mickni ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester