Powerbuilder :Como escrever expressão de validação para um campo
-
16-09-2020 - |
Pergunta
Eu tenho um datawindow contendo vários campos.Eu quero escrever uma expressão de validação para um campo denominado amount
.Eu tenho mais dois campos denominados debit
e credit
.Se a soma do débito e o crédito é maior do que a quantidade, então eu quero mostrar uma mensagem de validação para o usuário.
Como posso escrever a necessária validação de expressão na Coluna Especificação do que datawindow?
Eu também quero escrever a expressão de validação para um campo denominado test
.Há um campo chamado criteria
.Quando este campo é definido para 1, eu quero o campo de teste para ser um campo obrigatório.Como posso escrever a expressão de validação para isso?
Solução
Existem diferentes maneiras de se fazer isso, dependendo se você tem que usar a coluna é necessária a validação de expressão ou ter a licença para fazê-lo de maneiras diferentes.
Considerações De Design
Será que isso vai ser um freestyle datawindow, onde você só precisa validar a regra uma vez para a tela, ou uma tabela de estilo, onde os usuários podem massa introduzir conjuntos de dados e a regra precisa ser aplicada a cada linha?
Você quer exigir que os usuários para inserir os valores corretos cada vez que um campo obrigatório obtém o foco ou você quer deixá-los livremente navegar na tela e validar a poupar tempo?
Você vai obter algumas respostas diferentes aqui, eu espero, mas eu prefiro usar a coluna especificação de expressões apenas para verificações simples, porque:
- Complicado lógica tende a ficar difícil de ler e manter
- Se você tiver várias condições de erro que você está verificando, que pode levar a alguns difíceis de manejar mensagens se você usar a coluna especificação do built-in mensagem de erro campo
No entanto, eu vou conceder o dw expressões são geralmente muito rápido.
Usando um Campo Calculado para as Regras de Validação
Uma técnica alternativa é também um performer rápido e pode ser usado na maioria das versões do PB.
- Tem um campo calculado sobre o datawindow que tem um nome significativo, como
cf_amount_rule
e algo como isso na expressão:if (debit + credit = amount, 0, 1)
- Faça com que esse campo invisível para o usuário, se você quiser
- Adicionar outro campo calculado no rodapé a soma
cf_amount_rule
e agora você tem um útil ponto de referência que, rapidamente, diz-lhe quando houver um erro - No poupar tempo (ou a pfc_validation evento PFC usuários) você pode verificar soma > 0 e poste uma mensagem de erro
OO puristas pode sugerir que é errado para colocar lógica em datawindow e se você encontrar-se colocar na mesma regra em vários datawindows que é, certamente, um código de cheiro.Mas, por simples regras que são susceptíveis de mudar descobri mais uma vez que o datawindow é muito eficiente na execução destas regras e poupando-o de ter que escrever muito código em qualquer lugar.
Opcional Guloseimas
- Você pode fazer a mensagem de erro mais robusta, usando o método find() funcionalidade para identificar linhas específicas com o erro
- Você forneça útil visuais para o seu blog por alterar a linha ou um campo de cor do plano de fundo através da propriedade expressões que fazem referência a
cf_amount_rule
.