ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1558
1558
EMPFEHLEN
-
Hallo.
Ich hab ein Problem mit dem Update eines DataGridViews.
Ich verwende das ganze mit MySQL unter VB2008
Mein Problem besteht beim Update. Das auslesen der Daten geht ohne Probleme aber beim Update bekomme ich diesen Fehler:
Hier ist mein Code dazu:Dynamische SQL-Generierung wird gegen mehrere Basistabellen nicht unterstützt.
Code :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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
Imports MySql Imports MySql.Data Imports MySql.Data.MySqlClient Public Class Verwalten 'MySQL deklarieren Dim conn As New MySqlConnection("server=IP;user id=USER;password=PW;database=DB") Dim myCommand As New MySqlCommand Dim myAdapter As New MySqlDataAdapter Dim myReader As MySqlDataReader Dim myData As New DataTable Dim myDataGrid As DataGridView 'neu Dim myDataView As DataView 'neu Dim myDataSet As DataSet 'neu Dim vSQL As New String(Nothing) Private Sub Verwalten_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try myAdapter = New MySqlDataAdapter("", conn) myAdapter.SelectCommand.CommandText = "SELECT DISTINCT Personen.Id, Personen.Titel, Personen.Vorname, Personen.Nachname, Personen.Geb, Personen.Strasse, Personen.PLZ, Personen.Ort, Personen.Email, Personen.Tel, Listennamen.Name FROM Personen INNER JOIN Maillisten ON Personen.Id = Maillisten.P_Id INNER JOIN Listennamen ON Listennamen.Id = Maillisten.L_Id ORDER BY Personen.Id ASC" myAdapter.SelectCommand.CommandType = CommandType.Text myDataSet = New DataSet("Personen") myData = New DataTable("Personen") myDataSet.Tables.Add(myData) myAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey myAdapter.Fill(myData) myDataView = New DataView(myData) myDataGrid = New DataGridView With DG_Verwalten .DataSource = myDataView .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells .RowsDefaultCellStyle.BackColor = Color.Gray .AlternatingRowsDefaultCellStyle.BackColor = Color.WhiteSmoke End With Catch ex As Exception MsgBox("Verbindung zum Server konnte nicht aufgebaut werden.", MsgBoxStyle.Critical, Title:="Information") End Try End Sub Private Sub B_Speichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Speichern.Click Dim cmdb As MySqlCommandBuilder cmdb = New MySqlCommandBuilder(myAdapter) myAdapter.Update(myData) End Sub End Class
Wie kann ich diesen Fehler umgehen?
Vielen Dank.
-
Scheinbar möchtest du vorhandene Personen einer Mailingliste hinzufügen oder aus ihr löschen. Dazu solltest du die drei Tabellen Personen, Maillisten und Listennamen in drei getrennten Tabellen eines Datasets verwalten, für die dann automatische UPDATE-Statements generiert werden können; das ist dann auch bei der Anzeige und Eingabe sehr hilfreich.
Alternativ dazu kannst du aber auch das erforderliche UPDATE-Statement selber definieren und dem DataAdapter zuweisen. Achte aber darauf, dass du auch die erforderlichen ID's der Datensätze verfügbar haben musst; füge die entsprechenden Spalten also deinem SELECT-Staement hinzu. Für das DataGridView kannst du dann diese Spalten als unsichtbar definieren oder sie ganz unterdrücken.Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
Dank für die Antwort. Leider hatte ich bis jetzt keine Zeit.
Welche Lösung würdest du vorschlagen? bzw. ist die bessere?
Könntest du mir vielleicht auch ein kleines Beispiel für die Umsetzung angeben? Bein leider in .Net nicht wirklich gut unterwegs
Danke.
-
Als erstes gehe mal in das Microsoft SQL Server Management Studio. Mache dort einen Rechtsklick auf deine Datenbank und wähle im Kontextmenü
Skript für Datenbank als > CREATE in > Datei...
Das gleiche machst du bei den Tabellen. Rechtsklick auf die Tabelle und im Kontextmenü
Skript für Tabelle als > INSERT in > Datei...
Und die Ergebnisse postest du hier. Außerdem wäre noch ein Screenshot deines Formulars ganz nützlich.
Außerdem empfehle ich dir die Lektüre des Onlinebooks Visual C#, hier der Download-LinkVielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
Danke für den Link.
Bezüglich dem SQL. Ich verwende MySQL mit dem MySQL-Connector.
-
Gern geschehen.
Ob MySQL oder eine andere Datenbank ist egal, die Vrogehensweise ist die gleiche. Allerdings würden Testdaten die Erstellung eines Demos erleichtern.Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
Wenn ich das UPDATE-Statement selbst definieren würde brauch ich im grunde nur abfragen beim speichern ob sie dich Daten im Grid verändert haben oder? Wenn ja UPDATE. Zum UPDATE-Statement selbst... Wie genau müsste das ablaufen? Muss ich da jeden Wert selbst überprüfen ob er geändert wurde?
Wenn man möchte das das UPDATE-Statement automatisch generiert werden soll wie müsste man dann vorgehen?
Wie sagen ich dem Grid das er die Daten aus verschiedenen Tabellen in Verbindung der Primärschlüssel richtig anzeigt?
Danke.
-
Es ist sogar noch einfacher. Du must dann nur die Update-Methode des DataAdapters aufrufen, und dieser führt dann automatisch für jede DataRow das zugehörige INSERT-, UPDATE- oder DELETE-Statement aus. Vorher musst du allerdings die Eigenschaften InsertCommand, UpdateCommand und DeleteCommand korrekt setzen, und zwar so, dass die jeweiligen Werte auch als Parameter übergeben werden können. Ich habe dir bei MSDN ein Beispiel für SQLServer-Klassen herausgesucht. Für MySQL gibt es eigene Klassen, aber die Vorgehensweise ist die gleiche.
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
Ähnliche Themen
-
Verschiedene Tabellen per Auswahl in ein DataGridView laden
Von technikfrager im Forum .NET DatenverwaltungAntworten: 0Letzter Beitrag: 19.12.09, 21:55 -
Mehrere Tabellen eines DataSet in einem DataGridView
Von schebi im Forum .NET DatenverwaltungAntworten: 0Letzter Beitrag: 10.02.08, 10:22 -
Löschen aus mehreren Tabellen
Von bastiglasl im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 13.09.05, 18:01 -
SQL Abfrage aus mehreren Tabellen
Von Iron_Maik im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 10.02.05, 14:09 -
Join mit mehreren Tabellen
Von akkie im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 17.08.03, 12:14





Zitieren
Login




