Laden...

Probleme mit SQL-Command bei Access

Erstellt von da_owa vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.095 Views
D
da_owa Themenstarter:in
58 Beiträge seit 2007
vor 16 Jahren
Probleme mit SQL-Command bei Access

verwendetes Datenbanksystem: Access

Ich habe folgendes Problem:

In einer Form befindet sich ein DataGridView. Dort hinein wird mit dem der gesamte Inhalt einer Datenbank geladen

       
 private OleDbConnection conn = new OleDbConnection(
            "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = Strafen.mdb;");
 private OleDbDataAdapter da = null;
 private DataTable dt = null;
 private DataView dv = null;
 private DataRowView drv = null;
...
da = new OleDbDataAdapter("SELECT Regelnummer, Strafname, K1, K2, K3, K4, K5, K6
          " + "FROM Strafen ORDER BY Regelnummer", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
dt = new DataTable("Strafen");
da.Fill(dt);
conn.Close();
BindingSource bs = new BindingSource();
dv = new DataView(dt);
bs.DataSource = dv;
dataGridView.DataSource = bs;

Gespeichert wird über folgende Funktion:


            DataTable dt1 = dt.GetChanges();	//Ermittelt die geänderten Datensätze
            if (!(dt == null))
            {
                try
                {
                    conn.Open();
                    int m = da.Update(dt1);		//führt das DB Update aus
                    string s = "Anzahl der Änderungen: " + m.ToString();
                    MessageBox.Show(s, "Speichern war erfolgreich!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dt.AcceptChanges();
                    gespeichert = true;
                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Speichern fehlgeschlagen!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dt.RejectChanges();
                }

                conn.Close();
            }

Wenn ich aber jetzt ein Element in der Datenbank bearbeite oder lösche kommt folgende Fehlermeldung: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

Wundersamerweise tritt der Fehler beim Hinzufügen einer neuen Zeile in der Datenbank nicht auf.

Bitte um eure Mithilfe, ist verdammt dringend 🙁

:::{style="color: red;"}Es gibt 10 Arten von Menschen: Die die Tertiär verstehen, Die die es nicht verstehen und Die die es mit Binär verwechseln){red}
1.274 Beiträge seit 2005
vor 16 Jahren

Da fehlt eine Leerzeichen

"SELECT Regelnummer, Strafname, K1, K2, K3, K4, K5, K6
" + "FROM Strafen ORDER BY Regelnummer"

wird zu

ergibt SELECT Regelnummer, Strafname, K1, K2, K3, K4, K5, K6FROM Strafen ORDER BY Regelnummer){gray}

Upps, das hier ist absoluter Nonsens.

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

A
254 Beiträge seit 2007
vor 16 Jahren

Hi,

die Fehlermeldung sagt, dass Deinem Programm nicht klar ist, was die Schlüsselbegriffe sind, die die den jeweiligen Datensatz der gelöscht bzw. geändert werden soll eindeutig identifiziert.

Ich denke, eine Lösung wäre die Eigenschaft UpdateCommand mit dem jeweiligen Statement, das für das Ändern nötig ist, zu setzen. Für das Löschen (DeleteCommand) setzen.

Tschüss

1.274 Beiträge seit 2005
vor 16 Jahren

Hi,

der Primary Key sollte mitgeladen werden.

Lg
LastGentleman

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein