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
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