vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Databindings - Änderungen erkennen 
Autor: shivan
Datum: 26.06.12 10:52

Hallo zusammen

Ich habe eine Form mit einem SQLDataAdapter, welcher ein DataSet füllt. Mit Hilfe dieses DataSets mache ich anschliessend meine Bindings.

Beim Speichern möchte ich die Änderungen wie folgt abfragen.

            Dim objDataSetChanges As System.Data.DataSet
 
            Me.BindingContext(dsDataSet, sTableName).EndCurrentEdit()
            If dsDataSet.HasChanges(DataRowState.Modified) Then
                objDataSetChanges = dsDataSet.GetChanges(DataRowState.Modified)
            End If
 
            If dsDataSet.HasChanges(DataRowState.Added) Then
                objDataSetChanges = dsDataSet.GetChanges(DataRowState.Added)
            End If
Eigentlich sollte die Zeile "If dsDataSet.HasChanges(DataRowState.Added) Then" True ergeben, doch irgendwie "merkt" mein Programm nicht, dass Änderungen vorgenommen wurden. Komischerweise funktioniert der selbe Code in anderen Teilen des Programms und ich kann nicht nachvollziehen, was in dieser Form anders ist.

Hat jemand einen Tipp für mich wonach ich suchen könnte? Bitte nachfragen, falls ich wichtige Informationen veressen habe.

Freundliche Grüsse

Shivan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: ModeratorFZelle (Moderator)
Datum: 26.06.12 11:16

Wenn du immer noch BindingContext benutzt bist du ca 7 jahre veraltet.

Wo bindest Du denn wie?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: shivan
Datum: 26.06.12 11:24

Was wäre die bessere Alternative?

Zu Testzwecken nehme ich die Bindings zur Laufzeit (direkt nach der Initialisierung) vor.

Dies sieht wie folgt aus:

(Code unter der Klassendefinition)
    Dim WithEvents oBindingKundenNr As Binding
    Dim WithEvents oBindingKontoBez As Binding
    Dim WithEvents oBindingAuslieferungsNr As Binding
    Dim WithEvents oBindingKontoPreise As Binding
    Dim WithEvents oBindingEkoID As Binding
    Dim WithEvents oBindingAdresse1 As Binding
    Dim WithEvents oBindingAdresse2 As Binding
    Dim WithEvents oBindingAdresse3 As Binding
    Dim WithEvents oBindingAdresse4 As Binding
    Dim WithEvents oBindingAdresse5 As Binding
(Code in Sub, welche nach InitializeComponent() ausgeführt wird)

oBindingKundenNr = New Binding("Text", dsEsrKonten, "t_ESRKonten.EkoKundenNr")
        txtKundenNr.DataBindings.Add(oBindingKundenNr)
 
        oBindingKontoBez = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoBez")
        txtKontoBezeichnung.DataBindings.Add(oBindingKontoBez)
 
        oBindingAuslieferungsNr = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoAuslieferungsNr")
        txtAuslieferungsNr.DataBindings.Add(oBindingAuslieferungsNr)
 
        oBindingKontoPreise = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoKonto")
        txtKontoPreise.DataBindings.Add(oBindingKontoPreise)
 
        oBindingEkoID = New Binding("Text", dsEsrKonten, "t_ESRKonten.EkoID")
        txtEkoID.DataBindings.Add(oBindingEkoID)
 
        oBindingAdresse1 = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoZeile1")
        txtAdresszeile1.DataBindings.Add(oBindingAdresse1)
 
        oBindingAdresse2 = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoZeile2")
        txtAdresszeile2.DataBindings.Add(oBindingAdresse2)
 
        oBindingAdresse3 = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoZeile3")
        txtAdresszeile3.DataBindings.Add(oBindingAdresse3)
 
        oBindingAdresse4 = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoZeile4")
        txtAdresszeile4.DataBindings.Add(oBindingAdresse4)
 
        oBindingAdresse5 = New Binding("Text", dsEsrKonten, _
          "t_ESRKonten.EkoZeile5")
        txtAdresszeile5.DataBindings.Add(oBindingAdresse5)
Danke für die schnelle Antwort!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: ModeratorFZelle (Moderator)
Datum: 26.06.12 13:09

Wie erwartet ist das genau so wie man es seit Jahren nicht mehr macht.
Auch gibt es keinen Grund die Bindings einzeln zu deklarieren und aufzubewahren.

So wie Du es hier machst, kann auch der BindingContext so nicht funktionieren.

Private _EsrKontenBinder as new BindingSource()
 
...
_EsrKontenBinder.DataSource = dsEsrKonten.Tables("t_ESRKonten")
...
 
txtKundenNr.DataBindings.Add("Text", _EsrKontenBinder, "EkoKundenNr")
txtKontoBezeichnung.DataBindings.Add("Text", _EsrKontenBinder, "EkoBez")
txtAuslieferungsNr.DataBindings.Add("Text", _EsrKontenBinder, _
  "EkoAuslieferungsNr")
txtKontoPreise.DataBindings.Add("Text", _EsrKontenBinder, "EkoKonto")
txtEkoID.DataBindings.Add("Text", _EsrKontenBinder, "EkoID")
txtAdresszeile1.DataBindings.Add("Text", _EsrKontenBinder, "EkoZeile1")
txtAdresszeile2.DataBindings.Add("Text", _EsrKontenBinder, "EkoZeile2")
txtAdresszeile3.DataBindings.Add("Text", _EsrKontenBinder, "EkoZeile3")
txtAdresszeile4.DataBindings.Add("Text", _EsrKontenBinder, "EkoZeile4")
txtAdresszeile5.DataBindings.Add("Text", _EsrKontenBinder, "EkoZeile5")
 
 
....
_EsrKontenBinder.EndEdit()
objDataSetChanges = dsDataSet.GetChanges()
...
Warum machen eigentlich alle diesen mist mit den extra Bindings? In Welchem Buch ist das so erklärt?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: shivan
Datum: 26.06.12 16:07

Ich benutze VS 2003, da es sich um eine alte Applikation handelt, welche erst noch migriert werden muss. BindingSource scheint es noch nicht zu geben.

Hast du eine Idee was ich ändern muss, damit ich sehe, ob Änderungen am DataSet gemacht wurden?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: ModeratorFZelle (Moderator)
Datum: 26.06.12 21:35

Wenn Du hilfe willst, solltest Du schon genauere Angaben machen.

1. Da BindingContext kein EndcurrentEdit hat, habt ihr sträflicher Weise Option Strict auf off
2. Es ist gaaaaaanz wichtig das beim BindingContext exakt das steht was im Binding als Source steht.
3. Die Punkt Syntax in dem Propertynamen und die Benutzung des DataSets macht es umständlich und wie du siehst Fehleranfällig.

Benutze also zum Binden nicht das DataSet sondern die DataTable und benutze diese genauso auch im BindingContext.

private t_ESRKonten as DataTable
...
t_ESRKonten = dsEsrKonten.Tables("t_ESRKonten")
...
txtKundenNr.DataBindings.Add("Text", t_ESRKonten, "EkoKundenNr")
 
 
Dim localCurrencyManager As CurrencyManager = CType(Me.BindingContext( _
  t_ESRKonten), CurrencyManager)          
localCurrencyManager.EndCurrentEdit()
Welche Breaking Changes sind es denn das Die Anwendung auf FW 1.1 verharren lassen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: shivan
Datum: 28.06.12 15:19

Danke hat nun doch noch geklappt.

Es sind nicht die Änderungen vom Framework, welche mich auf 1.1 verharren lassen, sondern der Zeitmangel zur Migration (Drittherstellercontrols welche nicht mehr gleich funktionieren etc.)

Freundliche Grüsse

Shivan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Databindings - Änderungen erkennen 
Autor: ModeratorFZelle (Moderator)
Datum: 28.06.12 17:45

Zeitmangel ist immer die Ausrede, denn eigentlich spart man Zeit.
Aber das ist euer Problem.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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