O/H mauro russo έγραψε:
> but what [non-String] property of the exception to check to make a
> selection?
> =>
> try
> MyADOQuery.ExecSQL();
> except on E : ?TADOException? (what type to use?)
> if not VerifyPropertyOfAdoException(E) then
> raise E;
> end;
I'm not sure I understand you here.
You can use any Exception type in a try..catch block.
You set the most general type to be the last one.
try
except
on E: EADOError do begin end;
on E: EDatabaseError do begin end;
on E: Exception do begin end;
else
// impossible. Exception is the most general trap
end;
or you can
try
except
on E: Exception do
begin
if (E is EADOError) then
else if (E is ESomeOtherError) then
end;
end;
end;
> http://msdn.microsoft.com/en-us/library/ms680895(VS.85).aspx
>>>
> (from the referenced web page:)
> Depending on the Connection object's Attributes property, calling either the
> CommitTrans or RollbackTrans methods may automatically start a new
> transaction. If the Attributes property is set to adXactCommitRetaining, the
> provider automatically starts a new transaction after a CommitTrans call. If
> the Attributes property is set to adXactAbortRetaining, the provider
> automatically starts a new transaction after a RollbackTrans call.
I always avoid using the xxxxRetaining settings with connections.
Retaining means commit or rollback but RETAIN the transaction context
in the server for speed or other reasons. I avoid doing that.
Regarding ADO nested transactions I explain why not to use that xxxxRetaining
flags
in the example project from my seminars (I'm a Delphi trainer) I've sent
privately to you.
I tried to upload it to the files area of this list but no luck
due to moderation restrictions.
>
> The default property of TADOConnection [I am using default] are: no
> adXactCommitRetaining actived and no adXactAbortRetaining actived.
> In fact, also if I did not know about these properties, I wrote the code
> having in mind that a transaction is open only if I explictly call
> BeginTrans().
> Or, if I use an ExecSQL before to call BeginTrans(), I always think that a
> mini-transaction is automatically open and then closed soon after
> the ExecSQL work end.
I'm not sure about that and have no time to check it out, but possibly a
transaction is started implicitly when there is not an explicit one.
> Well, if you believe I should not use nested transactions, then I need to
> avoid the transaction closure on an ExecSQL-ADOexception
> and using that "VerifyPropertyOfAdoException".
Nested transactions is not evil. And in some cases maybe the only way to go.
They just require carefull handling.
> If it is not possible, I believe I will try to understand in what cases the
> ExecSQL can generate an exception [I know already the most important,
What about a database constraint violation? A non existent table or field?
A missing parameter? A not properly formatted string?
In all of those situations an exception will be raised. Trap explicitly what you
believe you have to handle with a narrow and special logic, i.e. a unique
constraint violation,
and place at the bottom of the except..end block the most wide trap available,
an Exception trap.
try
except
on A: EClass1 do;
on B: EClass2 do;
on C: Exception do
;
end;
> but no all cases] and then I will use:
>
> //no try
> if PreCheckQueryProperties(MyADOQuery) then
> MyADOQuery.ExecSQL();
> //no except
--
Regards
Theo
------------------------
Theo Bebekis
Thessaloniki, Greece
------------------------
The resource you are looking for has been removed,
had its name changed, or is temporarily unavailable.
------------------------
Greek_Delphi_Prog : a Delphi Programming mailing list in Greek at
http://groups.yahoo.com/group/Greek_Delphi_Prog
CSharpDotNetGreek : A C# and .Net mailing list in Greek language at
http://groups.yahoo.com/group/CSharpDotNetGreek
atla_custom : a Unisoft Atlantis Customization mailing list at
http://groups.yahoo.com/group/atla_custom
------------------------
------------------------------------
-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [email protected]! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/delphi-en/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/delphi-en/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:[email protected]
mailto:[email protected]
<*> To unsubscribe from this group, send an email to:
[email protected]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/