Datagridview liest Änderung nicht aus

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Datagridview liest Änderung nicht aus

    Hallo,
    ich arbeitete mit einem Datagridview ohne Dataset.
    Die Befüllung funktioniert einwandfrei:

    VB.NET-Quellcode

    1. Do While Wohnungssatz.ExternREADER(0).Read
    2. datazaehler += 1
    3. With Imob_Wohnung.DataGridView_Kostenstellen
    4. .Rows.Add()
    5. .Rows(datazaehler).Cells(0).Value = Wohnungssatz.ExternREADER(0)("FN01").ToString
    6. .Rows(datazaehler).Cells(1).Value = Wohnungssatz.ExternREADER(0)("FN02").ToString
    7. .Rows(datazaehler).Cells(2).Value = False
    8. .Rows(datazaehler).Cells(3).Value = 0
    9. .Rows(datazaehler).Cells(4).Value = 0
    10. .Rows(datazaehler).Cells(5).Value = 0
    11. .Rows(datazaehler).Cells(6).Value = 0
    12. .Rows(datazaehler).Cells(7).Value = 0


    Wenn ich nun Daten geändert habe und diese wieder auslesen möchte

    VB.NET-Quellcode

    1. For Me.I = 0 To Imob_Wohnung.DataGridView_Kostenstellen.RowCount - 1
    2. With Wohnungssatz
    3. .Initalisieren()
    4. .Feld(1).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(0).Value & "-" & WohnNr
    5. .Feld(2).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(1).Value
    6. .Feld(3).Wert = CStr(Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(2).Value)
    7. .Feld(6).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(3).Value.ToString
    8. .Feld(7).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(4).Value.ToString
    9. .Feld(8).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(5).Value.ToString
    10. .Feld(9).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(6).Value.ToString
    11. .Feld(10).Wert = Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(7).Value.ToString
    12. .Feld(11).Wert = CStr(Imob_Wohnung.DataGridView_Kostenstellen.Rows(Me.I).Cells(8).Value)


    erhalte ich immer den gesetzten Wert und nicht den geänderten Wert.
    Die Eingabe ist möglich, also readonly = false

    Hier die Einstellungen:

    VB.NET-Quellcode

    1. With Me.DataGridView_Kostenstellen
    2. .AllowUserToAddRows = False
    3. .AllowUserToDeleteRows = False
    4. .AllowUserToResizeColumns = False
    5. .AllowUserToResizeRows = False
    6. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    7. .ScrollBars = ScrollBars.Both
    8. For Me.I = 2 To Me.DataGridView_Kostenstellen.Columns.Count - 1
    9. .Columns(Me.I).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
    10. .Columns(Me.I).SortMode = DataGridViewColumnSortMode.NotSortable
    11. Next
    12. End With
    Gruß Markus

    Westerwälder schrieb:

    ist eine Form.
    oder die mit New erstellte Instanz dieser Form?
    Informiere Dich zunächst über modale und nicht modale Dialoge.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nein es ist wird keine neue Instanz gebildet.
    Ich öffne alle Formen im nicht modalen Modus mit Form.show
    Form.ShowDialog bekomme ich das gleiche Ergebnis.
    Kann es sein, dass ich in dem Spalten des DGV was angegeben habe, was den Datenaustausch verhindert?
    Gruß Markus
    Es kann sein, dass die beschriebene und die ausgelesene Instanz nicht dieselben sind, weiß ich aber nicht.
    Mach mit

    VB.NET-Quellcode

    1. Using dlg As New FormX
    2. dlg.ShowDialog()
    3. End Using
    einen modalen Dialog, such mal nach der nicht modalen Variante (nimm eine von mir, die läuft).
    Und dann sieh mal, was dann passiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Guten morgen,
    mit dem folgenden Öffnen

    VB.NET-Quellcode

    1. Using dlg As New Imob_Wohnung
    2. dlg.ShowDialog()
    3. End Using
    4. ' Imob_Wohnung.Show()

    reagiert die Form gar nicht, d.h. nun werden die Daten im DGV nicht einmal mehr angezeigt. Es ist doch so, dass wenn ich in einer Zelle des DGV Daten eingeben kann, die Zelle nicht gesperrt ist, oder gibt es da irgendwo in den Spaltenoptionen einen Punkt der dies beeinflussen kann. An anderer Stelle des Programmes arbeite ich auf ähnliche Weise mit einem DGV, wo es wie gewünscht funktioniert.
    Gruß Markus

    Westerwälder schrieb:

    An anderer Stelle des Programmes arbeite ich auf ähnliche Weise mit einem DGV, wo es wie gewünscht funktioniert.
    Ich denke mal, da haste einen fürchterlichen Murks zusammengecodet, der völlig inkompatibel zu .NET ist und jetzt beginnt das Machwerk Dir auf die Füße zu fallen.
    Trenne GUI undDaten, räume Deine Formen auf, greife nicht von 17 Stellen auf das DGV zu.
    Programmiere in VB.NET, nicht aber in VB6.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das DGV wird wie oben gezeigt befüllt, ansonsten mache ich mit dem Teil nichts.
    Habe nun mal zum Testen, den Zellinhalt in der Form, in welcher auch das DGV liegt, abzufragen. Erhalte dort das gleiche falsche Ergebnis.
    Mir ist aber folgendes aufgefallen.
    Ändere ich nur den Wert in rows(0).cells(3) erhalte ich immer den gesetzten und nicht geänderten Wert.
    Gebe ich in rows(1).cells(3) auch einen neuen Wert ein, dann wird der geänderte Wert in rows(0).cells(3) richtig übernommen ???
    Gruß Markus
    Hast Du hier irgendwelche Properties verändert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Habe mal nachgeschaut, Bearbeiten ist aktiv, alles andere ist deaktiviert. Das DGV ist an keine Datenquelle gebunden, liegt aber in einer Groupbox. Die Spalten sind entsprechend den Werten formatiert:
    Spalte 0 Textbox für die Kostenstellennummer mit Wohnungsnummer
    Spalte 1 Textbox für die Bezeichnung der Kostenstelle
    Spalte 2 Checkbox für Aktiv oder Deaktiv
    Spalte 3 Textbox für Zählerstand am 01.01. Format nummerisch mit zwei Kommastellen
    Spalte 4 Textbox für Zählerstand am 31.12. Format nummerisch mit zwei Kommastellen
    Spalte 5 Textbox für Zählerstand aktuell Format nummerisch mit zwei Kommastellen
    Spalte 6 Textbox für Wert bereits berechnet Format nummerisch mit zwei Kommastellen
    Spalte 7 Textbox für Wert Eigenverbrauch Format nummerich mit zwei Kommastellen
    Spalte 8 bis 19 Checkboxen Aktiv Monate Januar bis Dezember
    Gruß Markus
    OK, irgendwie denke ich müssen wir die Sache mal lösen.
    Mir wird oftmals Gurkencode oder VB6-Code vorgeworfen. Woher kommt das? Ich programmiere seit 1987, damals unter GW-Basic.
    Denke den meisten sagt dieses gar nichts mehr. Bin gelernter Bankkaufmann und habe erstmals vor einem Nixdorf-Ternimal gesessen was mein Interesse zur Materie geweckt hat. Nach meinem Wechsel in die freie Wirtschaft habe ich unzählige Programme im Basic-Code entwickelt (FIBU, Auftragsverwaltung, Lagerwesen usw.) die heute noch teilweise im Einsatz sind.
    Die Programmierung die ich zur Zeit mache, tue ich auch nicht aus Spass. Im Grunde schreibe ich einen VB 2008 Code um, der nicht dem Standard entspricht (viele goto Anweisungen, Option Sciript Off).
    Wenn jemand bereit ist, mir meine Fehler aufzeigen, werde ich gerne meine Daten in Form von drei Ordner zur Verfügung stellen.
    Da diese Daten sehr sensibel sind habe ich hier eine Auswahl der Mitglieder im Forum getroffen:
    EDR
    RodofGermany
    Hal2000
    Mike69
    Gruß Markus
    Ich hatte 15 Jahre Programmierabstinenz hinter mir als ich VS2010 installierte
    und wieder zu programmieren versuchte - ich musste eigentlich wieder total neu beginnen
    (OOP, Klassen, Objekte, generische Auflistungen, Lambdaausdrücke in LINQ-Abfragen uvm.)

    Westerwälder schrieb:

    Mir wird oftmals Gurkencode oder VB6-Code vorgeworfen
    Es gibt hier einen sehr guten Beitrag von SeriTools, der hat mir z.B. sehr geholfen...
    und die beiden Bücher, als ich mir das 2010er gekauft hatte:
    Entwicklerbuch Visual Basic 2005
    Entwicklerbuch Visual Basic 2008
    und die Tutorials von EDR!
    Danke für den Hinweis. Habe eigentlich viel Literatur über das Thema.
    Es gab ja mal früher den Datenkaufmann der die Schnittstelle zwischen dem Kaufmann und dem Programmierer war.
    Denke in dieser Position wäre ich besser aufgehoben gewesen.
    Ok, denke ich werde die alte Version (welche ja 5 Jahre stabil läuft) weiterhin benutzen und die Sache mit der Umschreibung aufgeben.
    Danke an alle.
    Gruß Markus
    Ja, das ist die Sache. Habe so gefühlte 1/3 bereits umgeschrieben und durch Umgestaltung die Geschwindigkeit durch anderen Datenbankzugriff nahezu verdoppelt. Wenn ich so weiter schreibe (in meinem Stil) darf ich hier halt keine Fragen mehr stellen.

    Habe den Eindruck, dass man zu alt wird für den ganzen Kram:
    Früher war das so, daß bei steigenden Zinsen der Aktienkurs fällt und umgedeht; stimmt nicht mehr
    oder eine 15Mo3-Leitung war halt eine 15MO-Leitung, heute ist sie nur noch eine EN-undirgendwasnummer
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    Wenn ich so weiter schreibe (in meinem Stil) darf ich hier halt keine Fragen mehr stellen
    :?:
    Hier im Forum kannst du immer Fragen stellen...
    Wenn du dein altes Projekt umschreiben willst, wird auch ein neues Projekt im neueren Stil einmal herauskommen.
    Die Fragen kommen doch von selbst und nur nicht aufgeben...