Invalid handle

Mkontwg

Member
Hi team

I have an encounter this following error message on my abl form
Code:
DEFINE PRIVATE VARIABLE btnDisplay AS Infragistics.Win.Misc.UltraButton NO-UNDO.
    DEFINE PRIVATE VARIABLE btnSave AS Infragistics.Win.Misc.UltraButton NO-UNDO.
    DEFINE PRIVATE VARIABLE bsMain AS Progress.Data.BindingSource NO-UNDO.
    DEFINE PRIVATE VARIABLE components AS System.ComponentModel.IContainer NO-UNDO.
    DEFINE PRIVATE VARIABLE dgMain AS Infragistics.Win.UltraWinGrid.UltraGrid NO-UNDO.
    DEFINE PRIVATE VARIABLE hProc AS HANDLE NO-UNDO.
    DEFINE PRIVATE VARIABLE sta AS LOGICAL NO-UNDO.
    DEFINE PRIVATE VARIABLE hServer AS HANDLE NO-UNDO.
       
    CONSTRUCTOR PUBLIC DesignForm (  ):
       
       
        SUPER().
        InitializeComponent().
        sta = hServer:CONNECT ("-AppService asRunTest -H 196.11.122.223 -S 5162").
        MESSAGE "test2".
        IF NOT sta THEN DO:
            RETURN ERROR "Failed to connect to AppsServer".
            END.
        THIS-OBJECT:ComponentsCollection:ADD(THIS-OBJECT:components).
        CATCH e AS Progress.Lang.Error:
            UNDO, THROW e.
        END CATCH.

    END CONSTRUCTOR.

    /*------------------------------------------------------------------------------
     Purpose:
     Notes:
    ------------------------------------------------------------------------------*/
    @VisualDesigner.
    METHOD PRIVATE VOID btnDisplay_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
        DEFINE VARIABLE ophdDisplay AS HANDLE NO-UNDO.
        DEFINE VARIABLE cError AS CHARACTER NO-UNDO.
       
      
          RUN VALUE("Server\RunTest.p") ON hServer PERSISTENT SET hProc.
           
           IF VALID-HANDLE (hProc) THEN DO:
               RUN DisplayData IN hProc   (
                                          INPUT btnDisplay:Text,
                                          OUTPUT DATASET-HANDLE ophdDisplay,
                                          OUTPUT cError
                                          ).
                                         
                DELETE PROCEDURE hProc.
                bsMain:Handle = ophdDisplay.
                bsMain:Refresh().
               END.
            
           
        RETURN.

    END METHOD.

    /*------------------------------------------------------------------------------
     Purpose:
     Notes:
    ------------------------------------------------------------------------------*/
    @VisualDesigner.
    METHOD PRIVATE VOID btnSave_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
          DEFINE VARIABLE ophdsDsiplay AS HANDLE NO-UNDO.
        DEFINE VARIABLE cError AS CHARACTER NO-UNDO.
       
         RUN VALUE("Server\RunTest.p") ON hServer PERSISTENT SET hProc.
       
        IF VALID-HANDLE (hProc) THEN DO:
            RUN saveData IN hProc (
                                   INPUT btnSave:Text,
                                   OUTPUT DATASET-HANDLE ophdsDsiplay,
                                   OUTPUT cError
                                   ).
             DELETE PROCEDURE hProc.
            
            END.
            bsMain:Handle = ophdsDsiplay.
            bsMain:Refresh().
          
        RETURN.

    END METHOD.


Procedure
[code]
DEFINE TEMP-TABLE ttDisplay NO-UNDO
    FIELD tt-Name AS    CHARACTER
    FIELD tt-Address AS CHARACTER
    FIELD tt-PostCode AS CHARACTER
    FIELD tt-StreetName AS CHARACTER
    FIELD tt-Title AS CHARACTER.
   
   
DEFINE QUERY   qDisplay   FOR psmast SCROLLING.
DEFINE DATA-SOURCE srcDisplay FOR QUERY qDisplay.
DEFINE DATASET     dsDisplay FOR ttDisplay.


PROCEDURE DisplayData:
   
MESSAGE "Test 1 data".
DEFINE INPUT  PARAMETER ipcAddr AS CHARACTER NO-UNDO.
DEFINE INPUT  PARAMETER ipcTitle AS CHARACTER NO-UNDO.
DEFINE OUTPUT PARAMETER DATASET-HANDLE  ophdsDisplay BY-VALUE.
DEFINE OUTPUT  PARAMETER  opcError AS CHARACTER NO-UNDO.
   
CREATE ttDisplay.
ASSIGN tt-Name = psagent.ag-agent
        tt-Address = pscolmsg.psc-useramd
        tt-PostCode = psassoc.pm-partno
        tt-StreetName = pscons.pc-creuser
        tt-Title = psvsales.note-id.

  QUERY qDisplay:QUERY-PREPARE (SUBSTITUTE("FOR EACH psagent WHERE psc-useramd BEGINS '&1'",ipcAddr)).
  DATASET dsDisplay:FILL-MODE = "empty".
  BUFFER ttDisplay:ATTACH-DATA-SOURCE (DATA-SOURCE srcDisplay:HANDLE).
  DATASET dsDisplay:FILL ().   
  BUFFER ttDisplay:DETACH-DATA-SOURCE().
  ophdsDisplay = DATASET dsDisplay:HANDLE.
   
MESSAGE "test2 data".
END PROCEDURE.


PROCEDURE saveData:
MESSAGE "Test 3 data".
DEFINE INPUT  PARAMETER ipcAddr AS CHARACTER NO-UNDO.
DEFINE INPUT  PARAMETER ipcTitle AS CHARACTER NO-UNDO.
DEFINE OUTPUT PARAMETER DATASET-HANDLE  ophdsDisplay BY-VALUE.
DEFINE OUTPUT  PARAMETER opcError  AS CHARACTER NO-UNDO.

DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
CREATE QUERY hQuery.
   hQuery:SET-BUFFERS (ophdsDisplay:GET-BUFFER-HANDLE (1)).
   hQuery:QUERY-PREPARE("FOR EACH " + ophdsDisplay:GET-BUFFER-HANDLE(1):NAME).
   hQuery:QUERY-OPEN ().
   hQuery:GET-FIRST ().
   
    MESSAGE "Test 4 data".
    DELETE OBJECT hQuery NO-ERROR.
    CATCH e AS Progress.Lang.Error:
        ASSIGN opcError = e:GetMessage(1).
    END CATCH.
   
END PROCEDURE.
 

Attachments

  • invalid error.PNG
    invalid error.PNG
    4.7 KB · Views: 6

Osborne

Active Member
The only line that has a connect is this line:
Code:
sta = hServer:CONNECT ("-AppService asRunTest -H 196.11.122.223 -S 5162").
So I am guessing that not only are you are missing NO-ERROR from the line but are not first creating the server:
Code:
CREATE SERVER hServer.
sta = hServer:CONNECT ("-AppService asRunTest -H 196.11.122.223 -S 5162") NO-ERROR.
 

Mkontwg

Member
The only line that has a connect is this line:
Code:
sta = hServer:CONNECT ("-AppService asRunTest -H 196.11.122.223 -S 5162").
So I am guessing that not only are you are missing NO-ERROR from the line but are not first creating the server:
Code:
CREATE SERVER hServer.
sta = hServer:CONNECT ("-AppService asRunTest -H 196.11.122.223 -S 5162") NO-ERROR.
Thanks my code is working now, i omit to create server
 
Top