Autor Beitrag
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Mi 23.11.11 14:56 
Huhu,

wieder einmal stehe ich vor einem Problem oder einer Frage:


Ich programmiere eine Lagerverwaltung.

Datenbank: mySql
Tabellen: Artikel(ArtikelID,ArtikelName,Gruppe), Gruppen(GruppenID,GruppenName)
Foreign key: GruppenID->ArtikelID
DB Zugriff: Über eine 2. Form übergebe ich die Parameter(Passwort, Server...)

In der Verwaltung soll zur Laufzeit auf die Gruppen zugegriffen werden:
ausblenden 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:
24:
25:
private void cboArtikelgruppe_DropDown(object sender, EventArgs e)
{
    try
    {
        conn = new MySqlConnection(connectionString);
        cmd = new MySqlCommand("SELECT GruppenName FROM gruppenstamm;", conn);
        adapter = new MySqlDataAdapter(cmd);
        dataSet = new DataSet();
        adapter.Fill(dataSet);

        cboArtikelGruppe.Items.Clear();
        for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
        {
            cboArtikelGruppe.Items.Add(dataSet.Tables[0].Rows[i][0].ToString());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Warnung", MessageBoxButtons.OK);
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
    }
}


Sobald ich dann einen Button klicke, soll sich die GruppenID in die Tabelle artikel eintragen in der Spalte Gruppe.
Wie kann ich nun auf die ID zugreifen?Ich kann kein SELECT Statement mit INSERT verbinden.
Bitte auch keine Hinweise zu datasets, ich verwende hier keins.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Alles unwichtige ist gelöscht...
try
{
    string query1 = "INSERT INTO artikelstamm(ArtikelID, Artikelname,Gruppe)" +
        " VALUES(@ArtID, @ArtName, @ArtGruppe)";
                
              
    conn = new MySqlConnection(connectionString);
    cmd = new MySqlCommand(query1, conn);
    conn.Open();
    cmd.Parameters.AddWithValue("@ArtID", Convert.ToInt32(txtArtikelnummer.Text));
    cmd.Parameters.AddWithValue("@ArtName", txtArtikelname.Text);
    cmd.ExecuteNonQuery();
    cmd.Connection.Close();

}
catch (MySqlException ex)
{
    MessageBox.Show(ex.Message, "Warnung", MessageBoxButtons.OK);
}


Danke.
Xuxe
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Mi 23.11.11 16:11 
Hmm...könntest du nicht einfach bei deinem SELECT für die Gruppennamen die GruppenID mit abfragen und dann später im DataSet nach dem "IsSelected" Gruppennamen suchen, dann weisst du in welcher Zeile die GruppenID steht und kannst es deinem Gruppen-Parameter zuweisen...
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mi 23.11.11 16:33 
Hi,
user profile iconChiyoko hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden C#-Quelltext
1:
2:
3:
4:
...
dataSet = new DataSet();
adapter.Fill(dataSet);
...

user profile iconChiyoko hat folgendes geschrieben Zum zitierten Posting springen:
[...] Bitte auch keine Hinweise zu datasets, ich verwende hier keins.[...]
Nicht? Und was ist die Klasse DataSet sonst?
Aber okay. Trägt jetzt nicht zur Problemlösung bei. Also Du solltest nicht nur den Namen aus der Tabelle abfragen, sondern alle Informationen, die Du zum weiterarbeiten benötigst (also auch die Id). Du könntest Dir also eine Klasse schreiben, die alle Informationen besitzt.
Dann für jede Zeile in der Tabelle ein Objekt, die in einer List<> und an die ComboBox gebunden.

Wenn nun ein Eintrag in der ComboBox ausgewählt wird, so kannst Du das SelectedItem abfragen, es wieder zu einem Objekt Deiner Klasse casten und hast so Deine Informationen.
Soviel erstmal.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Mi 23.11.11 16:54 
Ach, an eine Liste habe ich gar nicht gedacht, die Idee ist gut.

@Trashkid2000
Das ist einfach zu erklären: Das dataset liegt im Quellcode Abschnitt 1.Ich bezog es aber auf Abschnitt 2, weswegen der Text auch darunter steht.
(und in diesem Quellcode habe ich kein dataset).
Ich hab das auch nur erwähnt, weil es manchmal Leute gibt, die einem dann 20000 gute Ratschläge geben aber keins davon bezieht sich auf mein
eigendliches Problem.

@Beide
Danke, ich versuch das databinding mal an die List<>