C# Problem

Bella_Isy

Erfahrenes Mitglied
Guten Morgen zusammen,

ich habe seit längere Zeit das Problem, dass ich den System.DBNULL typ nicht abfangen kann!

In ein Dataset habe ich Daten von einer Datenbank eingelesen. Mit hilfe einer Schleife möchte ich nun ein Listenfeld füllen!
Code:
foreach (DataTable dt in this.dSKunden.Tables)
{
                int i = 0;

                if (this.cmbSucheWaehlen.SelectedItem == "Name")
                {
                    i = dt.Columns.IndexOf("Name");
                }
                else if (this.cmbSucheWaehlen.SelectedItem == "Firma")
                {
                    i = dt.Columns.IndexOf("Firma");
                }
                else if (this.cmbSucheWaehlen.SelectedItem == "Kundennummer")
                {
                    i = dt.Columns.IndexOf("Kundennummer");
                }
                else if (this.cmbSucheWaehlen.SelectedItem == "Ort")
                {
                    i = dt.Columns.IndexOf("Ort");
                }

                foreach (DataRow dr in dt.Rows)
                {             
                    if (dr[i] != "")
                    {
                        this.lstErgebnis.Items.Add(dr[i]);
                    }
                    else
                    {
                        i = 0;
                    }
                }
}
"i" brauche ich deshalb, weil mein Dataset 5 Spalten hat und der Benutzer über eine Combobox das Anzeigekriterium auswählen kann. Daraus ergibt sich dann der entsprechende index wert i.

Mein Problem:
Es gibt jetzt auch den Fall, dass das ausgewählte kriterium leer ist und dieser leere Eintrag soll natürlich nicht in der Liste erscheinen.

In VB.net kann ich dies sehr gut abfangen aber in C# habe ich es nicht geschafft. Ich habe gerstern schon den ganzen Tag versucht es abzufangen aber ohne erfolg.

Bitte Bitte kann mir wer helfen?


Vielen Dank jetzt schon mal

Isabelle
 

LordDeath

Erfahrenes Mitglied
Morgen

Versuchs mal mit

C#:
if (dr[i] != null)
{
   this.lstErgebnis.Items.Add(dr[i]);
}
else
{
   i = 0;
}

Greetz
 
Zuletzt bearbeitet von einem Moderator:

Christian Kusmanow

Erfahrenes Mitglied
Hi Isabelle! :)

Bella_Isy hat gesagt.:
Es gibt jetzt auch den Fall, dass das ausgewählte kriterium leer ist und dieser leere Eintrag soll natürlich nicht in der Liste erscheinen.
Welches Kriterium? Welches man in der ComboBox auswählt oder meinst einen nicht vorhandenen Wert in der dr?
 

Bella_Isy

Erfahrenes Mitglied
Morgen Greetz,

das funktioniert nicht. Ich denke es liegt daran, dass der leere Wert von Type System.DBNULL ist und nicht ein einfacher null.
Ich habe auch schon ausprobiert eine variable vom Type System.DBNull zu erzeugen und in die bedingung zu setzen
Code:
object help = new object[]{System.DBnull};
if (dr[i] != help)
 {
     this.lstErgebnis.Items.Add(dr[i]);
}
else
{
     i = 0;
}
Dies funktioniert leider auch nicht!

Isabelle
 

Bella_Isy

Erfahrenes Mitglied
Hallo cosmochaosmaker,

Das Datenset habe ich mit Kundeninformationen aus einer Datenbank gefüllt!

Also der Benutzer kann über eine Combobox die Folgenden Kriterium wählen
  1. Name
  2. Kundennummer
  3. Firma
  4. Ort
In einem listbox soll nun eine Liste erscheinen vom ausgewählten Kriterium! Die Daten für die Listbox sind in einem DS gespeichert.
Wenn jetzt z.B. in der Combobox "Name" ausgewählt wird soll in der Listbox eine Auflistung aller Namen die im Datenset gefunden wird aufgelistet werden. Im Beispiel steht dann z.b. in der Listbox
  1. Mayer
  2. Müller
  3. Schmied
Die Listbox wird ja gefüllt! Aber es gibt nun auch den Fall das keine Name eingetragen ist sondern nur eine Firmanamen zu finden. Das führt dazu das das Feld Name bei solchen Kunden im Datenset leer ist und in der Listbox wird für diesen Kunden nur eine Leere Zeile angezeigt -> Logisch weil ja kein Name im Datenset gespeichert ist. Ich möchte aber das solche Kunden wenn das Kriterium "Name" ausgewählt ist nicht mit angezeigt wird.
 

Anhänge

  • Leer.JPG
    Leer.JPG
    35,5 KB · Aufrufe: 22