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.