Es geht um fehlenden UPDAT Code (am Ende)
Ich habe eine DataGridView, die in einigen Zellen Zahlen mit einem # enthalten.
Das sind die Zellen, die auf Datensätze verweisen.
Diese Datensätze sollen geändert werden.
Das DataGridView ist auf der linken Seite.
Text-, Combo-Boxen und DateTimePickes auf der rechten Seite.
45# | 890# | empty cell |cell ..........
----------------------------------------------------------
Globale Definitionen
Im Form-Load Event binde ich die Text-/Combo-Boxen und DataTimePickers an eine Tabelle, myTable. Die Daten kommen von einer MySql Datenbank, die über eine ODBC Verbindung an das Programm angebunden ist
conn.ConnectionString = "Dsn=mis"
...........
Das Load-Ereignis des Formulars
Jetzt kann man in eine Zelle in der DataGridView anklicken –
sollte eine Zahl, die mit einem # endet, dann soll dies Zahl dazu dienen,
den zu ändernen Datensatz zu finden und in die Felder auf der rechten Seite anzeigen.
Der Anwender kann jetzt die Daten ändern.
Bis hier ist alles in Ordnung.
Nach der Änderung der Daten drückt der Benutzer den Update-Button
Ich zeige lieber nicht meine Versuche – sie waren alle nicht erfolgreich
Vielen Dank für Hilfe
Bruno
Ich habe eine DataGridView, die in einigen Zellen Zahlen mit einem # enthalten.
Das sind die Zellen, die auf Datensätze verweisen.
Diese Datensätze sollen geändert werden.
Das DataGridView ist auf der linken Seite.
Text-, Combo-Boxen und DateTimePickes auf der rechten Seite.
45# | 890# | empty cell |cell ..........
----------------------------------------------------------
Globale Definitionen
Im Form-Load Event binde ich die Text-/Combo-Boxen und DataTimePickers an eine Tabelle, myTable. Die Daten kommen von einer MySql Datenbank, die über eine ODBC Verbindung an das Programm angebunden ist
conn.ConnectionString = "Dsn=mis"
...........
Das Load-Ereignis des Formulars
VB.NET-Quellcode
- [/b]Dim strSql As String = "SELECT * FROM tbl_kal_termine limit 1"
- DataAdapter1 = New OdbcDataAdapter(strSql, conn)
- DataAdapter1.Fill(myTable)
- txtID.DataBindings.Add("TEXT", myTable, "terID")
- txtVon.DataBindings.Add("TEXT", myTable, "terVon")
- txtBis.DataBindings.Add("TEXT", myTable, "terBis")
- txtWas.DataBindings.Add("TEXT", myTable, "terWas")
- txtWo.DataBindings.Add("TEXT", myTable, "terWo")
- txtMehr.DataBindings.Add("TEXT", myTable, "terKommentar")
- DateTimePicker.DataBindings.Add("TEXT", myTable, "terDatum")
- cboAuftrag.DataBindings.Add("TEXT", myTable, "terAuftragId")
- cboWer.DataBindings.Add("TEXT", myTable, "terWerID")
- myTable.Clear()[b]
Jetzt kann man in eine Zelle in der DataGridView anklicken –
sollte eine Zahl, die mit einem # endet, dann soll dies Zahl dazu dienen,
den zu ändernen Datensatz zu finden und in die Felder auf der rechten Seite anzeigen.
Der Anwender kann jetzt die Daten ändern.
VB.NET-Quellcode
- Private Sub dataGridView1_CellClick(ByVal sender As Object,
- ByVal e As DataGridViewCellEventArgs) _
- Handles DataGridView1.CellClick
- ' this event comes from a klick on a dataGridView cell.
- ' either the cell is empty or has not number followed by a #, We do not need to continue
- Dim cell As String
- ' an empty cell?
- Try
- cell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
- Catch ex As Exception
- 'an empty cell!
- myTable.Clear()
- Exit Sub
- End Try
- 'If a cell has a number with a # in it, We will continuge
- If cell.ToString.IndexOf("#") < 0 Then
- myTable.Clear()
- Exit Sub
- End If
- ' The table has been created in the load event of the form.
- ' all textboxes, comboboxes and datetimepickers have been linked to this table
- ' because I will focus on a total different set for the table, I need to clear the table first
- myTable.Clear()
- 'Set up the SQL String to the record and retrieve it from the odbc Database.
- Dim strSql As String = "SELECT * FROM tbl_kal_termine where terID = " & cell.Substring(0, cell.IndexOf("#"))
- ' fill myTable using the sql-String
- DataAdapter1 = New OdbcDataAdapter(strSql, conn)
- DataAdapter1.Fill(myTable)
- 'Erstelle einen Commandbuilder für Insert, Update und Delete
- 'Dim commandbuilder1 As New OdbcCommandBuilder(DataAdapter1)
- If myTable.Rows.Count <> 0 Then
- ' all textboxes, comboboxes and datetimepickers are filled!
- BindingSource1.DataSource = myTable
- 'Allow the table to accept changes from the textboxes, comboboxes and datetimepickers
- myTable.AcceptChanges()
- Else
- MsgBox("no data")
- End If
Bis hier ist alles in Ordnung.
Nach der Änderung der Daten drückt der Benutzer den Update-Button
VB.NET-Quellcode
- Private Sub Update_Click(sender As Object, e As EventArgs) Handles Update.Click
- 'to test what Is in row And each cell in the table myTable
- 'I see the changes I made in the myTable table / in each cell
- Dim txt As String = ""
- For Each row In myTable.Rows
- For Each column In myTable.Columns
- Console.Write(vbTab & row(column.ColumnName).ToString)
- txt = row(column.ColumnName).ToString
- Next
- Next row
- ' Ich sehe, dass alle Veränderungen in MyTable enthalten sind
- ' #########################################
- ' Welchen Code brauche ich um ein Update durchzuführen?
- #########################################
- End Sub
Ich zeige lieber nicht meine Versuche – sie waren alle nicht erfolgreich
Vielen Dank für Hilfe
Bruno