ERRO AO EDITAR CAMPO “DATA NASCIMENTO” NO FORMULÁRIO

23/05/2019

11

ERRO AO EDITAR CAMPO “DATA NASCIMENTO” NO FORMULÁRIO

Tenho um formulário com os seguintes campos:

id (Key primary)
nome (EdtNome)
sexo (CbxSexo "ComboBox")
cpf (EdtCPF "MaskEdit")
data_nascimento (EdtNome "MaskEdit")
endereco (EdtNome)
numero (EdtNome)
complemento (EdtNome)
bairro (EdtNome)
cidade (EdtNome)
uf (EdtNome "ComboBox")
cep (EdtNome "MaskEdit")
telefone (EdtNome "MaskEdit")
celular (EdtNome "MaskEdit")
contato (EdtNome)
email (EdtNome)
cargo (EdtNome "ComboBox")
usuario (EdtNome)
senha (EdtNome)

No meu "Botão EDITAR" tem os seguintes comandos:

procedure TFrmCadFuncionarios.BtnEditarClick(Sender: TObject);
begin
DM.TabFuncionarios.Edit;

if (edtNome.Text <> '') and (edtCPF.Text <> ' . . - ') then
begin
//EDITANDO OS DADOS
associarCampos;

//VERIFICAR SE AS SENHAS COINCIDEM
if edtSenha.Text <> '' then
begin
if edtSenha.Text <> edtConfirmarSenha.Text then
begin
MessageDlg('As senhas não coincidem', mtInformation, mbOKCancel, 0);
edtConfirmarSenha.Text := '';
edtConfirmarSenha.SetFocus;
exit;
end;
end;

//VERIFICAR SE O CPF JÁ ESTÁ CADASTRADO
if cpfAntigo <> edtCPF.Text then
begin
DM.QryFuncionarios.sql.Clear;
DM.QryFuncionarios.sql.Add('select cpf from funcionarios where cpf = ' +QuotedStr(Trim(EdtCpf.Text)));
DM.QryFuncionarios.Open;


if not DM.QryFuncionarios.IsEmpty then
begin
cpf := DM.QryFuncionarios['cpf'];
MessageDlg('O Cpf ' + cpf + ' já existe no banco de dados!', mtInformation, [mbOk], 0);
edtCPf.SetFocus;
Exit;
end;
end;

//VERIFICAR SE O USUARIO JÁ ESTÁ CADASTRADO
if usuarioAntigo <> EdtUsuario.Text then
begin
DM.QryFuncionarios.sql.Clear;
DM.QryFuncionarios.sql.Add('select usuario from funcionarios where usuario = ' +QuotedStr(Trim(EdtUsuario.Text)));
DM.QryFuncionarios.Open;

if not DM.QryFuncionarios.IsEmpty then
begin
usu := DM.QryFuncionarios['usuario'];
MessageDlg('O Usuário ' + usu + ' já existe no banco de dados!', mtInformation, [mbOk], 0);
edtUsuario.SetFocus;
Exit;
end;
end;

DM.QryConFuncionarios.Close;
DM.QryConFuncionarios.SQL.Clear;
with DM.QryConFuncionarios.SQL do
begin
Add('Update funcionarios set ');
Add('nome=:nome,cpf=:cpf,sexo=:sexo,endereco=:endereco,numero=:numero,');
Add('complemento=:complemento,bairro=:bairro,cidade=:cidade,uf=:uf,cep=:cep,');
Add('telefone=:telefone,celular=:celular,contato=:contato,email=:email,');
Add('data_nascimento=:data_nascimento,cargo=:cargo,usuario=:usuario,senha=:senha');
Add('where id=:id');
end;

DM.QryConFuncionarios.ParamByName('nome').Value := EdtNome.Text;
DM.QryConFuncionarios.ParamByName('cpf').Value := EdtCPF.Text;
DM.QryConFuncionarios.ParamByName('sexo').Value := CbxSexo.Text;
DM.QryConFuncionarios.ParamByName('data_nascimento').Value := EdtDataNascimento.Text;
DM.QryConFuncionarios.ParamByName('endereco').Value := EdtEndereco.Text;
DM.QryConFuncionarios.ParamByName('numero').Value := EdtNumero.Text;
DM.QryConFuncionarios.ParamByName('complemento').Value := EdtComplemento.Text;
DM.QryConFuncionarios.ParamByName('bairro').Value := EdtBairro.Text;
DM.QryConFuncionarios.ParamByName('cidade').Value := EdtCidade.Text;
DM.QryConFuncionarios.ParamByName('uf').Value := CbxUF.Text;
DM.QryConFuncionarios.ParamByName('cep').Value := EdtCep.Text;
DM.QryConFuncionarios.ParamByName('telefone').Value := EdtTelefone.Text;
DM.QryConFuncionarios.ParamByName('celular').Value := EdtCelular.Text;
DM.QryConFuncionarios.ParamByName('contato').Value := EdtContato.Text;
DM.QryConFuncionarios.ParamByName('email').Value := EdtEmail.Text;

DM.QryConFuncionarios.ParamByName('cargo').Value := CbxCargo.Text;
DM.QryConFuncionarios.ParamByName('usuario').Value := EdtUsuario.Text;
DM.QryConFuncionarios.ParamByName('senha').Value := EdtSenha.Text;
DM.QryConFuncionarios.ParamByName('id').Value := EdtCodigo.Text;
DM.QryConFuncionarios.ExecSQL;

MessageDlg('Editado com Sucesso', mtInformation, mbOKCancel, 0);
buscarTudo;
DesabilitarCampos();

btnSalvar.Enabled := False;
btnNovo.Enabled := True;
BtnEditar.Enabled := False;
BtnExcluir.Enabled := False;
BtnCancelar.Enabled := False;
DgDetalhes.Enabled := True;
end
else
begin
MessageDlg('Preencha os Campos', mtInformation, mbOKCancel, 0);
edtNome.SetFocus;
end;
end;

Quando insiro um novo registro e preencho todos os campos, inclusive o campo "Data Nascimento", os dados são
salvos corretamente, porem se eu fizer qualquer alteração em qualquer campo do formulário, a "Data Nascimento"
não estar sendo gravada no banco de dados, ficando desta forma: "00/__/__". Ela é mostrada em um "DBGrid" no formulário com a data: "31/12/1899". E no formulário no "EditDataNascimento" fica: "00/__/__". no banco de dados no "phpMyAdmin" fica gravado: "0000/00/00"
Não sei onde estou errando, gostaria muito da ajuda de vocês, só falta resolver este problema para que meu formulário funcione 100% no cadastro.
Agradeço toda atenção deste forum.
Responder

Post mais votado

13/08/2019

ERRO AO EDITAR CAMPO “DATA NASCIMENTO” NO FORMULÁRIO

Tenho um formulário com os seguintes campos:

id (Key primary)
nome (EdtNome)
sexo (CbxSexo "ComboBox")
cpf (EdtCPF "MaskEdit")
data_nascimento (EdtNome "MaskEdit")
endereco (EdtNome)
numero (EdtNome)
complemento (EdtNome)
bairro (EdtNome)
cidade (EdtNome)
uf (EdtNome "ComboBox")
cep (EdtNome "MaskEdit")
telefone (EdtNome "MaskEdit")
celular (EdtNome "MaskEdit")
contato (EdtNome)
email (EdtNome)
cargo (EdtNome "ComboBox")
usuario (EdtNome)
senha (EdtNome)

No meu "Botão EDITAR" tem os seguintes comandos:

procedure TFrmCadFuncionarios.BtnEditarClick(Sender: TObject);
begin
DM.TabFuncionarios.Edit;

if (edtNome.Text <> '') and (edtCPF.Text <> ' . . - ') then
begin
//EDITANDO OS DADOS
associarCampos;

//VERIFICAR SE AS SENHAS COINCIDEM
if edtSenha.Text <> '' then
begin
if edtSenha.Text <> edtConfirmarSenha.Text then
begin
MessageDlg('As senhas não coincidem', mtInformation, mbOKCancel, 0);
edtConfirmarSenha.Text := '';
edtConfirmarSenha.SetFocus;
exit;
end;
end;

//VERIFICAR SE O CPF JÁ ESTÁ CADASTRADO
if cpfAntigo <> edtCPF.Text then
begin
DM.QryFuncionarios.sql.Clear;
DM.QryFuncionarios.sql.Add('select cpf from funcionarios where cpf = ' +QuotedStr(Trim(EdtCpf.Text)));
DM.QryFuncionarios.Open;


if not DM.QryFuncionarios.IsEmpty then
begin
cpf := DM.QryFuncionarios['cpf'];
MessageDlg('O Cpf ' + cpf + ' já existe no banco de dados!', mtInformation, [mbOk], 0);
edtCPf.SetFocus;
Exit;
end;
end;

//VERIFICAR SE O USUARIO JÁ ESTÁ CADASTRADO
if usuarioAntigo <> EdtUsuario.Text then
begin
DM.QryFuncionarios.sql.Clear;
DM.QryFuncionarios.sql.Add('select usuario from funcionarios where usuario = ' +QuotedStr(Trim(EdtUsuario.Text)));
DM.QryFuncionarios.Open;

if not DM.QryFuncionarios.IsEmpty then
begin
usu := DM.QryFuncionarios['usuario'];
MessageDlg('O Usuário ' + usu + ' já existe no banco de dados!', mtInformation, [mbOk], 0);
edtUsuario.SetFocus;
Exit;
end;
end;

DM.QryConFuncionarios.Close;
DM.QryConFuncionarios.SQL.Clear;
with DM.QryConFuncionarios.SQL do
begin
Add('Update funcionarios set ');
Add('nome=:nome,cpf=:cpf,sexo=:sexo,endereco=:endereco,numero=:numero,');
Add('complemento=:complemento,bairro=:bairro,cidade=:cidade,uf=:uf,cep=:cep,');
Add('telefone=:telefone,celular=:celular,contato=:contato,email=:email,');
Add('data_nascimento=:data_nascimento,cargo=:cargo,usuario=:usuario,senha=:senha');
Add('where id=:id');
end;

DM.QryConFuncionarios.ParamByName('nome').Value := EdtNome.Text;
DM.QryConFuncionarios.ParamByName('cpf').Value := EdtCPF.Text;
DM.QryConFuncionarios.ParamByName('sexo').Value := CbxSexo.Text;
DM.QryConFuncionarios.ParamByName('data_nascimento').Value := EdtDataNascimento.Text;
DM.QryConFuncionarios.ParamByName('endereco').Value := EdtEndereco.Text;
DM.QryConFuncionarios.ParamByName('numero').Value := EdtNumero.Text;
DM.QryConFuncionarios.ParamByName('complemento').Value := EdtComplemento.Text;
DM.QryConFuncionarios.ParamByName('bairro').Value := EdtBairro.Text;
DM.QryConFuncionarios.ParamByName('cidade').Value := EdtCidade.Text;
DM.QryConFuncionarios.ParamByName('uf').Value := CbxUF.Text;
DM.QryConFuncionarios.ParamByName('cep').Value := EdtCep.Text;
DM.QryConFuncionarios.ParamByName('telefone').Value := EdtTelefone.Text;
DM.QryConFuncionarios.ParamByName('celular').Value := EdtCelular.Text;
DM.QryConFuncionarios.ParamByName('contato').Value := EdtContato.Text;
DM.QryConFuncionarios.ParamByName('email').Value := EdtEmail.Text;

DM.QryConFuncionarios.ParamByName('cargo').Value := CbxCargo.Text;
DM.QryConFuncionarios.ParamByName('usuario').Value := EdtUsuario.Text;
DM.QryConFuncionarios.ParamByName('senha').Value := EdtSenha.Text;
DM.QryConFuncionarios.ParamByName('id').Value := EdtCodigo.Text;
DM.QryConFuncionarios.ExecSQL;

MessageDlg('Editado com Sucesso', mtInformation, mbOKCancel, 0);
buscarTudo;
DesabilitarCampos();

btnSalvar.Enabled := False;
btnNovo.Enabled := True;
BtnEditar.Enabled := False;
BtnExcluir.Enabled := False;
BtnCancelar.Enabled := False;
DgDetalhes.Enabled := True;
end
else
begin
MessageDlg('Preencha os Campos', mtInformation, mbOKCancel, 0);
edtNome.SetFocus;
end;
end;

Quando insiro um novo registro e preencho todos os campos, inclusive o campo "Data Nascimento", os dados são
salvos corretamente, porem se eu fizer qualquer alteração em qualquer campo do formulário, a "Data Nascimento"
não estar sendo gravada no banco de dados, ficando desta forma: "00/__/__". Ela é mostrada em um "DBGrid" no formulário com a data: "31/12/1899". E no formulário no "EditDataNascimento" fica: "00/__/__". no banco de dados no "phpMyAdmin" fica gravado: "0000/00/00"
Não sei onde estou errando, gostaria muito da ajuda de vocês, só falta resolver este problema para que meu formulário funcione 100% no cadastro.
Agradeço toda atenção deste forum.



Bom, vamos por partes...

Primeiro: Se o campo for do tipo DATE então converta DM.QryConFuncionarios.ParamByName('data_nascimento').Value := EdtDataNascimento.Text;
Converte assim: DM.QryConFuncionarios.ParamByName('data_nascimento').Value := StrToDate(EdtDataNascimento.Text);

Segundo:
Peencha a mascara do EditMask assim:
99/99/9999;0;
Com espaço depois do ZERO se quiser tirar esses traços embaixo.
E utilize o 9 para não chegar se a data é válida ao sair do EditMask e ai você faz a checagem antes de gravar.

Try
StrToDate(EditMask1.Text);
Except
ShowMessage('Informe uma data válida');
EditMask1.setfocus;
Exit;
End;

Espero ter ajudado de alguma forma.

Abraço
Responder