problem updating DB

Pace

Well-known member
Joined
Sep 2, 2005
Messages
90
Location
Manchester UK! :)
Programming Experience
1-3
Hi all,

I have a form that displays customer records... I let the user pick a record, edit it, then save the updated record to the backend...

Now when you make an edit and hit save it looks fine, however the backend has not changed... if you move to another record and hit update then save I get the following error:
err2.gif


The code that I have is also included...

can anyone help me?

VB.NET:
 [size=2]
[/size][size=2][color=#0000ff]Private[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub[/color][/size][size=2] MenuItem2_Click([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] sender [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Object, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] e [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.EventArgs) [/size][size=2][color=#0000ff]Handles[/color][/size][size=2] MenuItem2.Click

[/size][size=2][color=#0000ff]If[/color][/size][size=2] MsgBox("Are you Sure?", MsgBoxStyle.YesNo, "Quit?") = MsgBoxResult.Yes _

[/size][size=2][color=#0000ff]Then[/color][/size][size=2] Application.Exit()

[/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub

[/color][/size][size=2][/size][size=2][color=#0000ff]Private[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub[/color][/size][size=2] Form1_Load([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] sender [/size][size=2][color=#0000ff]As[/color][/size][size=2] [/size][size=2][color=#0000ff]Object[/color][/size][size=2], [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] e [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.EventArgs) [/size][size=2][color=#0000ff]Handles[/color][/size][size=2] [/size][size=2][color=#0000ff]MyBase[/color][/size][size=2].Load

[/size][size=2][color=#0000ff]Me[/color][/size][size=2].DsCust1.Clear()

[/size][size=2][color=#0000ff]Me[/color][/size][size=2].OleDbDataAdapter1.Fill(DsCust1)

[/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnSave.Visible = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub

[/color][/size][size=2][/size][size=2][color=#0000ff]Private[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub[/color][/size][size=2] MenuItem3_Click([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] sender [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Object, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] e [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.EventArgs) [/size][size=2][color=#0000ff]Handles[/color][/size][size=2] MenuItem3.Click

MsgBox("Phone Barry and say 'I just used your Help Menu!'", MsgBoxStyle.Information, "Well Done")

[/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub

[/color][/size][size=2][/size][size=2][color=#0000ff]Private[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub[/color][/size][size=2] btnUpdate_Click([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] sender [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Object, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] e [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.EventArgs) [/size][size=2][color=#0000ff]Handles[/color][/size][size=2] btnUpdate.Click

[/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtCustName.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd1.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd2.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd3.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd4.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtCountry.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPcode.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPhone.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtFax.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtIndSec.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtStat.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtIndSec.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPriceList.ReadOnly = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnUpdate.Visible = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnSave.Visible = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnSave.ForeColor = System.Drawing.Color.Red

 

[/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub

 

 

[/color][/size][size=2][/size][size=2][color=#0000ff]Private[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub[/color][/size][size=2] btnSave_Click([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] sender [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Object, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] e [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.EventArgs) [/size][size=2][color=#0000ff]Handles[/color][/size][size=2] btnSave.Click

[/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnSave.Visible = [/size][size=2][color=#0000ff]False

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].btnUpdate.Visible = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtCustName.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd1.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd2.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd3.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtAdd4.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtCountry.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPcode.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPhone.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtFax.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtIndSec.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtStat.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtIndSec.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Me[/color][/size][size=2].txtPriceList.ReadOnly = [/size][size=2][color=#0000ff]True

[/color][/size][size=2][/size][size=2][color=#0000ff]Try

[/color][/size][size=2]OleDbDataAdapter1.Update(DsCust1, "Customer")

[/size][size=2][color=#0000ff]Catch[/color][/size][size=2] ex [/size][size=2][color=#0000ff]As[/color][/size][size=2] Exception

MsgBox(ex.ToString)

[/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Try

[/color][/size][size=2][/size][size=2][color=#0000ff]End[/color][/size][size=2] [/size][size=2][color=#0000ff]Sub

End[/color][/size][size=2] [/size][size=2][color=#0000ff]Class

[/color][/size]
 
Hey Pace,

I'm afraid I can't do much to help here, which is quite distressing as I feel certain I had the exact same problem a while back!! Just can't remember why.

A concurrency error usually occurs when a concurrency has happened ie one user has deleted or changed a record, while another user is still editing it, so the second users information is out of date.

in .Net this is checked for automatically as the Old row data is stored and compared to to current row data.

I realise that you're not having an actual concurrency in this instance but it's being simulated somehow.

I have a funny feeling it's to do with using BeginEdit and EndEdit on the datarow being edited.. but I'm afraid I can't drum up the exact reason..
 
Hi Badger lol!

Thanks for your reply...

I must add, Ive gotten a bit further... I think the reason behind the concurrency was because I had masses of filds in the adapter and was trying only to update a few via the dataset.

Now I have made my adapter on par to the dataset, I dont get the error.

However, once I make an update, the change only appears on the underlying table once I have moved away from the current record, then returned to it.

Can you help me there? :)
 
For anyone else reading this adding;

VB.NET:
[size=2]
[/size][size=2][color=#0000ff]Me[/color][/size][size=2].BindingContext(DsCust1, "Customer").EndCurrentEdit()[/size]
[size=2]
at the begininng of the btnSave_Click procedure adds the changes...[/size]

Badger, just trying your other solution merely for comparion. Is this the OleDbDataAdapter1.AcceptChangesDuringFill() call you mentioned?
 
Hey Pace,

I wasn't referring to the DataAdapter, but the dataset itself, you can call either DsCust1.AcceptChanges, or DsCust1.Tables("Customer").AcceptChanges. But in hindsight I think calling this before the update statement will stop the data being updated at all. It should be called after the update statement. You can also try re-filling the dataset after the update.
 
Thanks again Badger! :)
 
Back
Top