Axapta: Come può il Nome tabella, non l'ID tabella, essere utilizzato come selezionare nella finestra di dialogo Seleziona del Database Log Report?
Domanda
Attualmente solo la tabella Id può essere usato che è privo di significato in quanto è un numero. Un po 'di codice di esempio sarebbe davvero grande.
Soluzione
Creare una nuova classe RunBaseReport
e ricordarsi di assegnare un nome al rapporto SysDatabaseLog
nel metodo lastValueElementName
.
Prompt il nome della tabella nel metodo dialog
; utilizzare il tipo di dati TableName
esteso per attivare la ricerca.
Object dialog()
{
DialogRunbase dlg = super();
;
dialogTableName = dlg.addFieldValue(typeId(TableName),tableId2Name(tableId));
return dlg;
}
Aggiorna l'intervallo tabella ID del queryRun.query()
nel metodo getFromDialog
dopo aver chiamato super()
. Utilizzare la funzione tableName2Id
per convertire in tabella id.
boolean getFromDialog()
{
boolean ret = super();
;
tableId = tableName2Id(dialogTableName.value());
this.queryrun().dataSourceNo(1).findRange(fieldNum(SysDatabaseLog,Table)).value(queryValue(tableId));
return ret;
}
Nel metodo validate
, convalidare quel nome tabella è valida (tabella ID non 0, tabella non temporanea, ecc.).
Infine si modifica la voce di menu di uscita per puntare alla classe piuttosto che il rapporto.
Attenzione: il codice non è stato testato