AXAPTA: Como o nome da tabela, não o ID da tabela, ser usado como uma seleção na caixa de diálogo Selecionar do relatório de log do banco de dados?
Pergunta
Atualmente, apenas o ID da tabela pode ser usado, o que não tem sentido, pois é um número. Um pouco de exemplo de código seria realmente ótimo.
Solução
Crie um novo RunBaseReport
aula e lembre -se de nomear o SysDatabaseLog
relatório no lastValueElementName
método.
Solicitar o nome da tabela no dialog
método; use o TableName
Tipo de dados estendido para ativar a pesquisa.
Object dialog()
{
DialogRunbase dlg = super();
;
dialogTableName = dlg.addFieldValue(typeId(TableName),tableId2Name(tableId));
return dlg;
}
Atualize o intervalo de identificação da tabela do queryRun.query()
no getFromDialog
método após ligar super()
. Use o tableName2Id
função para converter para a tabela ID.
boolean getFromDialog()
{
boolean ret = super();
;
tableId = tableName2Id(dialogTableName.value());
this.queryrun().dataSourceNo(1).findRange(fieldNum(SysDatabaseLog,Table)).value(queryValue(tableId));
return ret;
}
No validate
Método, valide esse nome de tabela é válido (ID da tabela não 0, tabela não temp etc.).
Por fim, você altera o item de menu de saída para apontar para a classe em vez do relatório.
Aviso: o código não foi testado!