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)
ATA-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.
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)

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.