2012-06-29 13 views
6

Come posso passare un singolo parametro tra un modulo in axapta? Voglio eseguire un modulo B da un evento pulsante cliccato in un modulo A e passare ... ad esempio l'ID cliente? Come posso leggerlo nel modulo di destinazione, forse nel metodo init? GrazieCome passare un parametro tra due forme in Axapta?

risposta

12

1 Metodo

Il modo più semplice è quello di superare record corrente. Basta cambiare il valore DataSource del controllo pulsante per Esempio a CustTable se CustTable si trova nelle origini dati Form correnti. Poi metodo di modulo nelle strette init:

public void init() 
{ 
    CustTable cTable; 
    ; 
    super(); 

    // Check for passed arguments 
    if(element.args()) 
    { 
     // get record parameter 
     if(element.args().record() && element.args().record().TableId == TableNum(CustTable)) 
     { 
      cTable = element.args().record();    
     } 
    } 
} 

2 Metodo

Se hai ancora bisogno di passare esattamente un .parm value() (o di un oggetto più complesso .parmObject()) è possibile fare questo overiding modulo fonte di controllo pulsante metodo cliccato:

void clicked() 
{ 
    // Args class is usually used in Axapta for passing parameters between forms 
    Args   args; 
    FormRun   formRun; 
    ; 

    args = new args(); 

    // Our values which we want to pass to FormB 
    // If we want pass just simple string we can use 'parm' method of 'Args' class 
    args.parm("anyStringValue"); 

    // Run FormB 
    args.name(formstr(FormB)); 
    formRun = classFactory.formRunClass(Args); 
    formRun.init(); 
    formrun.run(); 
    formrun.wait(); 

    super(); 
} 

Poi in forma destinazione init:

public void init() 
{ 
    str    anyStringValueFromCaller; 
    ; 
    super(); 

    // Check for passed arguments 
    if(element.args()) 
    { 
     // get string parameter 
     anyStringValueFromCaller = element.args().parm(); 

    } 
} 

Dovrei sicuramente usare solo il primo metodo e solo in circostanze particolari andrei con il metodo # 2 con il metodo override del pulsante, perché questo è uno dei pattern di default per il passaggio dei valori tra i moduli. Esempio più complesso disponibile a AxaptaPedia.com Passing values between forms