Entwickler-Ecke
WinForms - Combobox Wert NULL
Talemantros - Mo 07.12.15 14:11
Titel: Combobox Wert NULL
Hallo zusammen,
kaum macht man mal paar Monate nichts wegen der Arbeit schon steht man wieder auf dem Schlauch.
Ich habe hier eine "Kleinigkeit" was mich aber gerade vor ein riesen Problem stellt.
Ich habe eine Combobox, die optional zum auswählen ist.
In der Datenbank ist das entsprechende Feld mit "Erlaube Null" markiert.
Die Property der Klasse
C#-Quelltext
1:
| public long? CustomerContactID { get; set; } |
Die Methode zum Schreiben in die MySQL Datenbank. Im einzelnen geht es hier um das Feld "KundekontaktID"
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| public static void UpdateBillingMain(BillingMain myMain) { strSQl = "Update rechnung SET datum=?datum, kundeid=?kundeid, kundekontaktid=?kundekontaktid, prozent=?prozent, art=?art where rechnungid=?rechnungid";
using (MySqlConnection conn = new MySqlConnection(connStr)) { using (MySqlCommand cmd = new MySqlCommand(strSQl, conn)) { conn.Open();
cmd.Parameters.AddWithValue("?kundeid", myMain.CustomerID); cmd.Parameters.AddWithValue("?kundekontaktid", myMain.CustomerContactID); cmd.Parameters.AddWithValue("?datum", Convert.ToDateTime(myMain.BillingDate)); cmd.Parameters.AddWithValue("?prozent", myMain.Prozent); cmd.Parameters.AddWithValue("?art", myMain.Type); cmd.Parameters.AddWithValue("?rechnungid", myMain.BillingId);
cmd.ExecuteNonQuery();
conn.Close(); } } } |
Wenn jemand die Combobox auswählt funktioniert es auch, aber wenn das Feld leer bleibt nicht.
C#-Quelltext
1: 2: 3: 4:
| if (cmbAnsprechpartner.SelectedIndex == -1) myBilling.CustomerContactID = null; else myBilling.CustomerContactID = Convert.ToInt64(cmbAnsprechpartner.SelectedValue); |
Würde mich über Hilfe freuen.
Gruß
Daniel
P.S.: ich weiß noch, dass es keinen Sinn macht zwischen englischen und deutschen Befehlen zu mischen.
Dies ist immer noch das erste Projekt was ich mal vor gefühlt Jahren angefangen habe was ich jetzt bis März endlich mal beenden will und würde dann in einem neuen eure Ratschläge dahin gehend umsetzen.
Ralf Jansen - Mo 07.12.15 15:28
Zitat: |
Wenn jemand die Combobox auswählt funktioniert es auch, aber wenn das Feld leer bleibt nicht. |
Geht nicht ist mal eine sehr dünne Beschreibung. Wieweit hast du das denn schon debuggt? Steht was unerwartetes in SelectedIndex oder SelectedValue? Oder kommt da das passende an aber der Update Befehl schreibt nicht das erwartete in die DB oder knallt es mit einer Exception oder oder oder ....
Zitat: |
P.S.: ich weiß noch, dass es keinen Sinn macht zwischen englischen und deutschen Befehlen zu mischen |
Naggen tun wir trotzdem. Wenn du seit ein paar Monaten nicht dran gearbeitet hast leidest du da hoffentlich selbst dran und nimmst die Lektion mit ;)
Talemantros - Di 08.12.15 09:33
Hey,
der Fehler kommt daher, dass wenn der User nicht den Kontakt angeben will, weil es optional ist, ich dem Wert null zuweise, da die Datenbank an der Ecke leer bleiben soll.
Leider speichert er es so dann nicht und bemängelt die null an der Ecke
Danke
Gruß
Daniel
P.S.: Das Feld KundekontaktID hat einen Fremdschlüssel zu einer anderen Tabelle und beim Update bemängelt er er könne den Fremdschlüssel eine child Row nicht setzen wegen der NULL
Edit. Ich sehe gerade, dass er aus der nicht ausgewerteten Combobox statt meiner zugewiesenen NULL eine 0 macht und dadurch den Schlüssel nicht setzen kann.
Wie könnte ich das umgehen?
EDIT2: Wenn ich genau hingeschaut hätte, dann hätte ich gesehen, dass er den Fehler nicht in der MainMethode sondern einer anderen Methode verursacht hat und das lag daran dass ich long und nicht long? übergeben habe.
Sorry
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!