Yes. it is correct.


  ----- Original Message ----- 
  From: Ariel Dominguez 
  To: [email protected] 
  Sent: Tuesday, February 10, 2009 3:16 AM
  Subject: [delphi-en] Re: TADOQuery / TADOConnection


  Hi Mauro,

  So basically your transaction goes like this: you insert R1 into
  MyTable1, then for each record in MyTable2 you execute a query that
  inserts a record R2 into MyTable3 which has a reference to R1. Is this
  correct?

  Regards,
  Ariel

  --- In [email protected], Mike Kershaw <mike.kershaw1...@...>
  wrote:
  >
  > Hi Mauro,
  > 
  > Based on the way you have set up this transaction you will always roll 
  > back the entire transaction when you hit an exception as your second 
  > try, except block is within the first. So if the second fails then so 
  > does the first, you may want to set each set of inserts in their own 
  > transactions and test each one. 
  > Can you have records in table 1 if table 2 or 3 fail? Can you give me 
  > an idea of what sort of rules you are trying capture within the
  transaction.
  > 
  > Also when Committing your transaction you may wish to test for it
  first, 
  > i.e.:
  > if MyAdoConnection.InTransaction = True then
  > MyAdoConnection.CommitTrans;
  > 
  > Kind regards,
  > Mike.
  > 
  > 
  > mauro russo wrote:
  > > Hi everyone,
  > >
  > > I am using Delphi 7.
  > >
  > > I am using a TADOConnection object and some design-time TADOQuery
  objects.
  > >
  > > A my procedure works starting by
  > >
  > > MyAdoConnection.BeginTrans();
  > >
  > > and ending by
  > >
  > > MyAdoConnection.CommitTrans();
  > >
  > >
  > > In the block there is a MyADOQuery object for which I use (becaus
  of sometimes it can generate DB exceptions)
  > >
  > > try
  > > MyADOQuery.ExecSQL();
  > > except
  > > end;
  > >
  > >
  > > My problem is that when MyADOQuery.ExecSQL() generates an
  exception, the transaction is automatically closed.
  > >
  > > I say that because my pascal-like code is
  > >
  > > MyAdoConnection.BeginTrans();
  > > try
  > > Insert in a MyTable1
  > >
  > > for each row on a MyTable2
  > > do Insert in a MyTable3 through
  > > a) preparing MyADOQuery
  > > b) executing MyADOQuery by 
  > > try
  > > MyADOQuery.ExecSQL();
  > > except
  > > end;
  > >
  > > MyAdoConnection.CommitTrans();
  > > except
  > > MyAdoConnection.RollbackTrans();
  > > end;
  > >
  > >
  > > and, when MyADOQuery.ExecSQL(); generates an exception for some
  row, the same happens for all following rows,
  > > but for the following rows it is because MyTable3 has a reference
  to the row initially inserted in MyTable1, which is
  > > like disappeared (my explanation is simply that the transaction is
  automatically closed with a Rollback before
  > > continuing the for cycle).
  > >
  > > Do someone knows if there is some property which I should set to
  avoid the automatic rollback on the transaction?
  > >
  > > Do you need some other detail?
  > >
  > >
  > > Best Regards,
  > > Mauro Russo.
  > >
  > >
  > >
  > > ----------
  > >
  > > Questa email è stata verificata dal sistema centralizzato
  antivirus della UniPlan Software
  > >
  > >
  > > [Non-text portions of this message have been removed]
  > >
  > >
  > >
  > > ------------------------------------
  > >
  > > -----------------------------------------------------
  > > Home page: http://groups.yahoo.com/group/delphi-en/
  > > To unsubscribe: delphi-en-unsubscr...@...! Groups Links
  > >
  > >
  > >
  > >
  ----------------------------------------------------------
  > >
  > >
  > > No virus found in this incoming message.
  > > Checked by AVG - www.avg.com 
  > > Version: 8.0.233 / Virus Database: 270.10.19/1941 - Release Date:
  02/07/09 13:39:00
  > >
  > >
  >


  
  ----------

Questa email è stata verificata dal sistema centralizzato antivirus della 
UniPlan Software


[Non-text portions of this message have been removed]

Reply via email to