Description:
> I copied the relevant code:
> ------------------------------
> dadPassingen = New MySqlDataAdapter("SELECT * FROM tolerantie order by
> passingnorm,min_bereik", conAdcosAlgemeen) Dim cbuBuilder As New
> MySqlCommandBuilder(dadPassingen)
>
> Try
> dadPassingen.Fill(dseSet, "tolerantie") Catch ex As Exception
> MessageBox.Show(ex.Message, "Foutmelding")
> Exit Sub
> End Try
>
> 'zorg dat tabel tolerantie case-sensitive is
> dseSet.Tables("tolerantie").CaseSensitive = True
>
> 'primary key in dataset vastleggen
> Dim myColArray(3) As DataColumn
> myColArray(1) = dseSet.Tables("tolerantie").Columns("passingnorm")
> myColArray(0) = dseSet.Tables("tolerantie").Columns("min_bereik")
> myColArray(2) = dseSet.Tables("tolerantie").Columns("max_bereik")
>
> dseSet.Tables("tolerantie").PrimaryKey = myColArray
>
> ----- click edit-button ------
> strBewerktePassingNorm = Me.txtPassingNorm.Text.Trim
> dblBewerkteMinBereik = Me.nudMinBereik.Value dblBewerkteMaxBereik =
> Me.nudMaxBereik.Value
>
> ----- save changes ------
> Dim droCurrentRow As DataRow
>
> Dim strKey(2) As Object
> strKey(1) = strBewerktePassingNorm
> strKey(0) = dblBewerkteMinBereik
> strKey(2) = dblBewerkteMaxBereik
>
> droCurrentRow = Me.dseSet.Tables("tolerantie").Rows.Find(strKey)
> Try
> droCurrentRow.BeginEdit()
> droCurrentRow.Item("passingnorm") = Me.txtPassingNorm.Text.Trim
> droCurrentRow.Item("min_bereik") = Me.nudMinBereik.Value
> droCurrentRow.Item("max_bereik") = Me.nudMaxBereik.Value
> droCurrentRow.Item("min_tolerantie") = Me.nudMinTol.Value
> droCurrentRow.Item("max_tolerantie") = Me.nudMaxTol.Value
> droCurrentRow.EndEdit()
> End Try
>
> Dim dseModified As DataTable =
> dseSet.Tables("tolerantie").GetChanges(DataRowState.Modified)
>
> Try
> If Not IsNothing(dseModified) Then
> dadPassingen.Update(dseModified) 'HERE IT GOES WRONG!
> dseSet.Tables(strTabelNaamDataSet).AcceptChanges()
> End If
>
> Catch dbcx As DBConcurrencyException
> ...THIS EXCEPTION OCCURS!
> End Try
>
> ------------------------------
> De table looks like this:
> CREATE TABLE `tolerantie` (
> `passingnorm` varchar(4) binary NOT NULL default '',
> `min_bereik` float NOT NULL default '0',
> `max_bereik` float NOT NULL default '0',
> `min_tolerantie` float NOT NULL default '0',
> `max_tolerantie` float NOT NULL default '0',
> PRIMARY KEY (`min_bereik`,`passingnorm`,`max_bereik`)
> ) TYPE=MyISAM;
> ------------------------------
>
> I do the same for many other tables, which give no problems. I can't
> help thinking the 'binary' (case-sensitive) field has something to do
> with it, but I can't figure out what.
How to repeat:
use code above
Suggested fix:
?
Description: > I copied the relevant code: > ------------------------------ > dadPassingen = New MySqlDataAdapter("SELECT * FROM tolerantie order by > passingnorm,min_bereik", conAdcosAlgemeen) Dim cbuBuilder As New > MySqlCommandBuilder(dadPassingen) > > Try > dadPassingen.Fill(dseSet, "tolerantie") Catch ex As Exception > MessageBox.Show(ex.Message, "Foutmelding") > Exit Sub > End Try > > 'zorg dat tabel tolerantie case-sensitive is > dseSet.Tables("tolerantie").CaseSensitive = True > > 'primary key in dataset vastleggen > Dim myColArray(3) As DataColumn > myColArray(1) = dseSet.Tables("tolerantie").Columns("passingnorm") > myColArray(0) = dseSet.Tables("tolerantie").Columns("min_bereik") > myColArray(2) = dseSet.Tables("tolerantie").Columns("max_bereik") > > dseSet.Tables("tolerantie").PrimaryKey = myColArray > > ----- click edit-button ------ > strBewerktePassingNorm = Me.txtPassingNorm.Text.Trim > dblBewerkteMinBereik = Me.nudMinBereik.Value dblBewerkteMaxBereik = > Me.nudMaxBereik.Value > > ----- save changes ------ > Dim droCurrentRow As DataRow > > Dim strKey(2) As Object > strKey(1) = strBewerktePassingNorm > strKey(0) = dblBewerkteMinBereik > strKey(2) = dblBewerkteMaxBereik > > droCurrentRow = Me.dseSet.Tables("tolerantie").Rows.Find(strKey) > Try > droCurrentRow.BeginEdit() > droCurrentRow.Item("passingnorm") = Me.txtPassingNorm.Text.Trim > droCurrentRow.Item("min_bereik") = Me.nudMinBereik.Value > droCurrentRow.Item("max_bereik") = Me.nudMaxBereik.Value > droCurrentRow.Item("min_tolerantie") = Me.nudMinTol.Value > droCurrentRow.Item("max_tolerantie") = Me.nudMaxTol.Value > droCurrentRow.EndEdit() > End Try > > Dim dseModified As DataTable = > dseSet.Tables("tolerantie").GetChanges(DataRowState.Modified) > > Try > If Not IsNothing(dseModified) Then > dadPassingen.Update(dseModified) 'HERE IT GOES WRONG! > dseSet.Tables(strTabelNaamDataSet).AcceptChanges() > End If > > Catch dbcx As DBConcurrencyException > ...THIS EXCEPTION OCCURS! > End Try > > ------------------------------ > De table looks like this: > CREATE TABLE `tolerantie` ( > `passingnorm` varchar(4) binary NOT NULL default '', > `min_bereik` float NOT NULL default '0', > `max_bereik` float NOT NULL default '0', > `min_tolerantie` float NOT NULL default '0', > `max_tolerantie` float NOT NULL default '0', > PRIMARY KEY (`min_bereik`,`passingnorm`,`max_bereik`) > ) TYPE=MyISAM; > ------------------------------ > > I do the same for many other tables, which give no problems. I can't > help thinking the 'binary' (case-sensitive) field has something to do > with it, but I can't figure out what. How to repeat: use code above Suggested fix: ?