Alguem Poderia me ajudar com esse erro
Pessoal Sou iniciante em delphi entaoo me desculpem qualquer erro , mas vamos la .
estou criando um formulario de cadastro de clientes com base de dados do acess , eu criei a interface fiz a conexão com o banco de dados tudo certinho
criei uma procedure para inserir dados via sql , eu chamo essa procedure no botao inserir . o programa ta rodando sem acusar nada , mas quando eu coloco os dados
nos campos e clico em inserir ele retorna um erro de sintaxe INTO ,
procedure Tformcadcli.inserircliente ( nome:string; razao:string; fantasia:string; cidade:string;
estado:string; cpf:integer; telefone:integer; endeco:string; sobrenome:string;
idade:integer; estadocivil:string);
begin
with dm.query do
begin
close;
dm.query.SQL.Clear;
sql.Add('Insert INTO Cliente (Nome,'+
'RazaoSocial,'+
'NomeFantasia,'+
'Cidade,'+
'Estado,'+
'CPF/CNPJ,'+
'Telefone,'+
'Endereco,'+
'Sobrenome,'+
'Idade,'+
'estadocivil)+VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil');
Parameters.ParamByName('Nome').Value:=txtnome.Text;
Parameters.ParamByName('RazaoSocial').Value:=txtrazao.Text;
Parameters.ParamByName('NomeFantasia').Value:=txtfantasia.Text;
Parameters.ParamByName('Cidade').Value:=txtcidade.Text;
Parameters.ParamByName('Estado').Value:=txtestado.Text;
Parameters.ParamByName('CPF/CNPJ').Value:=txtcpf.Text;
Parameters.ParamByName('Telefone').Value:=txttelefone.Text;
Parameters.ParamByName('Endereco').Value:=txtend.Text;
Parameters.ParamByName('Sobrenome').Value:=txtsobre.Text;
Parameters.ParamByName('Idade').Value:=txtidade.Text;
Parameters.ParamByName('estadocivil').Value:=cm.Text;
execsql ();
end;
end;
estou criando um formulario de cadastro de clientes com base de dados do acess , eu criei a interface fiz a conexão com o banco de dados tudo certinho
criei uma procedure para inserir dados via sql , eu chamo essa procedure no botao inserir . o programa ta rodando sem acusar nada , mas quando eu coloco os dados
nos campos e clico em inserir ele retorna um erro de sintaxe INTO ,
procedure Tformcadcli.inserircliente ( nome:string; razao:string; fantasia:string; cidade:string;
estado:string; cpf:integer; telefone:integer; endeco:string; sobrenome:string;
idade:integer; estadocivil:string);
begin
with dm.query do
begin
close;
dm.query.SQL.Clear;
sql.Add('Insert INTO Cliente (Nome,'+
'RazaoSocial,'+
'NomeFantasia,'+
'Cidade,'+
'Estado,'+
'CPF/CNPJ,'+
'Telefone,'+
'Endereco,'+
'Sobrenome,'+
'Idade,'+
'estadocivil)+VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil');
Parameters.ParamByName('Nome').Value:=txtnome.Text;
Parameters.ParamByName('RazaoSocial').Value:=txtrazao.Text;
Parameters.ParamByName('NomeFantasia').Value:=txtfantasia.Text;
Parameters.ParamByName('Cidade').Value:=txtcidade.Text;
Parameters.ParamByName('Estado').Value:=txtestado.Text;
Parameters.ParamByName('CPF/CNPJ').Value:=txtcpf.Text;
Parameters.ParamByName('Telefone').Value:=txttelefone.Text;
Parameters.ParamByName('Endereco').Value:=txtend.Text;
Parameters.ParamByName('Sobrenome').Value:=txtsobre.Text;
Parameters.ParamByName('Idade').Value:=txtidade.Text;
Parameters.ParamByName('estadocivil').Value:=cm.Text;
execsql ();
end;
end;
Luan Romeu
Curtidas 0
Respostas
Ricardo
17/12/2013
Com o Access existem várias "incompatibilidades" em usar funções em SQL. O mais prático e funcional seria inserir no seu formulário vários DBedit ligados aos campos da tabela e no botão de inserir vc coloca assim:
suatabela.insert;
suatabela.post;
suatabela.insert;
suatabela.post;
GOSTEI 0
Marcos Saffran
17/12/2013
Olá Luan,
tente alterar a linha
'estadocivil)+VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil');
por
'estadocivil) '+ 'VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil)');
ou por
'estadocivil) VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil)');
tente alterar a linha
'estadocivil)+VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil');
por
'estadocivil) '+ 'VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil)');
ou por
'estadocivil) VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil)');
GOSTEI 0
Felippe Tadeu
17/12/2013
Bom dia.
Se vc copiou exatamente como vc digitou, é bem provável que seja esse + antes de "Values"
Se vc copiou exatamente como vc digitou, é bem provável que seja esse + antes de "Values"
GOSTEI 0
David Sylvestre
17/12/2013
procedure Tformcadcli.inserircliente ( nome:string; razao:string; fantasia:string; cidade:string;
estado:string; cpf:integer; telefone:integer; endeco:string; sobrenome:string;
idade:integer; estadocivil:string);
begin
with dm.query do
begin
close;
dm.query.SQL.Clear;
sql.Add('Insert INTO Cliente (Nome,'+
'RazaoSocial,'+
'NomeFantasia,'+
'Cidade,'+
'Estado,'+
'CPF/CNPJ,'+
'Telefone,'+
'Endereco,'+
'Sobrenome,'+
'Idade,'+
'estadocivil)'+// concatenação estava errada
'VALUES (:Nome, :RazaoSocial,:NomeFantasia,:Cidade,:Estado,:CPF/CNPJ,:Telefone,:Endereco,:Sobrenome,:Idade,:estadocivil)');// faltou fechar parenteses
Parameters.ParamByName('Nome').Value:=txtnome.Text;
Parameters.ParamByName('RazaoSocial').Value:=txtrazao.Text;
Parameters.ParamByName('NomeFantasia').Value:=txtfantasia.Text;
Parameters.ParamByName('Cidade').Value:=txtcidade.Text;
Parameters.ParamByName('Estado').Value:=txtestado.Text;
Parameters.ParamByName('CPF/CNPJ').Value:=txtcpf.Text;
Parameters.ParamByName('Telefone').Value:=txttelefone.Text;
Parameters.ParamByName('Endereco').Value:=txtend.Text;
Parameters.ParamByName('Sobrenome').Value:=txtsobre.Text;
Parameters.ParamByName('Idade').Value:=txtidade.Text;
Parameters.ParamByName('estadocivil').Value:=cm.Text;
execsql ();
end;
end;
GOSTEI 0
Luan Romeu
17/12/2013
Era exatamente o sinal "+" Retirei ele do codigoo e funcionou
perfeitamente , Agradeço a todos pela atençao . Post Resolvido!
perfeitamente , Agradeço a todos pela atençao . Post Resolvido!
GOSTEI 0
Luan Romeu
17/12/2013
Eu ja ultilizei esse metodo em outros projetos e justamente por isso queria tentar com sql no atual para adquirir conhecimento na area de banco de dados .
Com o Access existem várias "incompatibilidades" em usar funções em SQL. O mais prático e funcional seria inserir no seu formulário vários DBedit ligados aos campos da tabela e no botão de inserir vc coloca assim:
suatabela.insert;
suatabela.post;
suatabela.insert;
suatabela.post;
GOSTEI 0