Fórum Fazer Update Set Delphi XE8 #598302
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
Curtir tópico
+ 0Post 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
Gostei + 1
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.
Gostei + 0
31/10/2018
Bruno Henrique
Ainda estou sem solução.
Se alguém conseguir me auxiliar.
Grato
Gostei + 0
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
Gostei + 0
31/10/2018
Jerson Boer
Gostei + 0
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;Gostei + 0
31/10/2018
Jerson Boer
Gostei + 0
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
Gostei + 0
01/11/2018
Bruno Henrique
Infelizmente ainda não achei uma solução!!!
Alguém teria alguma sugestão???
Grato
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)