Hi all,
i have a problem with a transaction.i will tray to explain my problem.
i have a Dataset that i have fill using 2 DataAdapter with a simple query
( all tables with an autonumber).

i have made code for the dataadapter rowupdate to get the @@identity of my
table.
everything works fine.

now is the problem,
i have made a transaction to made this works,
when i do the endcurrent edit of my CurrencyManager, i want to submit the
row to the DataBase.
i have submited the first table and works fine
when i try to submit the second table it throws an exception.
after that every thing is ok

but when i press again the save button
when i´m going to submit the first table again it throws an cocurrency
violation, and the row state
of the row that i´m try to submit have changed the rowstate from Added to
Modified. anyone knows why ??

thsk
JSB

plsea see the code below


so i have made some thing like this

'update Function
dim cmd as SQlClient.CommandBulider ( DataAdapter)
dim cmd1 as SQlClient.CommandBulider ( DataAdapter2)
try

BD.Open
trans = bd.BeginTransaction

DataAdapter.update ( Ds,Table)
' some code that mades a error
' bla bla bla
' in this peace of code ocurs an Error that throws an Exception
DataAdapter2.update ( Ds,Table2)

trans.comit
catch
trans.rollback
finally
bd.close
end try

Re: Update a Table using transactions by William

William
Fri Apr 23 10:18:41 CDT 2004

Joao:

Something seems very weird here. If the first update worked, then the
acceptchanges is called and the rowstates of all the rows in the first table
shouldn't inidcate any modifications. So, if you call update successfully,
you can call it 10,00000000 times immediately afterward and nothign will
happen (ok your finger would get tired but you get my point). So, if no new
editing is done and now your rowstate is modified, I can't imagine the
update is working.

So, you call update once on the first table, everything is good, call update
on the second table, it blows up. Now, you don't do any new editing, press
save, which I assume fires update1 then update2, update 1 blows up with a
concurrency exception and the rowstates are changed? I noticed the
exception block rolls back the transaction...have you stepped through and
seen what's happening there b/c there's no visual cue that an exception is
thrown As force of habit, I throw in Debug.Assrt(false,
exceptionVariable.ToString()); so that I'll get visual notification if i
raise an exception in debug mode, but when I put in it release it won't
happen.

Anyway, get back to me on these b/c something definitely seems weird.

Also, just as a matter or preference, may I suggest moving these to stored
procs and implementing your transactions on the back end. It's a much more
robust mechanism.. the whole notion of client side transactions leaves me a
bit skittish and maybe it's just b/c of misuse, but I've heard more horrow
stories about client side transactions failing , or the app blowing up
leaving locks on the table and all sorts of other ghastly stuff. Just a
suggestion.

Cheers,

Bill
"João Santa Bárbara" <joaosb@i24portugal.com> wrote in message
news:OPiDNyTKEHA.3292@TK2MSFTNGP11.phx.gbl...
> Hi all,
> i have a problem with a transaction.i will tray to explain my problem.
> i have a Dataset that i have fill using 2 DataAdapter with a simple query
> ( all tables with an autonumber).
>
> i have made code for the dataadapter rowupdate to get the @@identity of my
> table.
> everything works fine.
>
> now is the problem,
> i have made a transaction to made this works,
> when i do the endcurrent edit of my CurrencyManager, i want to submit the
> row to the DataBase.
> i have submited the first table and works fine
> when i try to submit the second table it throws an exception.
> after that every thing is ok
>
> but when i press again the save button
> when i´m going to submit the first table again it throws an cocurrency
> violation, and the row state
> of the row that i´m try to submit have changed the rowstate from Added to
> Modified. anyone knows why ??
>
> thsk
> JSB
>
> plsea see the code below
>
>
> so i have made some thing like this
>
> 'update Function
> dim cmd as SQlClient.CommandBulider ( DataAdapter)
> dim cmd1 as SQlClient.CommandBulider ( DataAdapter2)
> try
>
> BD.Open
> trans = bd.BeginTransaction
>
> DataAdapter.update ( Ds,Table)
> ' some code that mades a error
> ' bla bla bla
> ' in this peace of code ocurs an Error that throws an Exception
> DataAdapter2.update ( Ds,Table2)
>
> trans.comit
> catch
> trans.rollback
> finally
> bd.close
> end try
>
>
>



Re: Update a Table using transactions by Joćo

João
Fri Apr 23 10:31:15 CDT 2004

thks, but i have 2 tables with lots of fields, and doing a Store procedure
is not one of my options.
but i think that microsoft should review this in future versions of ADO.NET

but thks any way,


JSB
:(

"William Ryan eMVP" <dotnetguru@comcast.nospam.net> wrote in message
news:e6NnmWUKEHA.952@TK2MSFTNGP12.phx.gbl...
> Joao:
>
> Something seems very weird here. If the first update worked, then the
> acceptchanges is called and the rowstates of all the rows in the first
table
> shouldn't inidcate any modifications. So, if you call update
successfully,
> you can call it 10,00000000 times immediately afterward and nothign will
> happen (ok your finger would get tired but you get my point). So, if no
new
> editing is done and now your rowstate is modified, I can't imagine the
> update is working.
>
> So, you call update once on the first table, everything is good, call
update
> on the second table, it blows up. Now, you don't do any new editing,
press
> save, which I assume fires update1 then update2, update 1 blows up with a
> concurrency exception and the rowstates are changed? I noticed the
> exception block rolls back the transaction...have you stepped through and
> seen what's happening there b/c there's no visual cue that an exception is
> thrown As force of habit, I throw in Debug.Assrt(false,
> exceptionVariable.ToString()); so that I'll get visual notification if i
> raise an exception in debug mode, but when I put in it release it won't
> happen.
>
> Anyway, get back to me on these b/c something definitely seems weird.
>
> Also, just as a matter or preference, may I suggest moving these to stored
> procs and implementing your transactions on the back end. It's a much
more
> robust mechanism.. the whole notion of client side transactions leaves me
a
> bit skittish and maybe it's just b/c of misuse, but I've heard more horrow
> stories about client side transactions failing , or the app blowing up
> leaving locks on the table and all sorts of other ghastly stuff. Just a
> suggestion.
>
> Cheers,
>
> Bill
> "João Santa Bárbara" <joaosb@i24portugal.com> wrote in message
> news:OPiDNyTKEHA.3292@TK2MSFTNGP11.phx.gbl...
> > Hi all,
> > i have a problem with a transaction.i will tray to explain my problem.
> > i have a Dataset that i have fill using 2 DataAdapter with a simple
query
> > ( all tables with an autonumber).
> >
> > i have made code for the dataadapter rowupdate to get the @@identity of
my
> > table.
> > everything works fine.
> >
> > now is the problem,
> > i have made a transaction to made this works,
> > when i do the endcurrent edit of my CurrencyManager, i want to submit
the
> > row to the DataBase.
> > i have submited the first table and works fine
> > when i try to submit the second table it throws an exception.
> > after that every thing is ok
> >
> > but when i press again the save button
> > when i´m going to submit the first table again it throws an cocurrency
> > violation, and the row state
> > of the row that i´m try to submit have changed the rowstate from Added
to
> > Modified. anyone knows why ??
> >
> > thsk
> > JSB
> >
> > plsea see the code below
> >
> >
> > so i have made some thing like this
> >
> > 'update Function
> > dim cmd as SQlClient.CommandBulider ( DataAdapter)
> > dim cmd1 as SQlClient.CommandBulider ( DataAdapter2)
> > try
> >
> > BD.Open
> > trans = bd.BeginTransaction
> >
> > DataAdapter.update ( Ds,Table)
> > ' some code that mades a error
> > ' bla bla bla
> > ' in this peace of code ocurs an Error that throws an Exception
> > DataAdapter2.update ( Ds,Table2)
> >
> > trans.comit
> > catch
> > trans.rollback
> > finally
> > bd.close
> > end try
> >
> >
> >
>
>



Re: Update a Table using transactions by William

William
Fri Apr 23 14:33:48 CDT 2004

Ok, the stored proc was only a suggestion (although just out of curiousity,
why aren't you allowed to use stored procs? they are vastly superior in just
about every noteworthy way).

Anyway though, the issue about HasChanges, did you try that? We can
defintely get to the bottom of this but we've got to reduce the number of
unknowns.
"João Santa Bárbara" <joaosb@i24portugal.com> wrote in message
news:ONfeCgUKEHA.2380@TK2MSFTNGP09.phx.gbl...
> thks, but i have 2 tables with lots of fields, and doing a Store procedure
> is not one of my options.
> but i think that microsoft should review this in future versions of
ADO.NET
>
> but thks any way,
>
>
> JSB
> :(
>
> "William Ryan eMVP" <dotnetguru@comcast.nospam.net> wrote in message
> news:e6NnmWUKEHA.952@TK2MSFTNGP12.phx.gbl...
> > Joao:
> >
> > Something seems very weird here. If the first update worked, then the
> > acceptchanges is called and the rowstates of all the rows in the first
> table
> > shouldn't inidcate any modifications. So, if you call update
> successfully,
> > you can call it 10,00000000 times immediately afterward and nothign
will
> > happen (ok your finger would get tired but you get my point). So, if no
> new
> > editing is done and now your rowstate is modified, I can't imagine the
> > update is working.
> >
> > So, you call update once on the first table, everything is good, call
> update
> > on the second table, it blows up. Now, you don't do any new editing,
> press
> > save, which I assume fires update1 then update2, update 1 blows up with
a
> > concurrency exception and the rowstates are changed? I noticed the
> > exception block rolls back the transaction...have you stepped through
and
> > seen what's happening there b/c there's no visual cue that an exception
is
> > thrown As force of habit, I throw in Debug.Assrt(false,
> > exceptionVariable.ToString()); so that I'll get visual notification if i
> > raise an exception in debug mode, but when I put in it release it won't
> > happen.
> >
> > Anyway, get back to me on these b/c something definitely seems weird.
> >
> > Also, just as a matter or preference, may I suggest moving these to
stored
> > procs and implementing your transactions on the back end. It's a much
> more
> > robust mechanism.. the whole notion of client side transactions leaves
me
> a
> > bit skittish and maybe it's just b/c of misuse, but I've heard more
horrow
> > stories about client side transactions failing , or the app blowing up
> > leaving locks on the table and all sorts of other ghastly stuff. Just a
> > suggestion.
> >
> > Cheers,
> >
> > Bill
> > "João Santa Bárbara" <joaosb@i24portugal.com> wrote in message
> > news:OPiDNyTKEHA.3292@TK2MSFTNGP11.phx.gbl...
> > > Hi all,
> > > i have a problem with a transaction.i will tray to explain my problem.
> > > i have a Dataset that i have fill using 2 DataAdapter with a simple
> query
> > > ( all tables with an autonumber).
> > >
> > > i have made code for the dataadapter rowupdate to get the @@identity
of
> my
> > > table.
> > > everything works fine.
> > >
> > > now is the problem,
> > > i have made a transaction to made this works,
> > > when i do the endcurrent edit of my CurrencyManager, i want to submit
> the
> > > row to the DataBase.
> > > i have submited the first table and works fine
> > > when i try to submit the second table it throws an exception.
> > > after that every thing is ok
> > >
> > > but when i press again the save button
> > > when i´m going to submit the first table again it throws an cocurrency
> > > violation, and the row state
> > > of the row that i´m try to submit have changed the rowstate from Added
> to
> > > Modified. anyone knows why ??
> > >
> > > thsk
> > > JSB
> > >
> > > plsea see the code below
> > >
> > >
> > > so i have made some thing like this
> > >
> > > 'update Function
> > > dim cmd as SQlClient.CommandBulider ( DataAdapter)
> > > dim cmd1 as SQlClient.CommandBulider ( DataAdapter2)
> > > try
> > >
> > > BD.Open
> > > trans = bd.BeginTransaction
> > >
> > > DataAdapter.update ( Ds,Table)
> > > ' some code that mades a error
> > > ' bla bla bla
> > > ' in this peace of code ocurs an Error that throws an Exception
> > > DataAdapter2.update ( Ds,Table2)
> > >
> > > trans.comit
> > > catch
> > > trans.rollback
> > > finally
> > > bd.close
> > > end try
> > >
> > >
> > >
> >
> >
>
>