kenny.willems
Member
Hi all.
i have a function that creates a query handle and buffer handle as output parameters and sends them to my window.
in that window i make a dynamic browser and fill it with the query.
then i fill my dynamic browser with the columns of my buffer. this all worked but know i need to run my procedure on the appserver and i get following errors:
1) add/set buffers argument 1 was invalid or not found
2) query prepare requires that set-buffers has been used to asign buffers to query
3) in add-columns-from: could not find table from handle in browsers query
This all worked when i didnt run them on appserver. this is my code:
DEFINE VARIABLE hAppserver AS HANDLE NO-UNDO.
connectie-appserver:
DO ON ERROR UNDO connectie-appserver, LEAVE connectie-appserver
ON STOP UNDO connectie-appserver, LEAVE connectie-appserver:
/* persistent runnen */
RUN quicksearch/pChangeBulk.p ON DYNAMIC-FUNCTION("getAppHandle":U, INPUT "TVH":U) PERSISTENT SET hAppserver.
RUN 'MaakEngine':U IN hAppserver
(INPUT iiMachkode,
OUTPUT qh,
OUTPUT bh ).
CREATE QUERY qh.
qh:SET-BUFFERS(bh).
qh:QUERY-PREPARE("for each TTMachines").
IF VALID-HANDLE(hbrw) THEN
DELETE WIDGET hbrw.
CREATE BROWSE hbrw NO-ERROR
ASSIGN FRAME = FRAME frmPossible:HANDLE
EXPANDABLE = FALSE
VISIBLE = TRUE
SENSITIVE = TRUE
SEPARATORS = TRUE
DOWN = 5
X = 40
Y = 6
WIDTH-CHARS = 80
HEIGHT-CHARS = 9
QUERY = qh
NO-VALIDATE = FALSE
TRIGGERS:
ON 'row-display':U PERSISTENT RUN kleurenEngine IN THIS-PROCEDURE.
ON 'value-changed':U PERSISTENT RUN KiesEngine IN THIS-PROCEDURE.
ON 'RIGHT-MOUSE-CLICK':U PERSISTENT RUN ToonMenuEngine IN THIS-PROCEDURE.
END TRIGGERS.
hbrw:ADD-COLUMNS-FROM(bh).
ASSIGN hbrw:EXPANDABLE = TRUE
hbrw:COLUMN-RESIZABLE = TRUE
hbrw:FIRST-COLUMN:WIDTH-PIXELS = 50
bchandle = hbrw:GET-BROWSE-COLUMN(1)
bchandle1 = hbrw:GET-BROWSE-COLUMN(2)
bchandle2 = hbrw:GET-BROWSE-COLUMN(3)
bchandle3 = hbrw:GET-BROWSE-COLUMN(4).
qh:QUERY-OPEN().
APPLY "value-changed" TO hbrw.
RUN ToonMenuEngine (OUTPUT menuHandle).
ASSIGN hbrw
OPUP-MENU = menuHandle.
LEAVE connectie-appserver.
END. /* connectie-appserver */
/* delete handle */
IF VALID-HANDLE(hAppserver) THEN
DELETE PROCEDURE hAppserver.
RETURN FALSE.
END FUNCTION.
.
procedure maakengine
/*------------------------------------------------------------------------------
Purpose:
Parameters: <none>
Notes:
------------------------------------------------------------------------------*/
DEFINE INPUT PARAMETER iMachkode AS INTEGER NO-UNDO.
DEFINE OUTPUT PARAMETER qh AS HANDLE NO-UNDO.
DEFINE OUTPUT PARAMETER bh AS HANDLE NO-UNDO.
DEFINE VARIABLE hBrand AS HANDLE NO-UNDO.
DEFINE VARIABLE hModel AS HANDLE NO-UNDO.
DEFINE VARIABLE hFuel AS HANDLE NO-UNDO.
CREATE TEMP-TABLE TTMachines.
TTMachines:ADD-LIKE-FIELD("Mkode","OptixMotor.MKode").
TTMachines:ADD-LIKE-FIELD("Merk","OptixMotor.merk").
TTMachines:ADD-LIKE-FIELD("Type","OptixMotor.type").
TTMachines:ADD-NEW-FIELD("Fuel","char").
TTMachines:TEMP-TABLE-PREPARE("TTMachines").
ASSIGN bh = TTMachines
EFAULT-BUFFER-HANDLE.
FOR EACH QSPuntPerMach NO-LOCK WHERE
QSPuntPerMach.MachKode = iMachkode
BREAK BY QSPuntPerMach.MKode:
IF FIRST-OF(QSPuntPerMach.MKode) THEN DO:
FIND FIRST OptixMotor NO-LOCK WHERE
OptixMotor.MKode = QSPuntPerMach.MKode NO-ERROR.
IF AVAILABLE OptixMotor THEN DO: /* groen - rood */
bh:BUFFER-CREATE().
bh:BUFFER-COPY(BUFFER OptixMotor:HANDLE).
hBrand = bh:buffer-field("Merk").
hBrand:COLUMN-LABEL = "Brand".
hModel = bh:BUFFER-FIELD("Type").
hModel:COLUMN-LABEL = "Engine Model".
hFuel = bh:BUFFER-FIELD("Fuel").
IF hFuel:BUFFER-VALUE = "D" THEN
hFuel:BUFFER-VALUE = "Diesel".
IF hFuel:BUFFER-VALUE = "B" THEN
hFuel:BUFFER-VALUE = "Benzine - lpg".
END.
END.
END.
FOR EACH QSMachMot NO-LOCK WHERE
QSMachMot.MachKode = iMachkode
BREAK BY QSMachMot.MKode:
IF FIRST-OF(QSMachMot.MKode) THEN DO:
FIND FIRST OptixMotor NO-LOCK WHERE
OptixMotor.MKode = QSMachMot.MKode NO-ERROR.
IF NOT AVAILABLE OptixMotor THEN DO: /* oranje */
bh:BUFFER-CREATE().
bh:BUFFER-COPY(BUFFER QSMachMot:HANDLE).
hBrand = bh:buffer-field("Merk").
hBrand:COLUMN-LABEL = "Brand".
hModel = bh:BUFFER-FIELD("Type").
hModel:COLUMN-LABEL = "Engine Model".
hFuel = bh:BUFFER-FIELD("Fuel").
IF hFuel:BUFFER-VALUE = "D" THEN
hFuel:BUFFER-VALUE = "Diesel".
IF hFuel:BUFFER-VALUE = "B" THEN
hFuel:BUFFER-VALUE = "Benzine - lpg".
END.
END.
END.
END PROCEDURE.
Hope someone can help.
i have a function that creates a query handle and buffer handle as output parameters and sends them to my window.
in that window i make a dynamic browser and fill it with the query.
then i fill my dynamic browser with the columns of my buffer. this all worked but know i need to run my procedure on the appserver and i get following errors:
1) add/set buffers argument 1 was invalid or not found
2) query prepare requires that set-buffers has been used to asign buffers to query
3) in add-columns-from: could not find table from handle in browsers query
This all worked when i didnt run them on appserver. this is my code:
DEFINE VARIABLE hAppserver AS HANDLE NO-UNDO.
connectie-appserver:
DO ON ERROR UNDO connectie-appserver, LEAVE connectie-appserver
ON STOP UNDO connectie-appserver, LEAVE connectie-appserver:
/* persistent runnen */
RUN quicksearch/pChangeBulk.p ON DYNAMIC-FUNCTION("getAppHandle":U, INPUT "TVH":U) PERSISTENT SET hAppserver.
RUN 'MaakEngine':U IN hAppserver
(INPUT iiMachkode,
OUTPUT qh,
OUTPUT bh ).
CREATE QUERY qh.
qh:SET-BUFFERS(bh).
qh:QUERY-PREPARE("for each TTMachines").
IF VALID-HANDLE(hbrw) THEN
DELETE WIDGET hbrw.
CREATE BROWSE hbrw NO-ERROR
ASSIGN FRAME = FRAME frmPossible:HANDLE
EXPANDABLE = FALSE
VISIBLE = TRUE
SENSITIVE = TRUE
SEPARATORS = TRUE
DOWN = 5
X = 40
Y = 6
WIDTH-CHARS = 80
HEIGHT-CHARS = 9
QUERY = qh
NO-VALIDATE = FALSE
TRIGGERS:
ON 'row-display':U PERSISTENT RUN kleurenEngine IN THIS-PROCEDURE.
ON 'value-changed':U PERSISTENT RUN KiesEngine IN THIS-PROCEDURE.
ON 'RIGHT-MOUSE-CLICK':U PERSISTENT RUN ToonMenuEngine IN THIS-PROCEDURE.
END TRIGGERS.
hbrw:ADD-COLUMNS-FROM(bh).
ASSIGN hbrw:EXPANDABLE = TRUE
hbrw:COLUMN-RESIZABLE = TRUE
hbrw:FIRST-COLUMN:WIDTH-PIXELS = 50
bchandle = hbrw:GET-BROWSE-COLUMN(1)
bchandle1 = hbrw:GET-BROWSE-COLUMN(2)
bchandle2 = hbrw:GET-BROWSE-COLUMN(3)
bchandle3 = hbrw:GET-BROWSE-COLUMN(4).
qh:QUERY-OPEN().
APPLY "value-changed" TO hbrw.
RUN ToonMenuEngine (OUTPUT menuHandle).
ASSIGN hbrw
LEAVE connectie-appserver.
END. /* connectie-appserver */
/* delete handle */
IF VALID-HANDLE(hAppserver) THEN
DELETE PROCEDURE hAppserver.
RETURN FALSE.
END FUNCTION.
.
procedure maakengine
/*------------------------------------------------------------------------------
Purpose:
Parameters: <none>
Notes:
------------------------------------------------------------------------------*/
DEFINE INPUT PARAMETER iMachkode AS INTEGER NO-UNDO.
DEFINE OUTPUT PARAMETER qh AS HANDLE NO-UNDO.
DEFINE OUTPUT PARAMETER bh AS HANDLE NO-UNDO.
DEFINE VARIABLE hBrand AS HANDLE NO-UNDO.
DEFINE VARIABLE hModel AS HANDLE NO-UNDO.
DEFINE VARIABLE hFuel AS HANDLE NO-UNDO.
CREATE TEMP-TABLE TTMachines.
TTMachines:ADD-LIKE-FIELD("Mkode","OptixMotor.MKode").
TTMachines:ADD-LIKE-FIELD("Merk","OptixMotor.merk").
TTMachines:ADD-LIKE-FIELD("Type","OptixMotor.type").
TTMachines:ADD-NEW-FIELD("Fuel","char").
TTMachines:TEMP-TABLE-PREPARE("TTMachines").
ASSIGN bh = TTMachines
FOR EACH QSPuntPerMach NO-LOCK WHERE
QSPuntPerMach.MachKode = iMachkode
BREAK BY QSPuntPerMach.MKode:
IF FIRST-OF(QSPuntPerMach.MKode) THEN DO:
FIND FIRST OptixMotor NO-LOCK WHERE
OptixMotor.MKode = QSPuntPerMach.MKode NO-ERROR.
IF AVAILABLE OptixMotor THEN DO: /* groen - rood */
bh:BUFFER-CREATE().
bh:BUFFER-COPY(BUFFER OptixMotor:HANDLE).
hBrand = bh:buffer-field("Merk").
hBrand:COLUMN-LABEL = "Brand".
hModel = bh:BUFFER-FIELD("Type").
hModel:COLUMN-LABEL = "Engine Model".
hFuel = bh:BUFFER-FIELD("Fuel").
IF hFuel:BUFFER-VALUE = "D" THEN
hFuel:BUFFER-VALUE = "Diesel".
IF hFuel:BUFFER-VALUE = "B" THEN
hFuel:BUFFER-VALUE = "Benzine - lpg".
END.
END.
END.
FOR EACH QSMachMot NO-LOCK WHERE
QSMachMot.MachKode = iMachkode
BREAK BY QSMachMot.MKode:
IF FIRST-OF(QSMachMot.MKode) THEN DO:
FIND FIRST OptixMotor NO-LOCK WHERE
OptixMotor.MKode = QSMachMot.MKode NO-ERROR.
IF NOT AVAILABLE OptixMotor THEN DO: /* oranje */
bh:BUFFER-CREATE().
bh:BUFFER-COPY(BUFFER QSMachMot:HANDLE).
hBrand = bh:buffer-field("Merk").
hBrand:COLUMN-LABEL = "Brand".
hModel = bh:BUFFER-FIELD("Type").
hModel:COLUMN-LABEL = "Engine Model".
hFuel = bh:BUFFER-FIELD("Fuel").
IF hFuel:BUFFER-VALUE = "D" THEN
hFuel:BUFFER-VALUE = "Diesel".
IF hFuel:BUFFER-VALUE = "B" THEN
hFuel:BUFFER-VALUE = "Benzine - lpg".
END.
END.
END.
END PROCEDURE.
Hope someone can help.