2017-03-02 1 views
1

J'essaie de transmettre un jeu de données en tant que paramètre à une classe, mais l'ensemble de données continue de perdre ses valeurs. L'idée est de placer un numéro de client dans l'ensemble de données, de transmettre l'ensemble de données au serveur et de laisser le serveur remplir l'ensemble de données avec toutes les informations client, puis le renvoyer au client.Progression OpenEdge transmettant un jeu de données en tant que paramètre perd des valeurs

Première procédure d'appel

Ceci est une procédure unittest appelant le ServiceInterface dans le serveur.

USING OpenEdge.Core.Assert. 
BLOCK-LEVEL ON ERROR UNDO, THROW. 

{USS/Common/Invoice/Include/dsInvoice.i} 

DEFINE VARIABLE hProc  AS HANDLE NO-UNDO. 
RUN USS/Server/Invoice/ServiceInterfaces.p PERSISTENT SET hProc. 

TEMP-TABLE ttInvoice:TRACKING-CHANGES = TRUE. 
ttInvoice.CustomerNr = CustomerNr. 
TEMP-TABLE ttInvoice:TRACKING-CHANGES = FALSE. 

RUN UpdateCustomer IN hProc(INPUT CustomerNr, INPUT-OUTPUT DATASET dsInvoice BY-VALUE). 

Assert:Equals("MIDDELLANDBAAN 1 B", ttInvoice.DeliveryStreet). 

DELETE PROCEDURE hProc. 

Interface de service sur le serveur

A ce moment l'ensemble de données contient encore toutes les valeurs. Ces valeurs sont transmises à une entité commerciale où d'autres valeurs doivent être ajoutées.

PROCEDURE UpdateCustomer: 
    DEFINE INPUT PARAMETER CustomerNr AS INT. 
    DEFINE INPUT-OUTPUT PARAMETER DATASET-HANDLE phdsInvoice.   
    USS.Server.Invoice.BusinessEntity.InvoiceEntity:Instance:UpdateCustomer(INPUT CustomerNr, INPUT-OUTPUT DATASET dsInvoice BY-REFERENCE).  
    RETURN. 
END PROCEDURE. 

entité d'entreprise

L'entité commerciale est un singleton contenant une méthode de UpdateCustomer. Lorsque l'ensemble de données est transmis à cette méthode, il est complètement vide. Je travaille sur ce depuis un certain temps maintenant et j'espère que quelqu'un peut m'aider à comprendre celui-ci.

+0

Pouvez-vous partager votre code? –

+0

@ArnovanderEnde Désolé, j'ai appuyé sur Entrée et la question a été postée. Je l'ai fini et ajouté le code. –

+2

Votre paramètre d'entrée est phdsInvoice lorsque vous appelez le BE avec dsInvoice - ceux-ci doivent être identiques. –

Répondre

1

Oui, comme Tim l'a mentionné, vous utilisez 2 jeux de données différents dans la procédure interne UpdateCustomer dans ServiceInterfaces.p.

Vous pouvez changer le PARAMETER DATASET-HANDLE à:

DEFINE INPUT-OUTPUT PARAMETER DATASET FOR dsSelectionList.