Axapta: Wie kann der Tabellenname, nicht die Tabelle ID, als Auswahl im Select-Dialog des Datenbank-Protokollbericht verwendet werden?
Frage
Derzeit ist nur die Tabelle Id verwendet werden kann, die sinnlos ist, da es eine Zahl ist. Ein wenig Codebeispiel wäre wirklich groß sein.
Lösung
Erstellen Sie eine neue Klasse RunBaseReport
und erinnere mich an den SysDatabaseLog
Bericht in der lastValueElementName
Methode zu nennen.
Prompt der Tabellenname in der dialog
Methode; Verwenden Sie die TableName
erweiterten Datentyp zu ermöglichen Lookup.
Object dialog()
{
DialogRunbase dlg = super();
;
dialogTableName = dlg.addFieldValue(typeId(TableName),tableId2Name(tableId));
return dlg;
}
Aktualisieren der Tabellen-ID-Bereich des queryRun.query()
im getFromDialog
Verfahren nach super()
Aufruf. Verwenden Sie die tableName2Id
Funktion Tabellen-ID zu konvertieren.
boolean getFromDialog()
{
boolean ret = super();
;
tableId = tableName2Id(dialogTableName.value());
this.queryrun().dataSourceNo(1).findRange(fieldNum(SysDatabaseLog,Table)).value(queryValue(tableId));
return ret;
}
In der validate
Methode bestätigen, dass Tabellennamen gültig ist (Tabelle id nicht 0, Tabelle nicht Temp usw.).
Sie schließlich das Ausgangsmenüpunkt in die Klasse zu Punkt ändern, anstatt der Bericht.
Achtung: Code wurde nicht getestet