Fórum Tratar erros #350904
20/12/2007
0
Tem os campos das tabelas que são não nulos e ai mesmo eu colocando os labels em negrito para que sejam campos obrigátorios a preecher, mesmo assim tem usuários que não preenchem e dá quele erro esquisito, e eles s´sabem ligar falando que tá furado, então sei lá teria como fazer as seguintes funções para tratar os erro tipo assim uma função [b:db4222ce3f]Function TratarErro;[/b:db4222ce3f]
Eu precisária de funções para:
1>Para verificar se todos os campos obrigátorios estão preenchido se não retorna uma mensagem!
Robinhocne
Curtir tópico
+ 0Posts
20/12/2007
Micheus
Gostei + 0
21/12/2007
Webjoel
Nos Fields do ClientDataSet tem um propriedade chamada ´Required´, que diz se o campo é obrigatório ou não, então você poderá criar uma procedure que faça um ´For´ em todos os campos do ClientDataSet, e eles foram Required e estiverem vazios você avisa ao usuário e para o processo com um ´break´. Esta função você pode botar no seu botão gravar, antes de gravar você roda a procedure, se preferir fazer uma função, você terá que passar um Tdataset como parâmetro.
Gostei + 0
21/12/2007
Robinhocne
Gostei + 0
21/12/2007
Micheus
[b:d47144e947]webjoel[/b:d47144e947], seria sem dúvida um boa opção.
Mas o colega [b:d47144e947]robinhcne[/b:d47144e947], utiliza uma abordagem diferente em seu programa:
- faz entradas dos dados em TEdit´s (não em data-aware);
- ao gravar, move estes dados para duas listas: uma com nome de campos e outra com valores;
- a partir destas listas, ele monta a instrução SQL do tipo INSERT, UPDATE ou DELETE e a executa;
Então, não existem fields, no máximo irá obter uma exception ao executar a querie.
Gostei + 0
21/12/2007
Webjoel
begin
if (ClientDataSet1.Fields[i].Required) and (ClientDataSet1.Field[i].IsNull) then
begin
ShowMessage(´Campo: ´ + ClientDataSet1[i].DisplayLabel + ´ precisa ser informado!´);
break;
end;
end;
...você precisar declarar a variavel ´i´ como integer e seria importante você editar a propriedade Displaylabel com o nome do campo.
Gostei + 0
25/12/2007
Robinhocne
Gostei + 0
26/12/2007
Webjoel
Gostei + 0
26/12/2007
Webjoel
Procedure ChecarcamposRequeridos(tabela : TDataSet);
var
i : integer;
begin
for i := 0 to Pred(tabela.Fields.Count) do
begin
if (tabela.Fields[i].Required) and (tabela.Field[i].IsNull) then
begin
ShowMessage(´Campo: ´ + tabela[i].DisplayLabel + ´ precisa ser informado!´);
break;
end;
end;
{Seria interessante editar o valor no campo DinplayLabel para melhor aproveitamento da procedure, clicando duas vezes no ClientDataSet, e em seguida no campo, aparece a propriedade DisplayLabel, que deve ser renomeada para o nome do campo.
Ex:
VL_VENDA, ficaria:
Valor da Venda.}
Gostei + 0
26/12/2007
Robinhocne
Gostei + 0
26/12/2007
Webjoel
Gostei + 0
26/12/2007
Sérgio Gobbo
Não sei se entendi o seu problema, você tem um cadastro e o usuário entra com os dados em TEdit´s. Você quer ver se o usuário preencheu todos os campos antes de mandar para o banco de dado.
Se for isso, creio que bastaria você fazer uma verificação mais ou menos assim no botão que irá postar os dados:
if (edit1.text<>´´)then
POSTAR
else
begin
showmessage(´Atenção, você não preencheu os dados obrigatórios!!´);
edit1.setfocus;
end;
Eu sempre utilizo desta maneira.
Até logo..
Gostei + 0
26/12/2007
Robinhocne
Gostei + 0
27/12/2007
Sérgio Gobbo
Gostei + 0
27/12/2007
Robinhocne
Gostei + 0
28/12/2007
Robinhocne
If Edit1.Text=´´; then ShowMessage (´Campo Obrigatório não preenchido´); else If If Edit.Text=????????
Esse restante que eu não sei, tipo assim, se o Edit estivesse em branco ele retorna a mensagem ou se ele estiver preenchido não retorna mensagem, e se possivel tiver como fazer uma função ou procedimento pra que não precisa fazer isso em cada edit?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)