private void btSpeichern_Click(object sender, EventArgs e)
        {
            if (editMode == true)
            {

                // Neues Mitarbeiter Objekt anlegen
                c_Mitarbeiter speicherMitarbeiter = new c_Mitarbeiter();

                // Variablendeklaration
                String strSQL;

                // =====================================
                //   Ueberpruefung auf leere Textfelder
                // =====================================

                // Persoenliche Daten
                if (tbVorname.Text != "" && tbNachname.Text != "" && dtpGebDatum.Text != "")
                {
                    speicherMitarbeiter.setVorname(tbVorname.Text);
                    speicherMitarbeiter.setNachname(tbNachname.Text);
                    // GebDatum umformatieren
                    speicherMitarbeiter.setGebDatum(dtpGebDatum.Text);
                    DateTime date = Convert.ToDateTime(speicherMitarbeiter.getGebDatum());
                    speicherMitarbeiter.setGebDatum(date.ToString("yyyy-MM-dd"));
                }
                else
                {
                    MessageBox.Show("Sie haben nicht alle Persönlichen Daten angegeben.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    return;
                }

                // Anschrift
                if (tbStrasse.Text != "" && tbHausnummer.Text != "" && tbOrt.Text != "" && tbPlz.Text != "")
                {
                    speicherMitarbeiter.setStrasse(tbStrasse.Text);
                    speicherMitarbeiter.setOrt(tbOrt.Text);
                    if (c_Helper.wrongCharNumberExtra(tbHausnummer.Text) == false && c_Helper.numFormat(tbPlz.Text) == false)
                    {
                        speicherMitarbeiter.setHausnummer(tbHausnummer.Text);
                        speicherMitarbeiter.setPlz(Convert.ToInt32(tbPlz.Text));
                    }
                    else
                    {
                        MessageBox.Show("Falsches Format für die Felder Hausnummer und Postleitzahl.\nIm Feld Postleitzahl dürfen nur Zahlen stehen.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("Sie haben nicht alle Anschrift-Daten angegeben.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    return;
                }

                // Gehalt
                if (tbGehalt.Text != "")
                {
                    speicherMitarbeiter.setGehalt(Convert.ToDouble(tbGehalt.Text));
                    if (c_Helper.numFormatPunktKomma(speicherMitarbeiter.getGehalt().ToString()) == true)
                    {
                        MessageBox.Show("Falsches Format für das Feld Gehalt.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("Bitte Feld Gehalt ausfüllen.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    return;
                }

                // Login - Daten
                if (tbBenutzername.Text != "" && ddlMitarbeiterPosition.Text != "")
                {
                    speicherMitarbeiter.setBenutzername(tbBenutzername.Text);
                    speicherMitarbeiter.setPositionBezeichnung(ddlMitarbeiterPosition.SelectedItem.ToString());

                    // Ueberpruefen welche Position ausgewaehlt wurde
                    int dbConnectOk = c.openConnection();
                    DataTable result2 = c.select("SELECT * FROM positionen;");
                    c.closeConnection();

                    int[] arrPosId = new int[result2.Rows.Count];
                    string[] arrPosBez = new string[result2.Rows.Count];

                    if (dbConnectOk == 0)
                    {

                        if (result2 != null)
                        {
                            for (int i = 0; i < result2.Rows.Count; i++)
                            {
                                arrPosId[i] = Convert.ToInt32(result2.Rows[i]["pos_id"]);
                                arrPosBez[i] = (result2.Rows[i]["bezeichnung"]).ToString();
                            }
                        }
                    }

                    for (int i = 0; i < arrPosId.Length; i++)
                    {
                        if (speicherMitarbeiter.getPositionBezeichnung().Equals((arrPosBez[i]).ToString()))
                        {
                            speicherMitarbeiter.setPositionId(arrPosId[i]);
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Login-Daten ausfüllen.", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    return;
                }

                int dBConnectOk = c.openConnection();
                if (dBConnectOk == 0)
                {
                    if (gLoginPosId == 1)
                    {
                        // String fuer Chef
                        strSQL = "UPDATE mitarbeiter SET position_id = '" + speicherMitarbeiter.getPositionId() + "', benutzername = '" + speicherMitarbeiter.getBenutzername() + "', vorname = '" + speicherMitarbeiter.getVorname() + "', nachname = '" + speicherMitarbeiter.getNachname() + "', geburtsdatum = '" + speicherMitarbeiter.getGebDatum() + "', strasse = '" + speicherMitarbeiter.getStrasse() + "', hausnummer = '" + speicherMitarbeiter.getHausnummer() + "', plz = '" + speicherMitarbeiter.getPlz() + "', ort = '" + speicherMitarbeiter.getOrt() + "', gehalt = '" + (speicherMitarbeiter.getGehalt().ToString()).Replace(",", ".") + "' WHERE mitarbeiter_id = " + gId.ToString() + ";";
                    }
                    else
                    {
                        //String fuer Mitarbeiter
                        strSQL = "UPDATE mitarbeiter SET strasse = '" + speicherMitarbeiter.getStrasse() + "', hausnummer = '" + speicherMitarbeiter.getHausnummer() + "', plz = '" + speicherMitarbeiter.getPlz() + "', ort = '" + speicherMitarbeiter.getOrt() + "' WHERE mitarbeiter_id = " + gId.ToString() + ";";
                    }
                    c.update(strSQL, "Mitarbeiter");
                    c.closeConnection();

                    gridMitarbeiterAktualisieren();
                    this.Close();  // Fenster schliessen
                }
            }
        }
        /*
         * ******************************
         *         Control Events
         * ******************************
         * */
        private void winMitarbeiterOeffnen_Load(object sender, EventArgs e)
        {
            if (gLoginMaId != 1)
            {
                // Benutzer ist "normaler" Mitarbeiter
                gbGehalt.Visible = false;
                gbLoginDaten.Visible = false;
            }

            // Neues Mitarbeiter Objekt anlegen
            c_Mitarbeiter oeffneMitarbeiter = new c_Mitarbeiter();

            // Variablendeklaration
            String vorname = String.Empty;
            String nachname = String.Empty;
            String gebDatum = String.Empty;
            String strasse = String.Empty;
            String hausnummer = String.Empty;
            String plz = String.Empty;
            String ort = String.Empty;
            String gehalt = String.Empty;
            String benutzername = String.Empty;
            String position = String.Empty;

            // Mitarbeiter-Daten abrufen
            int dbConnectOk = c.openConnection();
            if (dbConnectOk == 0)
            {
                DataTable result = c.select("SELECT * FROM mitarbeiter WHERE mitarbeiter_id = '" + gId + "'");
                c.closeConnection();
                if (result != null)
                {
                    oeffneMitarbeiter.setVorname((String)result.Rows[0]["vorname"]);
                    oeffneMitarbeiter.setNachname((String)result.Rows[0]["nachname"]);
                    oeffneMitarbeiter.setGebDatum((result.Rows[0]["geburtsdatum"]).ToString());
                    oeffneMitarbeiter.setStrasse((String)result.Rows[0]["strasse"]);
                    oeffneMitarbeiter.setHausnummer((result.Rows[0]["hausnummer"]).ToString());
                    oeffneMitarbeiter.setPlz(Convert.ToInt32((result.Rows[0]["plz"])));
                    oeffneMitarbeiter.setOrt((String)result.Rows[0]["ort"]);
                    oeffneMitarbeiter.setGehalt(Convert.ToDouble((result.Rows[0]["gehalt"])));
                    oeffneMitarbeiter.setBenutzername((String)result.Rows[0]["benutzername"]);
                    oeffneMitarbeiter.setPositionId(Convert.ToInt32(result.Rows[0]["position_id"]));
                    gPosId = Convert.ToInt32(oeffneMitarbeiter.getPositionId());

                    // =====================================
                    //     Combobox mit Werten befuellen
                    // =====================================

                    string bezeichnung = "";
                    int id = 0;
                    int pos = 0;

                    if (initOeffnen == true)
                    {
                        int dBConnectOk = c.openConnection();
                        if (dBConnectOk == 0)
                        {
                            int rows = c.countRows("SELECT COUNT(*) FROM positionen;");
                            if (rows > 0)
                            {
                                DataTable result2 = c.select("SELECT pos_id, bezeichnung FROM positionen;");
                                if (result2 != null)
                                {
                                    for (int i = 0; i < rows; i++)
                                    {
                                        bezeichnung = (String)result2.Rows[i]["bezeichnung"];
                                        id = (int)result2.Rows[i]["pos_id"];
                                        ddlMitarbeiterPosition.Items.Add(bezeichnung);

                                    }
                                }
                            }
                            c.closeConnection();
                        }
                        initOeffnen = false;
                    }

                    // Positionsbezeichnung abfragen
                    string maPosBez = "";
                    c.openConnection();  // Datenbank oeffnen
                    DataTable result3 = c.select("SELECT pos_id, bezeichnung FROM positionen WHERE pos_id = '" + gPosId + "';");
                    c.closeConnection(); // Datenbank schliessen
                    if (result3 != null)
                    {
                        maPosBez = (result3.Rows[0]["bezeichnung"]).ToString();
                    }

                    // Combobox preselected Item
                    for (int i = 0; i < ddlMitarbeiterPosition.Items.Count; i++)
                    {
                        if (ddlMitarbeiterPosition.Items[i].ToString() == maPosBez)
                        {
                            pos = i;
                        }
                    }
                    if (gPosId == 1)
                    {
                        ddlMitarbeiterPosition.SelectedIndex = 0;
                    }
                    else
                    {
                        ddlMitarbeiterPosition.SelectedIndex = pos;
                    }

                    // Formatierungen
                    oeffneMitarbeiter.setGebDatum(oeffneMitarbeiter.getGebDatum().Substring(0, 10));

                    tbVorname.Text = oeffneMitarbeiter.getVorname();
                    tbNachname.Text = oeffneMitarbeiter.getNachname();
                    dtpGebDatum.Text = oeffneMitarbeiter.getGebDatum();
                    tbStrasse.Text = oeffneMitarbeiter.getStrasse();
                    tbHausnummer.Text = oeffneMitarbeiter.getHausnummer();
                    tbPlz.Text = oeffneMitarbeiter.getPlz().ToString();
                    tbOrt.Text = oeffneMitarbeiter.getOrt();
                    tbGehalt.Text = oeffneMitarbeiter.getGehalt().ToString();
                    tbBenutzername.Text = oeffneMitarbeiter.getBenutzername();

                }

                // Datenbankverbindung schliessen
                c.closeConnection();
            }
        }
        private void btSpeichern_Click(object sender, EventArgs e)
        {
            // Neues Mitarbeiter Objekt anlegen
            c_Mitarbeiter neuerMitarbeiter = new c_Mitarbeiter();

            // Variablendeklaration und Initialisierung
            String strSQL = String.Empty;

            // =====================================
            //   Ueberpruefung auf leere Textfelder
            // =====================================

            // Persoenliche Daten
            if (tbVorname.Text != "" && tbNachname.Text != "" && dtpDatum.Text != "")
            {
                neuerMitarbeiter.setVorname(tbVorname.Text);
                neuerMitarbeiter.setNachname(tbNachname.Text);
                // GebDatum umformatieren
                neuerMitarbeiter.setGebDatum(dtpDatum.Text);
                DateTime date = Convert.ToDateTime(neuerMitarbeiter.getGebDatum());
                neuerMitarbeiter.setGebDatum(date.ToString("yyyy-MM-dd"));
            }
            else
            {
                MessageBox.Show("Sie haben nicht alle Persönlichen Daten angegeben.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // Anschrift
            if (tbStrasse.Text != "" && tbHausnummer.Text != "" && tbOrt.Text != "" && tbPlz.Text != "")
            {
                neuerMitarbeiter.setStrasse(tbStrasse.Text);
                neuerMitarbeiter.setOrt(tbOrt.Text);
                if (c_Helper.wrongCharNumberExtra(tbHausnummer.Text) == false && c_Helper.numFormat(tbPlz.Text) == false)
                {
                    neuerMitarbeiter.setHausnummer(tbHausnummer.Text);
                    neuerMitarbeiter.setPlz(Convert.ToInt32(tbPlz.Text));
                }
                else
                {
                    MessageBox.Show("Falsches Format für die Felder Hausnummer und Postleitzahl.\nIm Feld Postleitzahl dürfen nur Zahlen stehen.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
            }
            else
            {
                MessageBox.Show("Sie haben nicht alle Anschrift-Daten angegeben.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // Gehalt
            if (tbGehalt.Text != "")
            {
                neuerMitarbeiter.setGehalt(Convert.ToDouble(tbGehalt.Text));
                if (c_Helper.numFormatPunktKomma(tbGehalt.Text) == true)
                {
                    MessageBox.Show("Falsches Format für das Feld Gehalt.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("Bitte Feld Gehalt ausfüllen.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // Login - Daten
            if (tbInitUser.Text != "" && tbInitPasswort.Text != "")
            {
                neuerMitarbeiter.setBenutzername(tbInitUser.Text);
                neuerMitarbeiter.setPasswort(tbInitPasswort.Text);
                if (neuerMitarbeiter.getBenutzername().Length < 3 || neuerMitarbeiter.getPasswort().Length < 8)
                {
                    MessageBox.Show("Mindeslänge Benutzername: 3 Zeichen.\nMindestlänge Passwort: 8 Zeichen.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                // Ueberpruefen welche Position ausgewaehlt wurde
                int dbConnectOk = c.openConnection();
                DataTable result2 = c.select("SELECT * FROM positionen;");
                c.closeConnection();

                int[] arrPosId = new int[result2.Rows.Count];
                string[] arrPosBez = new string[result2.Rows.Count];

                if (dbConnectOk == 0)
                {

                    if (result2 != null)
                    {
                        for (int i = 0; i < result2.Rows.Count; i++)
                        {
                            arrPosId[i] = Convert.ToInt32(result2.Rows[i]["pos_id"]);
                            arrPosBez[i] = (result2.Rows[i]["bezeichnung"]).ToString();
                        }
                    }
                }

                for (int i = 0; i < arrPosId.Length; i++)
                {
                    if (ddlPosition.SelectedItem.ToString().Equals((arrPosBez[i]).ToString()))
                    {
                        neuerMitarbeiter.setPositionId(arrPosId[i]);
                    }
                }
            }
            else
            {
                MessageBox.Show("Login-Daten ausfüllen.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // =====================================
            //     Daten in Datenbank schreiben
            // =====================================

            int dBConnectOk = c.openConnection();
            if (dBConnectOk == 0)
            {
                strSQL = "INSERT INTO mitarbeiter (position_id, benutzername, passwort, vorname, nachname, geburtsdatum, strasse, hausnummer, plz, ort, gehalt)" +
                    "VALUES ('" + neuerMitarbeiter.getPositionId() + "', '" + neuerMitarbeiter.getBenutzername() + "', '" + c_Helper.encrypt(neuerMitarbeiter.getPasswort()) + "' , '" + neuerMitarbeiter.getVorname() + "', '" + neuerMitarbeiter.getNachname() + "', '" + neuerMitarbeiter.getGebDatum() + "', '" + neuerMitarbeiter.getStrasse() + "', '" + neuerMitarbeiter.getHausnummer() + "', '" + neuerMitarbeiter.getPlz() + "', '" + neuerMitarbeiter.getOrt() + "', '" + (neuerMitarbeiter.getGehalt().ToString()).Replace(",",".") + "');";
                c.insert(strSQL, "Mitarbeiter");
                c.closeConnection();
                gridMitarbeiterAktualisieren();

                this.Close();  // Fenster schliessen
            }
        }