O que está errado nesta linha?
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);
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
Curtidas 0
Respostas
Marcos Oliveira
13/09/2013
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
Att,
Marcos
GOSTEI 0
Deivison Melo
13/09/2013
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)
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)
GOSTEI 0
Hilton Sá
13/09/2013
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?
GOSTEI 0
Fabricio Luciano
13/09/2013
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.
GOSTEI 0
Fabricio Luciano
13/09/2013
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.
GOSTEI 0
Marcos Oliveira
13/09/2013
E qual é o erro que o Delphi apresenta?
GOSTEI 0
Fabricio Luciano
13/09/2013
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.
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.
GOSTEI 0
Fabricio Luciano
13/09/2013
Desculpe as mensagens repetidas...deu erro aqui na hora de postar.
GOSTEI 0
Marcos Oliveira
13/09/2013
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.
GOSTEI 0
Hilton Sá
13/09/2013
Fabricio, verifique se existe alguma aspas simples no conteúdo de algum edit...
GOSTEI 0
Marcio
13/09/2013
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!!!
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!!!
GOSTEI 0
Joel Rodrigues
13/09/2013
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?
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?
GOSTEI 0
Rodrigo Cordeiro
13/09/2013
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
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
GOSTEI 0
Fabricio Luciano
13/09/2013
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;
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;
GOSTEI 0
Joel Rodrigues
13/09/2013
Basta abrir e fechar a query, sem o refresh.
GOSTEI 0
Fabricio Luciano
13/09/2013
Obrigado Joel....funcionou. Aliás, obrigado a todos pelas sugestões.
GOSTEI 0
Joel Rodrigues
13/09/2013
Que bom que conseguiu.
Estou então concluindo o tópico. Abraço a todos.
Estou então concluindo o tópico. Abraço a todos.
GOSTEI 0