| |
VB.NET - Ein- und UmsteigerDatabindings - Ä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 | |
Re: Databindings - Änderungen erkennen | | | Autor: FZelle (Moderator) | Datum: 26.06.12 11:16 |
| Wenn du immer noch BindingContext benutzt bist du ca 7 jahre veraltet.
Wo bindest Du denn wie? | |
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! | |
Re: Databindings - Änderungen erkennen | | | Autor: FZelle (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? | |
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? | |
Re: Databindings - Änderungen erkennen | | | Autor: FZelle (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? | |
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 | |
Re: Databindings - Änderungen erkennen | | | Autor: FZelle (Moderator) | Datum: 28.06.12 17:45 |
| Zeitmangel ist immer die Ausrede, denn eigentlich spart man Zeit.
Aber das ist euer Problem. | |
| 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 |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|