Fazer Update Set Delphi XE8
31/10/2018
0
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
Post mais votado
31/10/2018
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
Mais Posts
31/10/2018
Jerson Boer
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.
31/10/2018
Bruno Henrique
Ainda estou sem solução.
Se alguém conseguir me auxiliar.
Grato
31/10/2018
Bruno Henrique
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
31/10/2018
Jerson Boer
31/10/2018
Bruno Henrique
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;
31/10/2018
Jerson Boer
01/11/2018
Bruno Henrique
Segue abaixo o link da imagem da tabela CADCLIENTES
https://uploaddeimagens.com.br/imagens/tabela-jpg-f07fb4ee-9992-4779-875d-38cfb569e4a1
01/11/2018
Bruno Henrique
Infelizmente ainda não achei uma solução!!!
Alguém teria alguma sugestão???
Grato
Clique aqui para fazer login e interagir na Comunidade :)