Fazer Update Set Delphi XE8

31/10/2018

0

Boa noite!!!

Estou tentando fazer update e não está dando certo, está dando a mensagem que este campo não existe
sdsCadClientes.ParamByName('CLI_CELULAR').Value := mskCelular.Text; mas ele existe e não dá certo de eu fazer o update, oque será que esta errado

Obs.: No delphi 7 funciona tranquilamente este código, mas estou migrando para o delphi xe8 e nele não funciona


if status = 'E' then

   try
   Transacao := conexaoBdCadClientes.BeginTransaction;
   sdsCadClientes.Close;
   sdsCadClientes.CommandType := ctQuery;
            sdsCadClientes.CommandText:='UPDATE CADCLIENTES SET ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_CODIGO = :CLI_CODIGO, CLI_DATACADASTRO = :CLI_DATACADASTRO, CLI_DATAALTERACAO = :CLI_DATAALTERACAO, CLI_SITUACAO = :CLI_SITUACAO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_NOME = :CLI_NOME, CLI_ENDERECO = :CLI_ENDERECO, CLI_NUMERO = :CLI_NUMERO, CLI_BAIRRO = :CLI_BAIRRO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_COMPLEMENTO = :CLI_COMPLEMENTO, CLI_CODIGOCIDADE = :CLI_CODIGOCIDADE, CLI_NOMECIDADE = :CLI_NOMECIDADE, CLI_ESTADO = :CLI_ESTADO, CLI_CEP = :CLI_CEP, CLI_RG = :CLI_RG, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_CODIGOCPFCNPJ = :CLI_CODIGOCPFCNPJ, CLI_CPFCNPJ = :CLI_CPFCNPJ, CLI_IE = :CLI_IE, CLI_DATANASCIMENTO = :CLI_DATANASCIMENTO, CLI_EMAIL = :CLI_EMAIL, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_TELEFONE1 = :CLI_TELEFONE1, CLI_TELEFONE2 = :CLI_TELEFONE2, CLI_CELULAR = :CLI_CELULAR ';
             sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'WHERE CLI_CODIGO = :CLI_CODIGO';
             sdsCadClientes.ParamByName('CLI_CODIGO').Value := edtCodigo.Text;
             sdsCadClientes.ParamByName('CLI_DATACADASTRO').Value := mskDataCadastro.Text;
             sdsCadClientes.ParamByName('CLI_DATAALTERACAO').Value := mskDataAlteracao.Text;
             sdsCadClientes.ParamByName('CLI_SITUACAO').AsString := edtSituacao.Text;
             sdsCadClientes.ParamByName('CLI_NOME').AsString := edtNome.Text;
             sdsCadClientes.ParamByName('CLI_ENDERECO').AsString := edtEndereco.Text;
             sdsCadClientes.ParamByName('CLI_NUMERO').AsString := edtNumero.Text;
             sdsCadClientes.ParamByName('CLI_BAIRRO').AsString := edtBairro.Text;
             sdsCadClientes.ParamByName('CLI_COMPLEMENTO').AsString := edtComplemento.Text;
             sdsCadClientes.ParamByName('CLI_CODIGOCIDADE').Value := edtCodigoCidade.Text;
             sdsCadClientes.ParamByName('CLI_NOMECIDADE').AsString := edtNomeCidade.Text;
             sdsCadClientes.ParamByName('CLI_ESTADO').AsString := edtEstado.Text;
             sdsCadClientes.ParamByName('CLI_CEP').AsString := mskCep.Text;
             sdsCadClientes.ParamByName('CLI_RG').AsString := edtRg.Text;
             sdsCadClientes.ParamByName('CLI_CODIGOCPFCNPJ').Value := edtCodigoCfpCnpj.Text;
             sdsCadClientes.ParamByName('CLI_CPFCNPJ').AsString := mskCpfCnpj.Text;
             sdsCadClientes.ParamByName('CLI_IE').AsString := edtIe.Text;
             sdsCadClientes.ParamByName('CLI_DATANASCIMENTO').Value := mskDataNascimento.Text;
             sdsCadClientes.ParamByName('CLI_EMAIL').AsString := edtEmail.Text;
             sdsCadClientes.ParamByName('CLI_TELEFONE1').AsString := mskTelefone1.Text;
             sdsCadClientes.ParamByName('CLI_TELEFONE2').AsString := mskTelefone2.Text;
             sdsCadClientes.ParamByName('CLI_CELULAR').Value := mskCelular.Text;
   conexaoBdCadClientes.CommitFreeAndNil(Transacao);
   sdsCadClientes.ExecSQL;
      cdsCadClientes.Close;
      cdsCadClientes.Open;
          ShowMessage('Os Dados foram gravados com sucesso!');
   except
   on E : Exception do
   BEGIN
        ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + E.Message);
   conexaoBdCadClientes.RollbackFreeAndNil(Transacao);
   END;
end;
                     //Desabilita os EDITS, MASCARAS, MEMOS E LIMPA todos os EDITS após a gravacao
                  DesabilitarEdit;
                  DesabilitarMascara;
                  DesabilitarMemo;
                  LimpaCampos;

                  //Desabilita os botoes do form
                  btnPesquisar.Enabled := true;
                  btnIncluir.Enabled := true;
                  btnSair.Enabled := true;
                  btnAlterar.Enabled:=false;
                  btnGravar.Enabled:=false;
                  btnCancelar.Enabled:=false;
Bruno Henrique

Bruno Henrique

Responder

Post mais votado

31/10/2018

Se a solicitação era pra mostrar onde repete, segue:

No começo do seu código:

   sdsCadClientes.CommandType := ctQuery;
            sdsCadClientes.CommandText:='UPDATE CADCLIENTES SET ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_CODIGO = :CLI_CODIGO,.........


E depois lá no final, quando começa a passar os parâmetros:

sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'WHERE CLI_CODIGO = :CLI_CODIGO';
             sdsCadClientes.ParamByName('CLI_CODIGO').Value := edtCodigo.Text;.......


No entanto, você só tem 1 passagem de parâmetro:

sdsCadClientes.ParamByName('CLI_CODIGO').Value := edtCodigo.Text;


Com isso, o sistema entende a substituição de somente 1, ficando o outro em aberto errado.

Jerson Boer

Jerson Boer
Responder

Mais Posts

31/10/2018

Jerson Boer

Olá Bruno, observei o seguinte:

Você tem 2 vezes o parâmetro :CLI_CODIGO na sua query, mas tem somente 1 passagem de parâmetros e acredito que os nomes deveriam ser diferentes entre si. Considerando que o :CLI_CODIGO não vai mudar, uma vez que está fazendo o update em um cliente através dele, acredito que o "CLI_CODIGO = :CLI_CODIGO" seria desnecessário.. Avalie a retirada dessa parte ou a diferenciação dos nomes de parâmetros.
Responder

31/10/2018

Bruno Henrique

Bom dia!!!

Ainda estou sem solução.
Se alguém conseguir me auxiliar.

Grato
Responder

31/10/2018

Bruno Henrique

Jerson, bom dia!!!

Agora que vi sua explicação, então, revisei o código e achei aonde repete 2 vezes o parametro CLI_CODIGO.Teria como você marcar para mim fazendo favor.

Grato

Abraços
Responder

31/10/2018

Jerson Boer

Não entendi o que seria o "marcar pra você". Deu certo? Era isso?
Responder

31/10/2018

Bruno Henrique

Jerson, boa tarde!!!

Não deu certo, ainda continua dando a mesma mensagem que o parametro CLI_CELULAR not found.

Tem alguma outra sugestão???


Removi o CLI_CODIGO do inicio.Veja abaixo
if status = 'E' then

   try
   Transacao := conexaoBdCadClientes.BeginTransaction;
   sdsCadClientes.Close;
   sdsCadClientes.CommandType := ctQuery;
            sdsCadClientes.CommandText:='UPDATE CADCLIENTES SET ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_DATACADASTRO = :CLI_DATACADASTRO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_DATAALTERACAO = :CLI_DATAALTERACAO, CLI_SITUACAO = :CLI_SITUACAO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_NOME = :CLI_NOME, CLI_ENDERECO = :CLI_ENDERECO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_NUMERO = :CLI_NUMERO, CLI_BAIRRO = :CLI_BAIRRO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_COMPLEMENTO = :CLI_COMPLEMENTO, CLI_CODIGOCIDADE = :CLI_CODIGOCIDADE, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_NOMECIDADE = :CLI_NOMECIDADE, CLI_ESTADO = :CLI_ESTADO, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_CEP = :CLI_CEP, CLI_RG = :CLI_RG, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_CODIGOCPFCNPJ = :CLI_CODIGOCPFCNPJ, CLI_CPFCNPJ = :CLI_CPFCNPJ, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_IE = :CLI_IE, CLI_DATANASCIMENTO = :CLI_DATANASCIMENTO, CLI_EMAIL = :CLI_EMAIL, ';
            sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'CLI_TELEFONE1 = :CLI_TELEFONE1, CLI_TELEFONE2 = :CLI_TELEFONE2, CLI_CELULAR = :CLI_CELULAR ';
             sdsCadClientes.CommandText:=sdsCadClientes.CommandText+'WHERE (CLI_CODIGO = :CLI_CODIGO)';
             sdsCadClientes.ParamByName('CLI_CODIGO').Value := edtCodigo.Text;
             sdsCadClientes.ParamByName('CLI_DATACADASTRO').Value := mskDataCadastro.Text;
             sdsCadClientes.ParamByName('CLI_DATAALTERACAO').Value := mskDataAlteracao.Text;
             sdsCadClientes.ParamByName('CLI_SITUACAO').AsString := edtSituacao.Text;
             sdsCadClientes.ParamByName('CLI_NOME').AsString := edtNome.Text;
             sdsCadClientes.ParamByName('CLI_ENDERECO').AsString := edtEndereco.Text;
             sdsCadClientes.ParamByName('CLI_NUMERO').AsString := edtNumero.Text;
             sdsCadClientes.ParamByName('CLI_BAIRRO').AsString := edtBairro.Text;
             sdsCadClientes.ParamByName('CLI_COMPLEMENTO').AsString := edtComplemento.Text;
             sdsCadClientes.ParamByName('CLI_CODIGOCIDADE').Value := edtCodigoCidade.Text;
             sdsCadClientes.ParamByName('CLI_NOMECIDADE').AsString := edtNomeCidade.Text;
             sdsCadClientes.ParamByName('CLI_ESTADO').AsString := edtEstado.Text;
             sdsCadClientes.ParamByName('CLI_CEP').AsString := mskCep.Text;
             sdsCadClientes.ParamByName('CLI_RG').AsString := edtRg.Text;
             sdsCadClientes.ParamByName('CLI_CODIGOCPFCNPJ').Value := edtCodigoCfpCnpj.Text;
             sdsCadClientes.ParamByName('CLI_CPFCNPJ').AsString := mskCpfCnpj.Text;
             sdsCadClientes.ParamByName('CLI_IE').AsString := edtIe.Text;
             sdsCadClientes.ParamByName('CLI_DATANASCIMENTO').Value := mskDataNascimento.Text;
             sdsCadClientes.ParamByName('CLI_EMAIL').AsString := edtEmail.Text;
             sdsCadClientes.ParamByName('CLI_TELEFONE1').AsString := mskTelefone1.Text;
             sdsCadClientes.ParamByName('CLI_TELEFONE2').AsString := mskTelefone2.Text;
             sdsCadClientes.ParamByName('CLI_CELULAR').Value := mskCelular.Text;
   conexaoBdCadClientes.CommitFreeAndNil(Transacao);
   sdsCadClientes.ExecSQL;
      cdsCadClientes.Close;
      cdsCadClientes.Open;
          ShowMessage('Os Dados foram gravados com sucesso!');
   except
   on E : Exception do
   BEGIN
        ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + E.Message);
   conexaoBdCadClientes.RollbackFreeAndNil(Transacao);
   END;
end;
                     //Desabilita os EDITS, MASCARAS, MEMOS E LIMPA todos os EDITS após a gravacao
                  DesabilitarEdit;
                  DesabilitarMascara;
                  DesabilitarMemo;
                  LimpaCampos;

                  //Desabilita os botoes do form
                  btnPesquisar.Enabled := true;
                  btnIncluir.Enabled := true;
                  btnSair.Enabled := true;
                  btnAlterar.Enabled:=false;
                  btnGravar.Enabled:=false;
                  btnCancelar.Enabled:=false;
Responder

31/10/2018

Jerson Boer

Bruno, você consegue postar uma imagem da estrutura/campos da sua tabela CADCLIENTES do banco de dados? Coloque-a em algum site e poste o link da imagem aqui.
Responder

01/11/2018

Bruno Henrique

Jerson, bom dia!!!

Segue abaixo o link da imagem da tabela CADCLIENTES

https://uploaddeimagens.com.br/imagens/tabela-jpg-f07fb4ee-9992-4779-875d-38cfb569e4a1
Responder

01/11/2018

Bruno Henrique

Boa noite!!!

Infelizmente ainda não achei uma solução!!!

Alguém teria alguma sugestão???

Grato
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar