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?

StackOverflow https://stackoverflow.com/questions/1366333

  •  21-09-2019
  •  | 
  •  

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.

Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top