HELP please: Only 50 dynamic queries can use buffer <buffer-name> at one time. (7320)

nasgod

New Member
This function is used on a ocx reportcontrol it automaticly update a temp-table where the Htabel handle is set to.
After clicking the Toggle 50 times i get following message.

Only 50 dynamic queries can use buffer <buffer-name> at one time. (7320)

I release and delete the object and handle but still no solution to the problem.

With this line a call the function.

itemcheck-rl(chrl5,chrow,chItem,BUFFER tt-stock:HANDLE).

-------------------------------------------------------------------------------------------------------------------------------------------------------

/*------------------------------------------------------------------------------*/
FUNCTION itemcheck-rl RETURNS INTEGER
( ch-rl AS COM-HANDLE,ch-row AS COM-HANDLE, ch-Item AS COM-HANDLE, hTabel AS HANDLE):
/*------------------------------------------------------------------------------
Purpose: itemcheck-rl
Notes: automatic update temp-table LOGICAL
-1 error , 0 no records found , 1 found
------------------------------------------------------------------------------*/
DEFINE VARIABLE chItem AS COM-HANDLE.
DEFINE VARIABLE chRecord AS COM-HANDLE.
DEFINE VARIABLE cTag AS CHARACTER NO-UNDO.
DEFINE VARIABLE cTag2 AS CHARACTER NO-UNDO.
DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
DEFINE VARIABLE cParm AS CHARACTER NO-UNDO.
DEFINE VARIABLE iParm AS INTEGER NO-UNDO.
DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE rRecid AS RECID NO-UNDO.
DEFINE VARIABLE dWaarde AS DECIMAL NO-UNDO.
DEFINE VARIABLE cWaarde AS CHARACTER NO-UNDO.
DEFINE VARIABLE iWaarde AS INTEGER NO-UNDO.
DEFINE VARIABLE datWaarde AS DATE NO-UNDO.
DEFINE VARIABLE ix AS INTEGER NO-UNDO.

IF NOT VALID-HANDLE(ch-rl)
THEN RETURN -1.

IF ch-rl:reportcontrol:allowedit = FALSE THEN
DO:
ch-Item:CHECKED = NOT ch-Item:CHECKED.
RETURN 0.
END.

rRecid = ch-row:record:tag NO-ERROR.

IF rRecid = ?
THEN RETURN -1.

cWhere = SUBST("FOR EACH &1 NO-LOCK WHERE", hTabel:NAME).
cWhere = cWhere + SUBST(" RECID(&1)", hTabel:NAME) + " = " + STRING(rRecid).
CREATE QUERY hQuery.
hQuery:SET-BUFFERS(hTabel).
hQuery:QUERY-PREPARE(cWhere).
hQuery:QUERY-OPEN.

lus:
REPEAT:
hQuery:GET-NEXT(NO-LOCK).
IF hQuery:QUERY-OFF-END
THEN LEAVE.

cTag = ch-Item:tag.
IF cTag = ""
THEN RETURN -1.
cType = hTabel:BUFFER-FIELD(cTag):DATA-TYPE NO-ERROR.
IF cType = ?
THEN RETURN -1.
CASE cType:
WHEN "LOGICAL" THEN
DO:
hTabel:BUFFER-FIELD(cTag):BUFFER-VALUE = ch-Item:CHECKED.
END.
OTHERWISE DO:
RETURN -1.
END.
END CASE.
DELETE OBJECT hTabel:BUFFER-FIELD(cTag):HANDLE.
ch-rl:ReportControl:redraw().
RETURN 1.
END.

hQuery:QUERY-CLOSE.
DELETE OBJECT hQuery.
htabel:BUFFER-RELEASE().
htabel:BUFFER-DELETE().
DELETE OBJECT htabel.

RETURN 0.

END FUNCTION.
 
Re: HELP please: Only 50 dynamic queries can use buffer <buffer-name> at one time. (7

Solution Found when reading my code on the board ;)


/*------------------------------------------------------------------------------*/
FUNCTION itemcheck-rl RETURNS INTEGER
( ch-rl AS COM-HANDLE,ch-row AS COM-HANDLE, ch-Item AS COM-HANDLE, hTabel AS HANDLE):
/*------------------------------------------------------------------------------
Purpose: itemcheck-rl
Notes: automatic update temp-table LOGICAL
-1 error , 0 no records found , 1 found
------------------------------------------------------------------------------*/
DEFINE VARIABLE chItem AS COM-HANDLE.
DEFINE VARIABLE chRecord AS COM-HANDLE.
DEFINE VARIABLE cTag AS CHARACTER NO-UNDO.
DEFINE VARIABLE cTag2 AS CHARACTER NO-UNDO.
DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
DEFINE VARIABLE cParm AS CHARACTER NO-UNDO.
DEFINE VARIABLE iParm AS INTEGER NO-UNDO.
DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
DEFINE VARIABLE rRecid AS RECID NO-UNDO.
DEFINE VARIABLE dWaarde AS DECIMAL NO-UNDO.
DEFINE VARIABLE cWaarde AS CHARACTER NO-UNDO.
DEFINE VARIABLE iWaarde AS INTEGER NO-UNDO.
DEFINE VARIABLE datWaarde AS DATE NO-UNDO.
DEFINE VARIABLE ix AS INTEGER NO-UNDO.

IF NOT VALID-HANDLE(ch-rl)
THEN RETURN -1.

IF ch-rl:reportcontrol:allowedit = FALSE THEN
DO:
ch-Item:CHECKED = NOT ch-Item:CHECKED.
RETURN 0.
END.

rRecid = ch-row:record:tag NO-ERROR.

IF rRecid = ?
THEN RETURN -1.

cWhere = SUBST("FOR EACH &1 NO-LOCK WHERE", hTabel:NAME).
cWhere = cWhere + SUBST(" RECID(&1)", hTabel:NAME) + " = " + STRING(rRecid).
CREATE QUERY hQuery.
hQuery:SET-BUFFERS(hTabel).
hQuery:QUERY-PREPARE(cWhere).
hQuery:QUERY-OPEN.

lus:
REPEAT:
hQuery:GET-NEXT(NO-LOCK).
IF hQuery:QUERY-OFF-END
THEN LEAVE.

cTag = ch-Item:tag.
IF cTag = ""
THEN RETURN -1.
cType = hTabel:BUFFER-FIELD(cTag):DATA-TYPE NO-ERROR.
IF cType = ? THEN
DO:
hQuery:QUERY-CLOSE.
DELETE OBJECT hQuery.
htabel:BUFFER-RELEASE().
RETURN -1.
END.
CASE cType:
WHEN "LOGICAL" THEN
DO:
hTabel:BUFFER-FIELD(cTag):BUFFER-VALUE = ch-Item:CHECKED.
END.
OTHERWISE DO:
hQuery:QUERY-CLOSE.
DELETE OBJECT hQuery.
htabel:BUFFER-RELEASE().
RETURN -1.
END.
END CASE.
DELETE OBJECT hTabel:BUFFER-FIELD(cTag):HANDLE.
ch-rl:ReportControl:redraw().
hQuery:QUERY-CLOSE.
DELETE OBJECT hQuery.
htabel:BUFFER-RELEASE().
RETURN 1.
END.

hQuery:QUERY-CLOSE.
DELETE OBJECT hQuery.
htabel:BUFFER-RELEASE().


RETURN 0.

END FUNCTION.
 
Back
Top