Tratar campos
Estou fazendo uma aplicação que possui uns trintas campos que devem ser tratatos, estes devem ser tratados individualmente, por sua vez ao tratá -los , quando forço um erro, ele exibe a tela indicando o erro e quando dou ok, ele passa,deveria deixar eu acrescentar o campo que esta com o erro e ele passa direto !
Vou manda o codigo , ele ta com uns erros na cara dura!
procedure TDataModule2.ClientDataSetBeforePost(DataSet: TDataSet);
begin
if FRMinserir.DBEdit2.Text = ´´ then
begin
ShowMessage(´Insira a espécie do pedido´);
FRMinserir.DBEdit2.SetFocus;
DataModule1.Abrir.Execute;
end;
if FRMinserir.DBEdit3.Text = ´´ then
begin
ShowMessage(´Insira a o sistema do pedido saida´);
end;
if FRMinserir.DBEdit4.Text = ´´ then
begin
ShowMessage(´Insira a data de transição´);
end;
if FRMinserir.DBEdit5.Text = ´´ then
begin
ShowMessage(´Insira o numero da atualização´);
end;
if FRMinserir.DBEdit6.Text = ´´ then
begin
ShowMessage(´Insira a data de atualização´);
end;
if FRMinserir.DBEdit7.Text = ´´ then
begin
ShowMessage(´Insira o tipo de ajuste´);
end;
if FRMinserir.DBEdit8.Text = ´´ then
begin
ShowMessage(´Insira a espécie do pedido´);
end;
if FRMinserir.DBEdit9.Text = ´´ then
begin
ShowMessage(´Insira o modo de pagamento´);
end;
Isso é um parte dele, tem ainda!
Aguardo respostas !
Obrigado!
Vou manda o codigo , ele ta com uns erros na cara dura!
procedure TDataModule2.ClientDataSetBeforePost(DataSet: TDataSet);
begin
if FRMinserir.DBEdit2.Text = ´´ then
begin
ShowMessage(´Insira a espécie do pedido´);
FRMinserir.DBEdit2.SetFocus;
DataModule1.Abrir.Execute;
end;
if FRMinserir.DBEdit3.Text = ´´ then
begin
ShowMessage(´Insira a o sistema do pedido saida´);
end;
if FRMinserir.DBEdit4.Text = ´´ then
begin
ShowMessage(´Insira a data de transição´);
end;
if FRMinserir.DBEdit5.Text = ´´ then
begin
ShowMessage(´Insira o numero da atualização´);
end;
if FRMinserir.DBEdit6.Text = ´´ then
begin
ShowMessage(´Insira a data de atualização´);
end;
if FRMinserir.DBEdit7.Text = ´´ then
begin
ShowMessage(´Insira o tipo de ajuste´);
end;
if FRMinserir.DBEdit8.Text = ´´ then
begin
ShowMessage(´Insira a espécie do pedido´);
end;
if FRMinserir.DBEdit9.Text = ´´ then
begin
ShowMessage(´Insira o modo de pagamento´);
end;
Isso é um parte dele, tem ainda!
Aguardo respostas !
Obrigado!
Deryck
Curtidas 0
Respostas
Tnaires
13/07/2004
Duas coisinhas:
Primeiro, é mais seguro tratar os Values dos campos, não os Texts dos DBEdits. Substituindo uma das suas linhas, ficaria assim:
Ou, dependendo do caso:
Segundo, todas essas linhas podem ser retiradas se vc ajustar os campos no seu banco de dados como Requeridos. Dependendo do seu banco, as mensagens de erro podem ser ajustadas nele, e vc somente faz o Delphi capturar o objeto Exception resultante do erro e mostrar na tela a mensagem q vc indicou (E.Message).
Primeiro, é mais seguro tratar os Values dos campos, não os Texts dos DBEdits. Substituindo uma das suas linhas, ficaria assim:
if Table1Campo1.AsString = ´´ then begin ShowMessage(´Insira a o sistema do pedido saida´); end;
Ou, dependendo do caso:
if Table1Campo1.IsNull then begin ShowMessage(´Insira a o sistema do pedido saida´); end;
Segundo, todas essas linhas podem ser retiradas se vc ajustar os campos no seu banco de dados como Requeridos. Dependendo do seu banco, as mensagens de erro podem ser ajustadas nele, e vc somente faz o Delphi capturar o objeto Exception resultante do erro e mostrar na tela a mensagem q vc indicou (E.Message).
GOSTEI 0
Tnaires
13/07/2004
Só pra complementar, vc pode capturar a exceção no evento OnPostError do DataSet.
GOSTEI 0
Deryck
13/07/2004
Duas coisinhas:
Primeiro, é mais seguro tratar os Values dos campos, não os Texts dos DBEdits. Substituindo uma das suas linhas, ficaria assim:
Ou, dependendo do caso:
Segundo, todas essas linhas podem ser retiradas se vc ajustar os campos no seu banco de dados como Requeridos. Dependendo do seu banco, as mensagens de erro podem ser ajustadas nele, e vc somente faz o Delphi capturar o objeto Exception resultante do erro e mostrar na tela a mensagem q vc indicou (E.Message).
if Table1Campo1.AsString = ´´ then begin ShowMessage(´Insira a o sistema do pedido saida´); end;
if Table1Campo1.IsNull then begin ShowMessage(´Insira a o sistema do pedido saida´); end;
Não uso componente table, o que eu quero é quando ele vereficar e encotrar um erro, que seja possível eu editar logo apos eu der ok na exibição do erro!
Ele ,ao invés de deixar eu modificar o campo que esta errado, ele continua a execução e acaba aceitando!
GOSTEI 0
Rômulo Barros
13/07/2004
Configure a propriedade Required dos seus FIELDS que são requeridos(não podem ser gravados sem valores) para true e, no botão salvar coloque:
procedure TfrmOpeEmpresa.btbtnConfirmarClick(Sender: TObject); Var intC : Byte; begin For intC := 0 To ClientDataSet.FieldCount -1 Do Begin If(ClientDataSet.Fields[intC].Required)Then Begin If(Trim(ClientDataSet.Fields[intC].Text)=´´)Then Begin ShowMessage(´Preencha o campo ´ + ClientDataSet.Fields[intC].DisplayLabel); Exit; End; End; End; ClientDataSet.Post; ClientDataSet.ApplyUpdates(0);
GOSTEI 0
Tnaires
13/07/2004
Mais duas coisinhas:
Primeiro, não importa o tipo de componente (Table, Query, IBQuery, etc..). Herdando de TDataSet, serve.
Segundo, o q eu te falei faz exatamente o q vc afirmou, com a vantagem d vc economizar escrita d código no seu programa e deixar q o seu banco d dados faça a tarefa para vc.
[b:ee8b37a0a2]Eu[/b:ee8b37a0a2] acho bem mais útil.
Abraços.
Primeiro, não importa o tipo de componente (Table, Query, IBQuery, etc..). Herdando de TDataSet, serve.
Segundo, o q eu te falei faz exatamente o q vc afirmou, com a vantagem d vc economizar escrita d código no seu programa e deixar q o seu banco d dados faça a tarefa para vc.
[b:ee8b37a0a2]Eu[/b:ee8b37a0a2] acho bem mais útil.
Abraços.
GOSTEI 0
Deryck
13/07/2004
Mais duas coisinhas:
Primeiro, não importa o tipo de componente (Table, Query, IBQuery, etc..). Herdando de TDataSet, serve.
Segundo, o q eu te falei faz exatamente o q vc afirmou, com a vantagem d vc economizar escrita d código no seu programa e deixar q o seu banco d dados faça a tarefa para vc.
[b:c5e7b19f17]Eu[/b:c5e7b19f17] acho bem mais útil.
Abraços.
Ah soh, so que o problema é que quem me mando fazer, mando eu faze dessa forma, no banco seria mais fácil mesmo,mas valeu a intenção !
Ate mais !
GOSTEI 0