Checar edits antes de salvar no banco
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;
Lucas Araújo
Curtidas 0
Melhor post
Hélio Devmedia
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:
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.
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.
GOSTEI 1