Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 6 of 6 total
Thread Strange error
Thu, Dec 11 2008 5:21 AMPermanent Link

Francisco Fernandez
Hi Tim.

One of your nightmares again.

As you know, i'm using triggers in my application. And normally are working well.

I have a customer with several clients. In one of clients modify a record that shoot a
trigger and work fine but if in another client create a temporary table that nothing to do
with the tables affected by the other client I get the error "Elevate error #1000 an error
ocurred with TempCursor (the cursor has no active row)". This error occurs in a AFTER
UPDATE trigger of the table "VENTASLINEAS" and in the other client only have created a
temporary table. If I close session and open again it works fine again.

Thank you
Thu, Dec 11 2008 2:46 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Francisco,

<< I have a customer with several clients. In one of clients modify a record
that shoot a trigger and work fine but if in another client create a
temporary table that nothing to do with the tables affected by the other
client I get the error "Elevate error #1000 an error ocurred with TempCursor
(the cursor has no active row)". This error occurs in a AFTER UPDATE trigger
of the table "VENTASLINEAS" and in the other client only have created a
temporary table. If I close session and open again it works fine again. >>

This is what I was trying to tell you via email.  We added a check for this
in 2.02 B5 because previously such an UPDATE on a cursor with no active row
would result in a not-so-friendly error.  It has nothing to do with
temporary tables, etc.  It is simply a notification that the cursor that
you're trying to update is empty.

--
Tim Young
Elevate Software
www.elevatesoft.com

Thu, Dec 11 2008 3:25 PMPermanent Link

Francisco Fernandez
Tim,

<<This is what I was trying to tell you via email.  We added a check for this
in 2.02 B5 because previously such an UPDATE on a cursor with no active row
would result in a not-so-friendly error.  It has nothing to do with
temporary tables, etc.  It is simply a notification that the cursor that
you're trying to update is empty.>>

In the trigger there is a control to update only if rowcount>0, also, if i don't create the temporary table don't show
me error when i change the same row and when i create temporary table show me the error. I can be wrong but I
have many hours trying this point.

If you want I can try to prepare an example project to show it.

Thank you
Fri, Dec 12 2008 8:02 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Francisco,

<< In the trigger there is a control to update only if rowcount>0, also, if
i don't create the temporary table don't show
me error when i change the same row and when i create temporary table show
me the error. I can be wrong but I have many hours trying this point.

If you want I can try to prepare an example project to show it. >>

Thanks for the project.  Per email, here's the issue:

<< I think this is all my problems with triggers and corrupt tables. As i
said to you at the news web i'm having problems when I create a temporary
table. Please check this example project (Delphi 2007) and tell me what's
I'm doing wrong. It is working in a folder called C:\example. >>

It explains the #1000 "no active row" error, but I'm not sure about the
write error.

The issue is that the temporary table drop operation causes a reload of the
database catalog because it fails (table doesn't exist), and the reload of
the database catalog causes some internal tracking information for the
triggers to get reset.  This information is about the referenced OLDROW
columns in the trigger, which causes the query using the OLDROW values to
retrieve/insert the wrong row in the EXISTENCIAS table.  This is not
specific to temporary tables, and can be caused by any DDL/DML statement
that causes an execution error.

I'll have a fix for this pretty quickly, probably by Sunday.  I'm also going
to update the DROP TABLE logic to not try to mess around with the database
catalog for temporary tables at all as a performance improvement.

Tim Young
Elevate Software
www.elevatesoft.com

Fri, Dec 12 2008 10:41 AMPermanent Link

Francisco Fernandez
Hi Tim.

Ok, i know now why I was thinking that executes triggers twice, because I was working with
before build and in this build it was no error when no active row, then update the record
of NEWROW values but not decrement OLDROW values.

I was changed my application and i use a disk table instead of memory table and i have no
problem in two days with my "yet" customer, jajajaja.

Not worry Tim, I wait your fix.

Thank you.
Mon, Dec 15 2008 10:02 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Francisco,

<< Ok, i know now why I was thinking that executes triggers twice, because I
was working with before build and in this build it was no error when no
active row, then update the record of NEWROW values but not decrement OLDROW
values. >>

Yes.  I'm also going to keep looking into this to see if there's possibly a
relationship with the other #100 error that you were seeing.  At first
thought I didn't think there was, but I've thought of a way in which it
might.

<< I was changed my application and i use a disk table instead of memory
table and i have no problem in two days with my "yet" customer, jajajaja. >>

Great. Smiley

<< Not worry Tim, I wait your fix. >>

It should be tomorrow evening at the latest.

--
Tim Young
Elevate Software
www.elevatesoft.com

Image