RmsFiltro
Objetivo
A partir de informações cadastradas em uma base de dados local, o RMSFiltro monta uma lista de parâmetros, permitindo ao usuário informar seus valores. Cada parâmetro pode ter sua própria rotina de validação, que é efetuada assim que o usuário termina de informar o valor.
Existem parâmetros que são comuns em várias partes do sistema, como por exemplo código de filial, código de seção, código de fornecedor, etc., para diminuir o trabalho de cadastro e aumentar a reutilização das validações, foram criados os conceitos de "Classes de Parâmetros" e "Grupos de Parâmetros".
Uma classe controla todo o comportamento do parâmetro, ou seja, o tipo de dado, a visualização, a validação, etc., enquanto o agrupamento, controla a utilização do parâmetro dentro do contexto de uma consulta específica. Explicando melhor, o agrupamento determina dados como: nome físico, se permite múltiplos valores, se permite seleção geral, entre outros.
Cada parâmetro pode, também, ser apresentado na forma de uma lista de valores (combobox) para seleção do usuário. O conteúdo desta lista pode ser fixado no cadastro do parâmetro, ou obtido através de uma classe de controle.
Ao final da digitação dos parâmetros, o programa chamador recebe uma lista com os valores informados ou, opcionalmente, uma string contendo critérios de seleção no formato SQL.
Conceito
O RMSHelp foi desenvolvido para dar ao usuário uma interface única de digitação de parâmetros, sejam eles para relatórios ou processos.
Parametrização
Cadastro dos Parâmetros
Cadastro de Classes de Parâmetros (cls_param)
Campo | Tipo de Dados | Descrição |
nm_cls | Text(20) | Nome identificador da classe |
tp_dado_cls | Text(1) | Tipo de dado esperado para o parâmetro M – Mês/Ano D – Data. Retorno será no formato "DD/MM/YY" R – Data. Retorno será no formato "YYYMMDD" 9 – Numérico X – Alfanumérico |
tam_cls | Double | Número máximo de dígitos/caracteres permitidos |
qtde_decs | Integer | Número de casas decimais para valores numéricos |
nm_dll_ctrl | Text(50) | Nome do componente responsável pelo controle da classe. Deve ser informada no padrão "DllName.ClassName" |
idc_vlda_cls | Double | Indica se esta classe será validada pelo componente de controle |
idc_vlr_pdr_cls | Double | Indica se esta classe terá valor padrão fornecido pelo componente de controle |
idc_hlp_ctxt_cls | Double | Indica se o componente de controle fornece ajuda de contexto para esta classe |
cd_cons | Double | Código de consulta (vide RMShelp) |
dsc_cls | Text(255) | Descritivo do conteúdo esperado para a classe |
idc_lst_vlr | Double | Indica se a classe é uma lista de valores e se os valores estão cadastrados na tabela lst_vlr_param |
idc_lst_vlr_ext | Double | Indica se a classe é uma lista de valores e se os valores serão obtidos através do componente de controle. |
Cadastro de Grupos de Parâmetros (cad_filt)
Campo | Tipo de Dados | Descrição |
cd_filt | Double | Identificador do grupo |
dsc_filt | Text(40) | Descrição do grupo. Aparecerá no título da janela |
Cadastro Parâmetros do Grupo (param_filt)
Campo | Tipo de Dados | Descrição |
cd_filt | Double | Identificador do grupo |
rot_param_filt | Text(40) | Rótulo do parâmetro. Será utilizado para identificar o parâmetro na janela de digitação. |
ord_param_filt | Double | Ordem na qual os parâmetros aparecerão na tela |
nm_fis_filt | Text(255) | Nome físico do parâmetro. É utilizado na criação dos critérios em SQL |
oper_comp_filt | Text(4) | Operador de comparação válido para o banco de dados. É utilizado na criação dos critérios em SQL. =, >, <, <>, >=, <=, LIKE |
idc_mult_vlrs | Double | Indica se este parâmetro pode receber vários valores. Não tem efeito se utilizado junto com RMSHelp |
idc_perm_geral | Double | Indica se o usuário pode usar a opção "F2-Geral" para este parâmetro. Não tem efeito se utilizado junto com RMSHelp |
nm_cls | Text(20) | Obrigatório. Nome da classe de parâmetros base. |
Lista de Valores do Parâmetro (lst_vlr_param)
Campo | Tipo de Dados | Descrição |
cd_filt | Double | Identificador do grupo |
rot_param_filt | Text(40) | Rótulo do parâmetro. Será utilizado para identificar o parâmetro na janela de digitação. |
cd_vlr_param | Text(10) | Valor do parâmetro. É o valor que será retornado pelo RMSFiltro para o programa chamador |
dsc_vlr_param | Text(40) | Descrição do parâmetro. É o valor que o usuário vê na lista de parâmetros. |
Vale ressaltar, que a classe de parâmetro existe para promover o re-aproveitamento de seu comportamento. Neste caso, antes de cadastrar uma nova classe, deve-se verificar se já existe alguma que possa ser re-utilizada.
Chamar o Filtro
Dim objFiltroAs IObjetoFiltro
Dim varRetorno As Variant
Set objFiltro = CreateObject("RMSFiltro.cFiltro")
varRetorno = objFiltro.MostrarFiltro(Me, 1)
Set objFiltro = NothingApós ter sido cadastrado, o filtro pode ser invocado via código como abaixo, lembrando de adicionar referência ao componente "IFILTRO".
Leia o próximo tópico para obter mais informações técnicas sobre o funcionamento do componente.
Descrição do processo
Este componente foi desenvolvido em conjunto com três interfaces :
IObjetoFiltro- Implementada pelo componente, é utilizada para a inicialização do filtro.
IChamadorFiltro- Permite ao programa chamador interferir na validação e formatação dos valores digitados
IControleFiltro- Permite a criação de componentes responsáveis por controlar o comportamento das classes de parâmetros
A interface IObjetoFiltro deve ser utilizada conforme mostrado no tópico "Chamar o Filtro".
Para utilizar a interface IChamadorFiltro, adicione o comando "Implements IChamadorFiltro" no início do código da sua janela e veja a referência dos métodos disponíveis neste manual. Os métodos serão chamados pelo RMSFiltro quando forem necessários.
Para utilizar a interface IControleFiltro, crie uma nova classe e e adicione o comando "Implements IControleFiltro" no início do código e veja a referência dos métodos disponíveis neste manual. Informe corretamente o nome da classe criada no campo "nm_dll_ctrl" na tabela "cls_param". Os métodos serão chamados pelo RMSFiltro quando forem necessários.
Referência I ObjetoFiltro
Métodos
MostrarFiltro
Inicia a tela de filtro e retorna lista dos parâmetros digitados.
Sintaxe:strDados = objFiltro.MostrarFiltro(Chamador, Codigo)
Chamador:(Object) Referência do objeto que está chamando o filtro. Somente necessário quando o chamador implementa a interface IChamadorFiltro.
Codigo:(Long)Código de um agrupamento de parâmetros cadastrado.
(Retorno):(String) Lista dos parâmetros digitados separados por "pipes" ("|"). Quando o parâmetro permite múltiplos valores, cada valor dentro do parâmetro aparece separado por "#".
Propriedades
CriterioSelecao
Retorna string com lista de critérios no formato SQL
Sintaxe:strDados = objFiltro.CriterioSelecao()
(Retorno):(String) Lista de critérios no formato SQL
Conteudo
Retorna o valor atual de qualquer parâmetro dentro do filtro. Geralmente utilizado dentro dos componentes de controle
Sintaxe:varDados = objFiltro.Conteudo(Rotulo)
Rotulo:(String) Rótulo do parâmetro desejado. É considerado o rótulo que está cadastrado no banco, uma vez que a janela pode estar traduzida em outro idioma.
(Retorno):(Variant) Valor atual do parâmetro.
Referência I ChamadorFiltro
Métodos
ValidarParametro
Permite ao programa chamador interferir no processo de validação de um parâmetro. Este método é chamado, como um evento, após a validação pelo componente de controle. Seu funcionamento é semelhante ao evento "Validate"
Sintaxe:ValidarParametro(Rotulo, Valor, Cancelar, Mostrar)
Rotulo:(String) Rótulo do parâmetro desejado. É considerado o rótulo que está cadastrado no banco, uma vez que a janela pode estar traduzida em outro idioma.
Valor :(Variant) Valor informado pelo usuário
Cancelar:(Boolean) Diz ao RMSFiltro para cancelar a edição do parâmetro
Mostrar:(Variant) O valor que será mostrado na tela, caso o parâmetro tenha sido validado.
FormatarParametro
Permite ao programa chamador formatar o conteúdo do parâmetro na tela.
Sintaxe:FormatarParametro(Rotulo, Valor, Mostrar)
Rotulo:(String) Rótulo do parâmetro desejado. É considerado o rótulo que está cadastrado no banco, uma vez que a janela pode estar traduzida em outro idioma.
Valor :(Variant) Valor informado pelo usuário
Mostrar:(Variant) O valor que será mostrado na tela.
Referência I ControleFiltro
Métodos
ValidarParametro
Responsável pelo processo de validação de um parâmetro. Este método é chamado, como um evento, após a digitação do usuário. Seu funcionamento é semelhante ao evento "Validate"
Sintaxe:ValidarParametro(Rotulo, Valor, Cancelar, Mostrar)
Rotulo:(String) Rótulo do parâmetro desejado. É considerado o rótulo que está cadastrado no banco, uma vez que a janela pode estar traduzida em outro idioma.
Valor :(Variant) Valor informado pelo usuário
Cancelar:(Boolean) Diz ao RMSFiltro para cancelar a edição do parâmetro
Mostrar:(Variant) O valor que será mostrado na tela, caso o parâmetro tenha sido validado.
Propriedades
Chamador
Somente gravação. É invocada para fornecer a referência do RMSFiltro atualmente ativo.
Sintaxe:Chamador(objFiltro)
objFiltro:(IObjetoFiltro) Referência do RMSFiltro ativo.
ValorPadrao
Somente leitura. É invocada para requisitar o valor padrão para a classe.
Sintaxe:ValorPadrao(Classe)
Classe:(String) Nome da classe sendo tratada pelo RMSFiltro.
(Retorno):(String) Valor padrão no formato "#valor;descricao"
AjudaContexto
Somente leitura. É invocada para requisitar ajuda de contexto para o parâmetro.
Ainda não implementado.
ListaValores
Somente leitura. É invocada para requisitar a lista de valores válidos para o parâmetro.
Sintaxe:ListaValores (Classe)
Classe:(String) Nome da classe sendo tratada pelo RMSFiltro.
(Retorno):(String) Lista de valores no formato
"#valor1;descricao1|#valor2;descricao2"