Hallo,
Ik heb een probleem met het wijzigen van een fout ingevoerde record.
Ik heb een formulier met een aantal textboxen en een datagridview die een DS als datasource heeft.
De textboxen zijn met databinding gebonden aan de dataset.
Ik wil nu een aantal records invoeren en maak expres bij een of meerdere record(s) een fout.
Deze ondervang ik in een try & catch methode dat gaat allemaal goed, hij doet nog geen fill actie omdat de update actie mislukt. Dus de gegevens staan nog in de dataset dus ook nog in de datagridview en nu wil ik deze record(s) verbeteren door een juiste waarde in te voeren, maar nu komt het probleem, vb.net blijft deze 1e foutmelding herhalen. Ik weet ook wel hoe dat komt, omdat ik bindingsource.EndEdit() doe op de save_click. Maar als ik deze regel weghaal blijft ie ook de 1e foutmelding herhalen. Dus daar ligt het blijkbaar niet aan. Ik heb nu een aantal uur gezocht naar een soort van beginedit property voor de bindingsource, iets zodat ik weer de record kan editen dat is denk ik de oplossing. Maar ik kan het nergens vinden, ik heb dingen zoals resumebindings gedaan en met de datarowview heb je wel beginedit(), dat heb ik ook geprobeerd, heeft ook geen effect.
Weet iemand waarom ik deze foute record niet meer kan aanpassen/verbeteren ?
Heeft het misschien iets met de DataSet te maken ofzo ? Ik hoop dat iemand dit probleem ook ooit eens heeft gehad. Hieronder stuur ik een stukje code wat ik gebruik voor dit formulier.
Ik heb een probleem met het wijzigen van een fout ingevoerde record.
Ik heb een formulier met een aantal textboxen en een datagridview die een DS als datasource heeft.
De textboxen zijn met databinding gebonden aan de dataset.
Ik wil nu een aantal records invoeren en maak expres bij een of meerdere record(s) een fout.
Deze ondervang ik in een try & catch methode dat gaat allemaal goed, hij doet nog geen fill actie omdat de update actie mislukt. Dus de gegevens staan nog in de dataset dus ook nog in de datagridview en nu wil ik deze record(s) verbeteren door een juiste waarde in te voeren, maar nu komt het probleem, vb.net blijft deze 1e foutmelding herhalen. Ik weet ook wel hoe dat komt, omdat ik bindingsource.EndEdit() doe op de save_click. Maar als ik deze regel weghaal blijft ie ook de 1e foutmelding herhalen. Dus daar ligt het blijkbaar niet aan. Ik heb nu een aantal uur gezocht naar een soort van beginedit property voor de bindingsource, iets zodat ik weer de record kan editen dat is denk ik de oplossing. Maar ik kan het nergens vinden, ik heb dingen zoals resumebindings gedaan en met de datarowview heb je wel beginedit(), dat heb ik ook geprobeerd, heeft ook geen effect.
Weet iemand waarom ik deze foute record niet meer kan aanpassen/verbeteren ?
Heeft het misschien iets met de DataSet te maken ofzo ? Ik hoop dat iemand dit probleem ook ooit eens heeft gehad. Hieronder stuur ik een stukje code wat ik gebruik voor dit formulier.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| Private Sub Nieuw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nieuw.Click dim drv As DataRowView tabelnaamBindingSource.EndEdit() drv = tabelnaamBindingSource.AddNew End Sub Private Sub Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Save.Click Me.Validate() tabelnaamBindingSource.EndEdit() If DS.HasChanges = True Then If Not DS.HasErrors Then Try tabelnaamTableAdapter.Update(DS.tabelnaam) tabelnaamTableAdapter.Fill(DS.tabelnaam) DataGridView1.Refresh() Catch ex As OleDb.OleDbException PrintRowErrs(DS) End Try Else PrintRowErrs(DS) End If Else MsgBox("geen veranderingen") Exit Sub End If End Sub Function PrintRowErrs(ByVal dataSet As DataSet) Dim row As DataRow Dim table As DataTable For Each table In dataSet.Tables For Each row In table.Rows If row.HasErrors Then MsgBox(row.RowError) End If Next Next End Function |