| |
VB.NET - FortgeschritteneCell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Güldner1 | Datum: 21.12.18 14:03 |
| Hallo,
ich möchte dass sobald sich ein der WErt einer Zelle in einem DGV ändert, dieser in die Datenbank abgespeichert wird. hier mein Code
Private Sub datagridview1_change(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Me.DataGridView1.Rows(0).Cells("Werte").Value = Me.DataGridView1.Rows(0).Cells(7).EditedFormattedValue
Feldname = "Werte"
speichern(Feldname)
End SubDabei passiert folgendes. Wenn ich z. B. 5 Datensätze in dem DGV habe und in der Spalte "Werte" die Werte 1, 2,3,4,5 eingebe, dann werde nur die ersten 4 Werte bei erneuten Aufrufen des DGV angezeigt.
Ich habe in den Foren was mit Edited Formatted Value gelesen. Aber es funzt nicht.
Besten Dank für Eure Hilfe | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Manfred X | Datum: 21.12.18 14:33 |
| Hallo!
Was genau machst Du? Wie greifst Du auf die Datenbank zu?
Prinzipiell: Du mußt sicher stellen, daß vor dem Update
der Datenbank der Editmodus der Grid-Zelle beendet worden ist
(und deshalb ggf. das Datenbindungs-Management die Übertragung
des neuen Wertes in die Datenquelle durchgeführt hat.
Allerdings erscheint es mir kontraproduktiv, nach jeder Wertänderung
ein Update der Datenbank durchzuführen. Bei ADO.Net sind andere
Strategien vorzuziehen. | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Güldner1 | Datum: 21.12.18 18:06 |
| Hallo Manfred,
danke erstmal.
Wie beende ich den EditModus der Grid zelle?
Besten Dank im Voraus für Deine Rückmeldung | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Manfred X | Datum: 21.12.18 22:28 |
| Hallo!
Das Datagridview-Control und die Bindingsource-Klasse
verfügen über eine "EndEdit"-Methode, bei deren Aufruf
der aktuelle Editiervorgang abgeschlossen und die
Daten aktualisiert werden.
Falls dabei Fehler auftreten (z.B. Eingabe "unzulässiger" Daten)
wird das Error-Event ausgelöst. | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Güldner1 | Datum: 25.12.18 10:52 |
| Hallo erstmal allen frohe Weihnachten.
Es klappt immer noch nicht. Es muss doch möglich sein, dass sobald ich einen Wert in eine Zelle des Datagrid eingebe, z. b. eine 1 oder 2 oder 3 etc, dass dieser Wert dann in die Datenbank gespeichert wird.
Ich habe den Code mit einem Haltepunkt überprüft. Die Variable Gelspr wird nie mit dem aktuellen Zellwert befüllt. Sie ist leer...Warum??
Der Update Code funktioniert. Wenn ich Gelspr z.B. fest einen Wert zuordne, dann wird er in die Datenbank geschrieben. .
Peils nicht. Woran hakt es?
Freue mich auf Eure Posts.
Private Sub DataGridView1_CellEndEdit(sender As Object, e As _
DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Me.DataGridView1.RefreshEdit()
Dim GelID As String = DataGridView1.Rows(e.RowIndex).Cells( _
"gelldfnr").Value
Dim Gelspr As String = DataGridView1.Rows(e.RowIndex).Cells( _
e.ColumnIndex).Value.ToString
Dim cmd3 As New SqlCommand("Update Gelände Set F02 =@p1 where gelldfnr" & _
"= @pIndex", con)
cmd3.Parameters.Add("@pindex", SqlDbType.BigInt).Value = GelID
cmd3.Parameters.Add("@p1", SqlDbType.NChar, 10, "F02").Value = Gelspr
Me.DataGridView1.EndEdit()
con.Open()
cmd3.ExecuteNonQuery()
con.Close()
End Sub | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: effeff | Datum: 25.12.18 12:13 |
| Also...
Normalerweise holst Du Dir die Daten aus der Datenbank und schreibst sie in eine DataTable, die entweder Standalone oder in einem DataSet ist. Datenänderungen werden dann mit einem einfachen ".Update" in der Datenbank gespeichert.
Anscheinend schreibst Du die Daten aus der Datenbank aber direkt ins DataGridView - und das ist falsch.
Richtige Vorgehensweise: Aus der Datenbank mittels Abfrage eine DataTable füllen, die DataTable als DataSource des DataGridviews angeben und dann die zur Verfügung stehenden Möglichkeiten nutzen.
Wo kommen Deine Daten her? SQLServer? Access-DB?
EALA FREYA FRESENA | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Güldner1 | Datum: 26.12.18 09:08 |
| Hallo EffEff,
genauso mache ich es. Die Daten sind aus einem SQL Server und werden als Datatable über ein entsprechendes SQL Statement geholt...Das Datatable binde ich dann als Datasource an das Grid...
Ich habe auch mal gelesen, dass man mit nicht mit Value sondern mit FormattedValue arbeiten soll. Aber dass hat auch nichts gebracht.
Bin ich den anscheined der einzige der dieses Problem bzw. Aufgabenstellung hat.
Nochmals vielen Dank im Voraus für Eure Mithilfe. | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: effeff | Datum: 26.12.18 22:04 |
| Gut. Es sollte nun reichen:
DataGridView.EndEdit
DataTable.AcceptChanges
DataAdapter.Update(DataTable) EALA FREYA FRESENA | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Manfred X | Datum: 27.12.18 08:38 |
| Hallo!
VORSICHT!
Die AcceptChanges-Methode bewirkt, daß vom Benutzer oder per Code
geänderte oder hinzugefügte Datensätze in der Datatable als "unverändert"
(Rowstate: unchanged) markiert werden, d.h. es erfolgt KEIN Update der
Datenbank für diese Datensätze !!
Im Dialog gelöschte Datensätze werden aus der Datatable entfernt,
bleiben aber beim Update in der Datenbank erhalten!!
Beitrag wurde zuletzt am 27.12.18 um 08:42:50 editiert. | |
Re: Cell value Changed in Datagridview / Update Datenbank klappt nicht | | | Autor: Güldner1 | Datum: 27.12.18 08:58 |
| Hallo Manfred, Hallo EffEff,
vielen Dank für Euer Update. Hatte heute Früh noch einen Geistesblitz. Mein Code funktioniert jetzt, so wie ich ihn am 26.12. gepostet hatte. Was habe ich gemacht. An dem Grid sind noch einige andere Private Sub angedockt. Eine davon ist Handles Datagridview.EditingControlShowing. Diese Privete Sub hat die die Sub Datagridview.CellEndEdit augegabelt.
Da ich den Code aktuelle nicht mehr durch EditingControlShowing durchlaufen lasse, funktioniert es mit dem direkten Update.
Danke und allen einen guten Rutsch. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|