Zum Inhalt springen

Der.Andi

Mitglieder
  • Gesamte Inhalte

    28
  • Benutzer seit

  • Letzter Besuch

Beiträge von Der.Andi

  1. Hey,

    ArtikelgruppenAufrufen();

    DataTable tabelle = datencontainer.Tables["tabelle"];

    DataRow zeile = tabelle.NewRow();

    zeile["Artikelgruppe"] = textBox5.Text;

    zeile["Beschreibung"] = textBox1.Text;

    tabelle.Rows.Add(zeile);

    abfrage.CommandText = "Insert into Artikelgruppe(Artikelgruppe, Beschreibung) Values (@Artikelgruppe, @Beschreibung)";

    parameter = abfrage.Parameters.Add("@Artikelgruppe", OleDbType.LongVarChar);

    parameter.SourceColumn = "Artikelgruppe";

    parameter = abfrage.Parameters.Add("@Beschreibung", OleDbType.LongVarChar);

    parameter.SourceColumn = "Beschreibung";

    adapter.InsertCommand = abfrage;

    verbindung.Open();

    adapter.Update(datencontainer, "tabelle");

    verbindung.Close();

    Aber das mache ich hier doch auch und da kommt kein Fehler. Hier speichert er alles vernünftig ab.

  2. Erstmal ein herzliches Hallo an alle!

    Da ich ab August mit meiner Ausbildung als Fachinformatiker Anwendungsentwicklung anfange, dachte ich mir melde ich mich hier schonmal an. Denn es gibt bestimmt öfters mal Situationen wo man hier nachlesen/nachfragen kann.

    Jetzt aber mal zum Topic:

    Da ich wie schon gesagt bald mit meiner Ausbildung anfange wollte ich mich etwas mit Datenbanken beschäftigen, da dies ein Thema war, was bei meinem Fachabitur (Elektrotechnik - Schwerpunkt Informationstechnik) nur kurz mal angeschnitten wurde. Um es genau zu sagen haben wir eigentlich nur Modelle entworfen (ERM) und etwas mit SQL ausprobiert.

    Ich wollte, bzw. mache gerade, nun ein Programm, welches mit einer Acess Datenbank kommuniziert, um verschiedene Daten abzufragen.

    Im folgenden Stelle ich es einfach mal eben vor und mein Problem kommt dann danach.

    Vorstellung:

    Also das Programm soll eine kleine Lagerverwaltung sein. Man kann die Artikelliste aufrufen (nacher auch drin suchen) und auch neue Artikel hinzufügen.

    vorschau_1.png

    Um diese Sachen abzuspeichern dient die Access-Datenbank, in der es eine Tabelle mit dem Namen Artikel und eine Tabelle mit dem Namen Artikelgruppe gibt. Diese stehen in einer 1:n Beziehung zueinander.

    vorschau_3.png

    Also meine bisherige Errungenschaft ist, dass ich die Tabelle Artikelgruppe in einem DataGridView ziegen kann. Außerdem kann ich auch neue hinzufügen, welche sich in der Access-Datenbank auch abspeichern.

    OleDbConnection verbindung = new OleDbConnection();

    OleDbCommand abfrage = new OleDbCommand();

    BindingSource bindingSource = new BindingSource();

    OleDbDataAdapter adapter = new OleDbDataAdapter();

    OleDbParameter parameter = new OleDbParameter();

    DataSet datencontainer = new DataSet();

    Methode die die Artikelgruppen-Tabelle ins Datagrid stellt:

    private void ArtikelgruppenAufrufen()

    {

    datencontainer.Clear();

    // Festlegen des Kommandos

    abfrage.CommandText = "Select * from Artikelgruppe";

    // Zuweisen des Kommandos an das DataAdapter-Objekt

    adapter.SelectCommand = abfrage;

    verbindung.Open();

    adapter.Fill(datencontainer, "tabelle");

    verbindung.Close();

    // BindingSource-Objektes mit der Datenquelle verbinden

    bindingSource.DataSource = datencontainer;

    bindingSource.DataMember = "tabelle";

    // Eigentliche Datenanbindung an das DataGridView

    dataGridView1.DataSource = bindingSource;

    }

    Neue Artikelgruppe hinzufügen:

    ArtikelgruppenAufrufen();

    DataTable tabelle = datencontainer.Tables["tabelle"];

    DataRow zeile = tabelle.NewRow();

    zeile["Artikelgruppe"] = textBox5.Text;

    zeile["Beschreibung"] = textBox1.Text;

    tabelle.Rows.Add(zeile);

    abfrage.CommandText = "Insert into Artikelgruppe(Artikelgruppe, Beschreibung) Values (@Artikelgruppe, @Beschreibung)";

    parameter = abfrage.Parameters.Add("@Artikelgruppe", OleDbType.LongVarChar);

    parameter.SourceColumn = "Artikelgruppe";

    parameter = abfrage.Parameters.Add("@Beschreibung", OleDbType.LongVarChar);

    parameter.SourceColumn = "Beschreibung";

    adapter.InsertCommand = abfrage;

    verbindung.Open();

    adapter.Update(datencontainer, "tabelle");

    verbindung.Close();

    Das funktioniert wie gesagt alles Einwandfrei. Doch bei der Tabelle Artikel stoße ich auf ein Problem. Das Aufrufen an sich klappt. Also man sieht, was alles in der Tabelle drin steht. Doch das hinzufügen von neuen Artikel klappt nicht.

    Methode, die die Tabelle Artikel im Datagrid darstellt:

    private void ArtikelAufrufen()

    {

    datencontainer.Clear();

    // Festlegen des Kommandos

    abfrage.CommandText = "Select * from Artikel";

    // Zuweisen des Kommandos an das DataAdapter-Objekt

    adapter.SelectCommand = abfrage;

    verbindung.Open();

    adapter.Fill(datencontainer, "tabelle1");

    verbindung.Close();

    // BindingSource-Objektes mit der Datenquelle verbinden

    bindingSource.DataSource = datencontainer;

    bindingSource.DataMember = "tabelle1";

    // Eigentliche Datenanbindung an das DataGridView

    dataGridView1.DataSource = bindingSource;

    }

    Der Problemfall... Eigentlich sollte ich hiermit einen neuen Artikel hinzufügen:

    ArtikelAufrufen();

    DataTable tabelle = datencontainer.Tables["tabelle1"];

    DataRow zeile = tabelle.NewRow();

    zeile["Artikelgruppe"] = comboBox1.Text;

    zeile["ArtikelNr"] = 0;

    zeile["Einkaufspreis"] = textBox3.Text;

    zeile["Artikelbezeichnung"] = textBox2.Text;

    zeile["Mengeneinheit"] = textBox4.Text;

    tabelle.Rows.Add(zeile);

    abfrage.CommandText = "Insert into Artikel(Artikelgruppe, ArtikelNr, Artikelbezeichnung, Einkaufspreis, Mengeneinheit) Values (@Artikelgruppe, @ArtikelNr, @Artikelbezeichnung, @Einkaufspreis, @Mengeneinheit)";

    parameter = abfrage.Parameters.Add("@Artikelgruppe", OleDbType.LongVarChar);

    parameter.SourceColumn = "Artikelgruppe";

    parameter = abfrage.Parameters.Add("@ArtikelNr", OleDbType.Integer);

    parameter.SourceColumn = "ArtikelNr";

    parameter = abfrage.Parameters.Add("@Einkaufspreis", OleDbType.LongVarChar);

    parameter.SourceColumn = "Einkaufspreis";

    parameter = abfrage.Parameters.Add("@Artikelbezeichnung", OleDbType.LongVarChar);

    parameter.SourceColumn = "Artikelbezeichnung";

    parameter = abfrage.Parameters.Add("@Mengeneinheit", OleDbType.LongVarChar);

    parameter.SourceColumn = "Mengeneinheit";

    adapter.InsertCommand = abfrage;

    verbindung.Open();

    adapter.Update(datencontainer, "tabelle1");

    verbindung.Close();

    Der Fehler der immer kommt, wenn ich einen Artikel hinzufügen will ist:

    Parameter @Artikelbezeichnung hat keinen Standartwert

    Ich denke mal, dass hat irgendwas damit zu tun, dass ja die ArtikelNr ein

    AutoWert hat. Deswegen habe ich Sie auch nicht als Parameter o.ä. angegben. Denn eigentlich sollte doch die Datenbank dem Programm sagen, dass dort die fortlaufende Zahl hinkommt. Wahrscheinlich liege ich da aber falsch. Ich hoffe mal mir kann irgendwer helfen, damit ich das Programm bis zum Ausbildungsbeginn noch hinbekomme :D

    Ach was noch zu sagen ist... Da ja die Artikelgruppe in Beziehung steht muss man ja erst eine Artikelgruppe der Datenbank hinzufügen, damit man einen Artikel hinzufügen kann. Danach wählt der Benutzer in der ComboBox die Artikelgruppe aus. Also da kann eigentlich kein Fehler sein.

    Hier eben noch der Code dafür:

    private void CBAktualisieren()

    {

    abfrage.CommandText = "Select Artikelgruppe from Artikelgruppe";

    verbindung.Open();

    OleDbDataReader datenleser = abfrage.ExecuteReader();

    comboBox1.Items.Clear();

    while (datenleser.Read())

    {

    comboBox1.Items.Add(datenleser["Artikelgruppe"]);

    }

    datenleser.Close();

    verbindung.Close();

    }

    Mit freundlichen Grüßen,

    Andi

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...