Felipe Gomes Postado Novembro 20, 2008 Denunciar Share Postado Novembro 20, 2008 Olá Pessoal!Preciso de ajuda para resolver um problema simples, pois sou iniciante em programação.Tenho um Form com dois DBEdit's, e gostaria de saber o que faço para impedir que o usuário grave na tabela se um dos DBEdit's estiver vazio. Uso tabelas Paradox.Grato a todos! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 20, 2008 Denunciar Share Postado Novembro 20, 2008 Há várias possibilidades:- Marcar, no field, a propriedade Required = True;- Antes do de chamar Post, testar se os respectivos campos estão, ou não, vazios;- No evento BeforePost do dataset, testar se os respectivos campos estão, ou não, vazios. Se estiver você chama o procedimento Abort;- No evento OnExit do componente, testar se o seu conteúdo foi, ou não, informado; Se não foi, mostra mensagem e mantém o foco nele;- ...... e por aí vai.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Gomes Postado Novembro 21, 2008 Autor Denunciar Share Postado Novembro 21, 2008 Grato Micheus!Poderia me dar um exemplo de uma das opções?Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 21, 2008 Denunciar Share Postado Novembro 21, 2008 Poderia me dar um exemplo de uma das opções?vamos tentar...- Marcar, no field, a propriedade Required = True;Esta não há o que exemplificar - apenas altere a propriedade citada- Antes do de chamar Post, testar se os respectivos campos estão, ou não, vazios;procedure TForm1.BtnGravaClick(Sender :TObject); begin if DatasetCAMPO.IsNull then // campo do dataset ligado ao DBEdit begin DatasetCAMPO.FocusControl; ShowMessage('Deve ser informado ... '); Exit; end; ... Dataset.Post; end; - No evento BeforePost do dataset, testar se os respectivos campos estão, ou não, vazios. Se estiver você chama o procedimento Abort; procedure TDatamodule.DatasetBeforePost(DataSet: TDataSet); begin if Dataset.FieldByName('CAMPO').IsNull then begin Dataset.FieldByName('CAMPO').FocusControl; // pode ser usado se o componente não estiver oculto ShowMessage('Deve ser informado ... '); Abort; end; end; ou, sem usar o conjunto ShowMessage e Abort - usando o Raise: procedure TDatamodule.DatasetBeforePost(DataSet: TDataSet); begin if Dataset.FieldByName('CAMPO').IsNull then begin Dataset.FieldByName('CAMPO').FocusControl; // pode ser usado se o componente não estiver oculto Raise Exception.Create('Deve ser informado ... '); end; end; - No evento OnExit do componente, testar se o seu conteúdo foi, ou não, informado; Se não foi, mostra mensagem e mantém o foco nele; procedure TForm1.DBEdit1Exit(Sender :TObject); begin if Dataset.FieldByName('CAMPO').IsNull then // campo do dataset ligado ao DBEdit // ou // if DatasetCAMPO.IsNull then // campo do dataset ligado ao DBEdit // if Trim(DBEdit1.Text) = '' then // eu prefiro um dos acima begin ShowMessage('Deve ser informado ... '); DBEdit1.SetFocus; end; end; Procure testá-los e ver o que é conveniente ou não no seu caso. É um bom hábito tentar padronizar o método, entretanto, nada impede que você os combine. Observar que ao usar o evento OnExit, é conveniente você testar o componente que recebeu o foco (ActiveControl), pois caso você tenha um botão para a opção cancelar gravação e ele seja pressionado não há porque fazer a validação: begin if ActiveControl = btnCancelar then Exit; if .... // continua com a validação ... end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Gomes Postado Novembro 21, 2008 Autor Denunciar Share Postado Novembro 21, 2008 Nossa! Que aula!Você me abasteceu de assunto para estudar e praticar por um bom tempo. E como você falou, devo examinar cada exemplo. Procurarei entendê-los também, pois creio que isso irá exercitar a minha lógica.Grato pela disponibilidade e atenção!Valeu Micheus! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Felipe Gomes
Olá Pessoal!
Preciso de ajuda para resolver um problema simples, pois sou iniciante em programação.
Tenho um Form com dois DBEdit's, e gostaria de saber o que faço para impedir que o usuário grave na tabela se um dos DBEdit's estiver vazio.
Uso tabelas Paradox.
Grato a todos!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.