public override void Object2Ui(Tabelle t) { if (t != null) { Typ_typ modell = t as Typ_typ; _uiTbBezeichnung.Text = modell.sBezeichnung; } else { _uiTbBezeichnung.Clear(); } }
public override Tabelle Ui2Object(Tabelle record) { Typ_typ t; if (record == null) { t = new Typ_typ(); } else { t = record as Typ_typ; } if (_uiTbBezeichnung.Text.Length == 0) { _uiTbBezeichnung.Focus(); MessageBox.Show("Bezeichnung darf nicht leer sein!", "Fehlermeldung"); return(null); } else { string bez = _uiTbBezeichnung.Text; foreach (Typ_typ item in Datenverwaltung.GetAllRecordsFromTable("Typ_typ")) { if (item.sBezeichnung == bez) { MessageBox.Show("Bezeichnung muss eindeutig sein", "Fehlermeldung"); return(null); } } t.sBezeichnung = _uiTbBezeichnung.Text; } return(t); }
//Biedro internal bool TypSpeichern(Typ_typ typ_typ, out string errmsg) { errmsg = ""; // Annahme: kein Fehler using (SqlConnection con = new SqlConnection(_connectionString)) { con.Open(); String sql; if (typ_typ.iId != null) { sql = "UPDATE Aufkleber.Typ_typ SET sBezeichnung=@pbezeichnung " + "WHERE iId=@pid"; } else { sql = "INSERT INTO Aufkleber.Typ_typ " + "(sBezeichnung) " + "VALUES (@pbezeichnung);" + "SELECT SCOPE_IDENTITY();"; } SqlCommand cmd = new SqlCommand(sql, con); if (typ_typ.iId != null) { cmd.Parameters.AddWithValue("@pid", typ_typ.iId); } // Parameter für Pflichtfelder sind einfach // Man kann den Wert gleich belegen // cmd.Parameters.AddWithValue("@pid", typ_typ.iId); cmd.Parameters.AddWithValue("@pbezeichnung", typ_typ.sBezeichnung); // Will man etwa die Id des neuen Datensatzes, so nutzt man // ExecuteScalar. Die Id wird durch die obige Query ausgegeben. // Entscheidend ist die Funktion SCOPE_IDENTITY(). // Die muss mit der selben Query wie der INSERT aufgerufen werden, sonst // funktioniert es nicht. try { if (typ_typ.iId == null) { typ_typ.iId = Convert.ToInt32(cmd.ExecuteScalar()); Console.WriteLine("Neue Id: {0}", typ_typ.iId); //cmd.ExecuteNonQuery(); } else { // Liefert die Query keinen Wert, dann ExecuteNonQuery // return-Wert ist die Anzahl der betroffenen DS. cmd.ExecuteNonQuery(); //cmd.Parameters.AddWithValue("@pnr", k.sNr); } } catch (SqlException e) { if (e.Number == 2627) { // Unique violation errmsg = "Nummer war nicht eindeutig."; } else { // irgendein Fehler errmsg = "Unbekannter DB-Fehler"; } // Orginaltext noch anhängen errmsg += "\n" + e.Message; return(false); } } return(true); }