Fórum O que está errado nesta linha? #455191

13/09/2013

0

Olá pessoal...o quê está errado nesta linha:

sql.Add('UPDATE clientes SET Cod_Cliente=:A,Nome_Cliente=:B,CPF_CNPJ_Cliente=:C,Data_Cadastro_Cliente=:D,Logradouro_Cliente=:E,Num_Cliente=:F WHERE Cod_Cliente=1);
Fabricio Luciano

Fabricio Luciano

Responder

Posts

13/09/2013

Marcos Oliveira

Fabrício, aparentemente não há nada de errado, com exceção que você abriu a sintaxe com apóstrofo e não fechou, mas creio que foi só um problema ao passar aqui pro fórum. Seria possível você nos passar o erro? Fica mais fácil encontrar o problema.

Att,

Marcos
Responder

Gostei + 0

13/09/2013

Deivison Melo

sql.Add('UPDATE clientes SET Cod_Cliente=:A,Nome_Cliente=:B,CPF_CNPJ_Cliente=:C,Data_Cadastro_Cliente=:D,Logradouro_Cliente=:E,Num_Cliente=:F WHERE Cod_Cliente=1');

ao invés de

sql.Add('UPDATE clientes SET Cod_Cliente=:A,Nome_Cliente=:B,CPF_CNPJ_Cliente=:C,Data_Cadastro_Cliente=:D,Logradouro_Cliente=:E,Num_Cliente=:F WHERE Cod_Cliente=1);

Estava faltando uma aspa " ' " (simples)

Responder

Gostei + 0

13/09/2013

Hilton Sá

Mais errado que fechar a aspas simples (erro de sintaxe), acho que é modificar a chave da tabela, através do parâmetro "A", sempre que ela for igual a 1. É isso mesmo que voce quer, ou é só uma pegadinha?
Responder

Gostei + 0

13/09/2013

Fabricio Luciano

Olá amigos....a aspas simples eu copiei e colei errado. ela tem no meu código. não meu amigo...não é pegadinha, o meu delphi está marcando erro na primeira aspas simples e não sei pq. quanto a igualdade do Where coloquei 1 só para não esticar mais ainda a linha pra postagem desta dúvida.
Responder

Gostei + 0

13/09/2013

Fabricio Luciano

Olá amigos....a aspas simples eu copiei e colei errado. ela tem no meu código. não meu amigo...não é pegadinha, o meu delphi está marcando erro na primeira aspas simples e não sei pq. quanto a igualdade do Where coloquei 1 só para não esticar mais ainda a linha pra postagem desta dúvida.
Responder

Gostei + 0

13/09/2013

Marcos Oliveira

E qual é o erro que o Delphi apresenta?
Responder

Gostei + 0

13/09/2013

Fabricio Luciano

Olá amigos....a aspas simples eu copiei e colei errado. ela tem no meu código. não meu amigo...não é pegadinha, o meu delphi está marcando erro na primeira aspas simples e não sei pq. quanto a igualdade do Where coloquei 1 só para não esticar mais ainda a linha pra postagem desta dúvida.

esse é o meu código para update:

with Data_Module.Query_Cadastro_Clientes do
begin
close;
sql.Clear;
sql.Add('UPDATE clientes SET Cod_Cliente=:A,Nome_Cliente=:B,CPF_CNPJ_Cliente=:C,Data_Cadastro_Cliente=:D,Logradouro_Cliente=:E,Num_Cliente=:F,Complemento_Cliente=:G,Bairro_Cliente=:H,Cidade_Cliente=:I,UF_Cliente=:J,CEP_Cliente=:L,Telefone_Cliente=:M');
sql.Add(',Celular_Cliente=:N,Email_Cliente=:O,Tipo_Cliente=:P WHERE Cod_Cliente=:A');
Parameters.ParamByName('A').Value := StrtoInt(Edit_Cod_Cliente.Text);
Parameters.ParamByName('B').Value := Edit_Nome_Cliente.Text;
Parameters.ParamByName('C').Value := Edit_CPF_CNPJ_Cliente.Text;
Parameters.ParamByName('D').Value := Edit_Data_Cadastro_Cliente.Text;
Parameters.ParamByName('E').Value := Edit_Logradouro_Cliente.Text;
Parameters.ParamByName('F').Value := Edit_Num_Cliente.Text;
Parameters.ParamByName('G').Value := Edit_Complemento_Cliente.Text;
Parameters.ParamByName('H').Value := Edit_Bairro_Cliente.Text;
Parameters.ParamByName('I').Value := Edit_Cidade_Cliente.Text;
Parameters.ParamByName('J').Value := Combo_UF_Cliente.Text;
Parameters.ParamByName('L').Value := Edit_CEP_Cliente.Text;
Parameters.ParamByName('M').Value := Edit_Telefone_Cliente.Text;
Parameters.ParamByName('N').Value := Edit_Celular_Cliente.Text;
Parameters.ParamByName('O').Value := Edit_Email_Cliente.Text;
Parameters.ParamByName('P').Value := Combo_Tipo_Cliente.Text;
ExecSQL;

A mensagem do delphi é: Objeto Parameter definido incorretamente. As informações são inconsistentes ou incompletas.
Responder

Gostei + 0

13/09/2013

Fabricio Luciano

Desculpe as mensagens repetidas...deu erro aqui na hora de postar.
Responder

Gostei + 0

13/09/2013

Marcos Oliveira

Todos os campos estão sendo preenchidos? Pelo que entendi da mensagem, algum parâmetro pode estar vazio, ou com conteúdo divergente da estrutura do seu banco de dados. Por exemplo, você pode estar enviando um parâmetro String para um campo Integer.
Responder

Gostei + 0

13/09/2013

Hilton Sá

Fabricio, verifique se existe alguma aspas simples no conteúdo de algum edit...
Responder

Gostei + 0

13/09/2013

Marcio

amigo,

se você está usando Query da aba ADO use Params.ParamByName, ou seja, use a propriedade Params. antes do ParamByName...

e outra nunca use o ParamByName.('campo').Value para atribuição... use AsInteger, AsString, etc...

use o ParamByName('campo').Value para pegar valor do parâmetro...


falow!!!
Responder

Gostei + 0

13/09/2013

Joel Rodrigues

Duas coisas:
1) Você está usando o parâmetro A duas vezes. Experimente mudar um deles para que não use o mesmo parâmetro mais de uma vez.
2) Qual é a lógica de atualizar um campo, passando para ele seu próprio valor?
Responder

Gostei + 0

14/09/2013

Rodrigo Cordeiro

Exatamente como o Joel disse... o problema é definir duas vezes o mesmo parâmetro... "A"

Acho que a maioria dos componentes de acesso da dados não suportam isso, o que penso ser um erro! Muitas vezes criamos instruções SQL com sub-query's que requerem o uso do mesmo valor de parâmetro mais de uma vez... Ai você é obrigado a fazer A1, A2 e ao atribuir com ParamByName colocar o mesmo valor para ambos...

Obs: Com Zeos isso não ocorre. Com ADO sim...

[]'s

Rodrigo - qmd
qmd@usercontrol.com.br
Responder

Gostei + 0

14/09/2013

Fabricio Luciano

Meus amigos.....resolvido. Tinha 2 colunas com nomes errados e por isso o parâmetro dava vazo para inserir. Além disso, tinha mesmo que definir o parâmetro com nomes diferentes para a coluna Cod_Cliente. Muito obrigado pois não sabia deste detalhe. Agora, como faço para exibir o resultado que acabei de atualizar??? tentei usar um refresh na minha query mas deu o seguinte erro: Informações insuficientes sobre a coluna chave para a atualização. Uso um adoquery para exibir os dados e navegar pelo banco e um outro para as ações de cadastro como foi o caso do update. O que devo fazer???? devo setar algo?? No meu código está assim, logo após a instrução de update:


Application.MessageBox('Registro Alterado com sucesso!!!', 'Aviso do Sistema', MB_OK);

// Carregando as informações
data_module.Query_Clientes.Open;
data_module.Query_Clientes.Refresh;
Responder

Gostei + 0

14/09/2013

Joel Rodrigues

Basta abrir e fechar a query, sem o refresh.
Responder

Gostei + 0

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

Aceitar