Avatar billede robson Nybegynder
12. september 2006 - 08:43 Der er 7 kommentarer og
1 løsning

Er variabel lig null

Jeg arbejder med data fra en ældre SQL Server opsætning og jeg har et felt som enten indeholder en streng værdi ellers værdien NULL.

Jeg henter et antal rækker fra DB'en via et dataset som jeg så tilgår fra min .cs fil vha. en tableadapter, med foreach løber jeg så rækkerne igennem.

Jeg skal nu have lavet noget kode der spørger på om det aktuelle felt er null eller indeholder en streng værdi. MEN jeg har store problemer med at spørge på null! Jeg har forsøgt med == null, men lige meget hvordan jeg sætter det op får jeg en når jeg lader Visual Studio 2005 debugge siderne. Fejlen er: "StrongTypingException was unhandled by user code" og referere ikke til min .cs fil men fra en auto-genereret fil ved runtime.

et udpluk af min kode:

minDTTableAdapters.minTableAdapter minAdapter = new minDTTableAdapters.minTableAdapter();

minDT.minDataTable min = minAdapter.HentRaekker();

foreach (minDT.Row min in min)
  {
    if (min.DBvariabel != null) {
      temp = min.DBvariabel.ToString();
    }
    else {
      temp = "";
    }

Hvad gør jeg galt?
Avatar billede mikkel_sommer Nybegynder
12. september 2006 - 08:48 #1
Prøv med:

if (!Convert.IsDBNull(row["dinKolone"]))
{
      temp = (string) min["dinKolone"];
else
{
      temp = "";
}
Avatar billede -mundi- Nybegynder
12. september 2006 - 09:08 #2
Kan godt være det bare er mig, men jeg ser et issue i du bruger det samme variabel navn til forskellige values.

foreach (minDT.Row min in min)

er det en minDataTable
eller en minDT.Row ?
Avatar billede robson Nybegynder
12. september 2006 - 09:10 #3
hmmm... jeg kan ikke bruge din kode direkte, (jeg arbejder på en webapplication - gør det en forskel?) men har prøvet med:

if (!Convert.IsDBNull(min.DBvariabel))
{
  temp = min.DBvariabel.ToString();
}
...

men får stadig samme fejl :(
Avatar billede robson Nybegynder
12. september 2006 - 09:17 #4
mundi: Du har helt ret - sorry, jeg har fået rodet lidt rundt i variabel navnene, idet jeg forsøgte at gøre det mere overskueligt. Det oprindelige kode er:

ftNetavisTableAdapters.ArtikelTableAdapter artikelAdapter = new ftNetavisTableAdapters.ArtikelTableAdapter();

ftNetavis.ArtikelDataTable artikler = artikelAdapter.HentArtiklerAlle();

foreach (ftNetavis.ArtikelRow artikel in artikler)
{
  if (artikel.Video != null) {
    temp = artikel.Video.ToString();
}
else
{
  temp = "";
}
Avatar billede -mundi- Nybegynder
12. september 2006 - 09:22 #5
Har du prøvet at sætte et breakpoint og så se hvad en artikel reelt indeholder ?
Avatar billede robson Nybegynder
12. september 2006 - 09:25 #6
nej (jeg er MEGET grøn i .NET udvikling...) - prøver din ide...
Avatar billede robson Nybegynder
12. september 2006 - 09:48 #7
Jeg har fundet løsningen:

if (artikel.IsNull("Video"))
osv....

dette løser problemet :o)

Tak for deltagelsen!
Avatar billede robson Nybegynder
12. september 2006 - 09:55 #8
lukker spg.
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