Consultor Eletrônico



Kbase 33408: A browse looses its query when itsQuery:SET-BUFFERS() is called
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/05/1998
Solution ID: P3408

FACT(s) (Environment):

Progress 9.1C
Progress 9.1D

SYMPTOM(s):

The query of a browse is lost

SET-BUFFERS() is called on the query

CHANGE:

Upgraded from 9.1B to 9.1C or 9.1D

CAUSE:

Known issue. The reason for this loss of data is that the browse columns point at the buffer-fields of the buffers in the query before the SET-BUFFERS()
happens. After the SET-BUFFERS(), there are now new buffer-fields for different buffer objects altogether. So, when a SET-BUFFERS() is done, a brand new query is actually created, and the browse needs to be told so. All all the browse columns have been invalidated , and they need to be re-created.

With previous versions, the columns of the browse and the buffer-field objects in the query were randomly matched, with the browse pointing off at some other set of buffer-fields. This situation could end up in a GPF about half the time, so it was disallowed.

FIX:

Avoid using SET-BUFFERS() if the buffers to set are about to be the same as before, as illustrated with the following code:

IF hMyBrowse:QUERY:GET-BUFFER-HANDLE(1) <> BUFFER MyBuffer1:HANDLE AND
hMyBrowse:QUERY:GET-BUFFER-HANDLE(2) <> BUFFER MyBuffer2:HANDLE THEN
hMyBrowse:QUERY:SET-BUFFERS(BUFFER MyBuffer1:HANDLE, BUFFER MyBuffer2:HANDLE).

Or
Store hBrowse:QUERY handle in a variable then set it back to hBrowse:QUERY once SET-BUFFERS() has been called.