Fórum Alguem Poderia me ajudar com esse erro #464334

17/12/2013

0

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;
Luan Romeu

Luan Romeu

Responder

Posts

17/12/2013

Ricardo

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;
Responder

Gostei + 0

18/12/2013

Marcos Saffran

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)');
Responder

Gostei + 0

18/12/2013

Felippe Tadeu

Bom dia.
Se vc copiou exatamente como vc digitou, é bem provável que seja esse + antes de "Values"
Responder

Gostei + 0

18/12/2013

David Sylvestre

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;
Responder

Gostei + 0

18/12/2013

Luan Romeu

Era exatamente o sinal "+" Retirei ele do codigoo e funcionou
perfeitamente , Agradeço a todos pela atençao . Post Resolvido!
Responder

Gostei + 0

18/12/2013

Luan Romeu

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;
Responder

Gostei + 0

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

Aceitar