Checar edits antes de salvar no banco

25/01/2019

10

Eae galera, to fazendo isso pra verificar, porem nao acho que seja o melhor metodo para verificar, nao quero que o programa salve quando nao tiver nada no edit. Do jeito que ta ele ta salvando no banco junto com a mensagem.

procedure TfmClientes.SBGravarClick(Sender: TObject);
begin
    begin
    if (EDNome.Text = '') or (EDPessoa.Text = '') or (EDSocial.Text = '') or (EDDdd.Text = '') or (EDTelefone.Text = '') or (EDCpf.Text = '') or (EDRg.Text = '') or (EDEmissor.text = '') or (EDCep.Text = '') or (EDCidade.Text = '') or (EDLogradouro.Text = '') or (EDNumero.Text = '') or (EDBairro.Text = '')  then
        showmessage('Ainda há campos que precisam ser preenchidos!')
        else
        FDQUERY1.sql.clear;
        FDQuery1.SQL.Add('Execute block as');
        FDQuery1.SQL.Add('Begin');
        FDQUERY1.sql.add('INSERT INTO CLIENTES (NOME,TIPO_PESSOA,RAZAO_SOCIAL,DDD,TELEFONE,E_MAIL,SITE,CPF,RG,ORGAO_EMISSOR,DATA_EXP,SEXO,ESTADO_CIVIL,DATA_NASC,NATURALIDADE) VALUES ('+QuotedStr(EDNome.text)+','+QuotedStr(EDPessoa.Text)+','+QuotedStr(EDSocial.text)+','+QuotedStr(EDDdd.text)+','+QuotedStr(EDTelefone.text)+','+QuotedStr(EDEmail.text)+','+QuotedStr(EDSite.text)+','+QuotedStr(EDCpf.text)+','+QuotedStr(EDRg.text)+','+QuotedStr(EDEmissor.text)+','+QuotedStr(FormatDateTime('mm/dd/yyyy',DTExp.Date))+','+QuotedStr(EDSexo.text)+','+QuotedStr(EDCivil.text)+','+QuotedStr(FormatDateTime('mm/dd/yyyy',DTNasc.Date))+','+QuotedStr(EDNaturalidade.text)+')'+';');
        FDQuery1.SQL.Add('INSERT INTO ENDERECO (CEP,CIDADE,LOGRADOURO,NUMERO,COMPLEMENTO,BAIRRO,TIPO_IMOVEL,ANOS,MESES) VALUES ('+QuotedStr(EDCep.Text)+','+QuotedStr(EDCidade.Text)+','+QuotedStr(EDLogradouro.Text)+','+QuotedStr(EDNumero.Text)+','+QuotedStr(EDComplemento.Text)+','+QuotedStr(EDBairro.Text)+','+QuotedStr(EDImovel.Text)+','+QuotedStr(EDAnos.text)+','+QuotedStr(EDMeses.Text)+')'+';');
        FDQuery1.SQL.Add('end');
        FDquery1.ExecSQL;
        fmModulos_Dados.FDConnection1.Commit;
    end;
end;
Responder

Post mais votado

25/01/2019

Olá Lucas, pelo visto você prefere fazer na unha! rsrs.

Geralmente preferimos passar os valores para os Fieds de um FDTable ou FDquery e dar um post, porque ele já verifica os campos obrigatórios e dá um erro se não forem preenchidos. Além disso tem um evento chamado BeforePost que você pode fazer testes por exemplo

if idade>85 then raise('Idade não é permitida'1);

para que apareça essa mensagem na tela pro usuário e ele tenha que corrigir!

Mas já que você está fazendo manualmente, vou te dar uma dica que mais parece uma gambiarra, mas serve.

Os edits que são obrigatórios de preencher, coloque em negrito e escreva o nome do campo no Hint do edti, aí no botão de salvar faça assim:

var
  I: Integer;
  edit: TEdit;
begin
  for I := 0 to Self.ComponentCount-1 do
  begin
    if self.Components[I] is TEdit then
    begin
      edit:= Self.Components[I] as TEdit;

      if edit.Font.Style = [fsBold] then
        if trim(edit.Text)='' then
        begin
          edit.SetFocus;
          raise Exception.Create('O Campo '+edit.Hint+' não pode ser vazio!');
        end;

    end;
  end;

end;


Este código simplesmente procura todos os Edits da tela que são negrito (obrigatórios) e verifica se está preenchido. Se não estiver ele põe o foco no edit e dispara um erro mostrando a mensagem personalizada....

depois deste código vocÊ coloca o SQL pra salvar,

Espero ter ajudado. Um forte abraço e fique com Deus.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar