Icon View Thread

The following is the text of the current message along with any replies.
Messages 11 to 20 of 30 total
Thread Corrupt Temporary Table
Mon, Dec 14 2015 10:43 AMPermanent Link

M Eric Hubert

Avatar

I understand.
For now, i have no simple program. (The original program have 17 temporaries tables, 5 permanents tables, +20000 lines codes)
I work on a "simple" demo
Thanks .... To be continued
Mon, Dec 14 2015 3:31 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Eric,

<< In the insert, if i change the line :
TableBufferCODE_POSTAL.Assign (TableRTGDESTINEOCODE_POSTAL);
By
//TableBufferCODE_POSTAL.Assign (TableRTGDESTINEOCODE_POSTAL);
Or
TableBufferCODE_POSTAL.Value := '92350'
There is no error >>

Please send/post the SQL for creating both the target table and source tables for the above two tables.  If you've already posted the target table's structure, then just indicate that.

Something is probably mismatched between the two tables' structures, and that is most likely causing a problem with the Assign in a way that results in the error that you're seeing.

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Dec 15 2015 6:15 AMPermanent Link

M Eric Hubert

Avatar

The idea is good but i have already tested this.
I have replace all assign by tb1.value := tb2.value. And No Change with the error.
I have also tested .asstring, .asinteger ... etc
But it's seems that the problem is a problem ansi / Unicode.
I use Delphi 7. All are in Ansi.
With old EDB versions (Ansi / Unicode separate), the program work without any change
But with EDB versions (Ansi / Unicode merge) the program bug according to the datas.
If i change, only this temporary table by BDE, Oracle  .... etc, the program work
I have migrate for the last EDB version this summer.
Actually, i am in 2.20 build 1.

I work on a sample, but for now,, i can't reproduce it.
Tue, Dec 15 2015 7:27 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Eric

>I work on a sample, but for now,, i can't reproduce it.

That probably means that there's something else in the real application that's causing the problem.

Out of interest, what happens if you delete the indices?

Roy Lambert
Tue, Dec 15 2015 7:30 AMPermanent Link

M Eric Hubert

Avatar

"Out of interest, what happens if you delete the indices?"
I don't understand this step
Tue, Dec 15 2015 8:39 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Eric

>"Out of interest, what happens if you delete the indices?"
>I don't understand this step


At the moment you think <<The error is on the index I_NO_ETQ.>> so if you don't create that index when you create the temporary table what happens. If you still get the error don't create the index I_LIASSE and see what happens.

Roy Lambert
Tue, Dec 15 2015 8:44 AMPermanent Link

M Eric Hubert

Avatar

Ok, i understand.
But it's not possible without large change in the code (i have already tested this tip).
I continue to search .......
Tue, Dec 15 2015 8:57 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Eric

>Ok, i understand.
>But it's not possible without large change in the code (i have already tested this tip).
>I continue to search .......

If you've already tested this what happened? Did the error still occur? If so its not the indices and either as Tim says its a problem with table structures, or there is something wrong with the data.

Roy Lambert
Tue, Dec 15 2015 9:28 AMPermanent Link

M Eric Hubert

Avatar

I can't reproduce the problem in a simple program but i found where is the problem.
In the code i have also
             BookMark := TableBuffer.GetBookMark;
             Try
               TableBuffer.First;
               While Not TableBuffer.Eof And Not Finprog Do
                 begin
                   if Cle = CleSeuil then
                     Try
                         TableBuffer.Edit;
                         TableBufferValider.Value := False;
                         TableBufferNO_ETQ.Clear;
                         TableBufferLIASSE.Clear;
                         TableBufferNO_LIASSE.Clear;
                         TableBufferCODE_PRESENTATION.Clear;
                         TableBufferNIVEAU_PREPARATION.Clear;
                         TableBufferMINS_POIDS.Clear;
                         TableBufferMAXS_POIDS.Clear;
                         TableBufferMINL_POIDS.Clear;
                         TableBufferMAXL_POIDS.Clear;
                         TableBufferMINL_EXE.Clear;
                         TableBuffer.Post;
                     Except
                       On E: Exception Do
                         Raise Exception.Create ('TDataModuleDESTINEO....UndoPrepa' + Crlf + E.Message);
                     End;
                   TableBuffer.next;
                   Application.processmessages;
                 End;
               TableBuffer.GotoBookMark (BookMark);
             Finally
               TableBuffer.FreeBookMark  (BookMark);
             End;

I use bookmark for replace the dataset at the same position.
If i replace this code by
             NoUnique := TableBufferNO_UNIQUE.Value;
             TableBuffer.IndexFieldNames := 'NO_UNIQUE';
               TableBuffer.First;
               While Not TableBuffer.Eof And Not Finprog Do
                 begin
                   if Cle = CleSeuil then
                     Try
                         TableBuffer.Edit;
                         TableBufferValider.Value := False;
                         TableBufferNO_ETQ.Clear;
                         TableBufferLIASSE.Clear;
                         TableBufferNO_LIASSE.Clear;
                         TableBufferCODE_PRESENTATION.Clear;
                         TableBufferNIVEAU_PREPARATION.Clear;
                         TableBufferMINS_POIDS.Clear;
                         TableBufferMAXS_POIDS.Clear;
                         TableBufferMINL_POIDS.Clear;
                         TableBufferMAXL_POIDS.Clear;
                         TableBufferMINL_EXE.Clear;
                         TableBuffer.Post;
                     Except
                       On E: Exception Do
                         Raise Exception.Create ('TDataModuleDESTINEO....UndoPrepa' + Crlf + E.Message);
                     End;
                   TableBuffer.next;
                   Application.processmessages;
                 End;
               if Not TableBuffer.Findkey([NoUnique]) then
                 Raise Exception.Create ('NO_UNIQUE ' + IntToStr(Nounique) + ' non trouvé.');
               TableBuffer.IndexName := 'I_LIASSE';

The same thing but i use the primary key. All work without error.

I have tested also Bookmark but for the edit i have:
                         TableBuffer.Edit;
                         TableBufferValider.Value := False;
                         TableBuffer.Post;
The error is the same when i want to edit NO_ETQ in other part of the program

Any idea ?
Tue, Dec 15 2015 10:55 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Eric


Doesn't make any sense to me but if its fixed the problem - good.

Roy Lambert
« Previous PagePage 2 of 3Next Page »
Jump to Page:  1 2 3
Image