Axapta: Comment le nom de table, pas l'ID de table, être utilisé comme une sélection dans la boîte de dialogue Sélection de la base de données journal de rapport?
Question
Actuellement, seul le tableau Id peut être utilisé qui n'a pas de sens car il est un nombre. Un peu d'exemple de code serait vraiment grand.
La solution
Créer une nouvelle classe RunBaseReport
et souvenez-vous de nommer le rapport de SysDatabaseLog
dans la méthode lastValueElementName
.
Invite le nom de table dans le procédé de dialog
; utiliser le type de données étendue de TableName
pour activer la recherche.
Object dialog()
{
DialogRunbase dlg = super();
;
dialogTableName = dlg.addFieldValue(typeId(TableName),tableId2Name(tableId));
return dlg;
}
Mettre à jour l'ID de table de la gamme queryRun.query()
dans la méthode getFromDialog
après avoir appelé super()
. Utilisez la fonction tableName2Id
pour convertir en table id.
boolean getFromDialog()
{
boolean ret = super();
;
tableId = tableName2Id(dialogTableName.value());
this.queryrun().dataSourceNo(1).findRange(fieldNum(SysDatabaseLog,Table)).value(queryValue(tableId));
return ret;
}
Dans le procédé de validate
, de valider ce nom de tableau est valide (id de table pas 0, table pas température, etc.).
Enfin, vous modifiez l'élément de menu de sortie pour pointer vers la classe plutôt que le rapport.
Attention: le code n'a pas été testé