Ryox 0 Denunciar post Postado Maio 7, 2015 Salve salve galera, to com um probleminha ao fazer um insert. estou usando o delphi xe6 com mysql 5.5 o sistema possui um DataModule principal onde fica o ZConnection,(componente Zeus para conectar ao DB). no form cadastro da empresa tem uma query, onde por ela estou tentando inserir os dados no banco. porem da erro. a função do botao gravar ficou assim: procedure Tfrm_empresa.BtnGravarClick(Sender: TObject); begin Qry_Gravar.Close; Qry_Gravar.SQL.Clear; Qry_Gravar.SQL.Add('INSERT INTO EMPRESA VALUES'); Qry_Gravar.SQL.Add('CODIGO = '+Chr(39)+CODIGO.text+Chr(39)+','); Qry_Gravar.SQL.Add('RAZAO = '+Chr(39)+RAZAO.text+Chr(39)+','); Qry_Gravar.SQL.Add('FANTASIA, = '+Chr(39)+Fantasia.text+Chr(39)+','); Qry_Gravar.SQL.Add('ENDERECO, = '+Chr(39)+Endereco.text+Chr(39)+','); Qry_Gravar.SQL.Add('NUMERO, = '+Chr(39)+Numero.text+Chr(39)+','); Qry_Gravar.SQL.Add('COMPLEMENTO, = '+Chr(39)+Complemento.text+Chr(39)+','); Qry_Gravar.SQL.Add('BAIRRO, = '+Chr(39)+Bairro.text+Chr(39)+','); Qry_Gravar.SQL.Add('CEP, = '+Chr(39)+CEP.text+Chr(39)+','); Qry_Gravar.SQL.Add('CNPJ_CPF, = '+Chr(39)+CNPJ_CPF.text+Chr(39)+','); Qry_Gravar.SQL.Add('INSC_RG, = '+Chr(39)+INSC_RG.text+Chr(39)+','); Qry_Gravar.SQL.Add('INSC_MUNICIPAL, = '+Chr(39)+Insc_Municipal.text+Chr(39)+','); Qry_Gravar.SQL.Add('CIDADE, = '+Chr(39)+Cidade.text+Chr(39)+','); Qry_Gravar.SQL.Add('UF, = '+Chr(39)+UF.text+Chr(39)+','); Qry_Gravar.SQL.Add('TELEFONE, = '+Chr(39)+Telefone.text+Chr(39)+','); Qry_Gravar.SQL.Add('CELULAR, = '+Chr(39)+Celular.text+Chr(39)+','); Qry_Gravar.SQL.Add('EMAIL = '+Chr(39)+Email.text+Chr(39)+')'); Qry_Gravar.SQL.Add('SITUACAO, = '+Chr(39)+SitTributaria.Text+Chr(39)+','); Qry_Gravar.SQL.Add('RESPONSAVEL, = '+Chr(39)+Responsavel.Text+Chr(39)+','); Qry_Gravar.SQL.Add('SMTP, = '+Chr(39)+smtp_email.Text+Chr(39)+','); Qry_Gravar.SQL.Add('USUARIO, = '+Chr(39)+usuario_email.Text+Chr(39)+','); Qry_Gravar.SQL.Add('SENHA, = '+Chr(39)+senha_email.Text+Chr(39)+','); Qry_Gravar.SQL.Add('PORTA, = '+Chr(39)+porta_email.Text+Chr(39)+','); if autenticacao.Checked then Qry_Gravar.SQL.Add('AUTENTICACAO = 1,') else Qry_Gravar.SQL.Add('AUTENTICACAO = 0,'); if ssl_tls.Checked then Qry_Gravar.SQL.Add('SEGURA = 1,') else Qry_Gravar.SQL.Add('SEGURA = 0,'); Qry_Gravar.ExecSQL; end; Porem quando executo clico no botao gravar da erro. SQL error: you have an error in your sql syntax check the manual that corresponds to your mysql!! acredito que esteja faltando algo, porem nao sei oq pode ser. sera q alguem sabe oq estou errando no insert? desde ja agradeço. att Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Junho 15, 2015 De cara já vejo dois possíveis problemas aqui: um é a sintaxe que está errada, pois está faltando inserir no seu sql os parênteses após o values... outro, que você está montando o insert como se fosse um update... lembre-se que qualquer insert é feito seguindo a regra abaixo: insert into tabela (campo1, campo2, ..., campoN) values (valor1, valor2, ..., valorN) Se observar seu código, seu sql está gerando um insert do tipo abaixo: INSERT INTO EMPRESA VALUES CODIGO = '4', --Considerando-se aqui que o valor do campo CODIGO.text seja 4 'RAZAO = 'RAZAO', Logo, já vemos de cara que não irá funcionar... um outro possível problema que terá com o insert desta forma é: se algum campo da tabela não for do tipo caracter, dará erro de conversão. Dê uma revisada, há inúmeros exemplos de como montar inserts dinâmicos passando os valores como parâmetro. Qualquer coisa retorne! Compartilhar este post Link para o post Compartilhar em outros sites
mauroalba 0 Denunciar post Postado Junho 29, 2015 Encontrei alguns problemas:1. Para inserir dessa forma, use 'INSERT INTO EMPRESA SET ' <-- eu costumo deixar um espaço no final2. Só coloque Chr(39) quando o campo for caracter,3. Em alguns campos ficou uma vírgula antes do = (Fantasia, EDndereco, Numero, etc...)4. No último campo, não vai a vírgula no final Compartilhar este post Link para o post Compartilhar em outros sites
Renato Lima 0 Denunciar post Postado Setembro 10, 2015 Essa sintaxe de um UPDATE <CAMPO> = <VALOR> O insert para não ter problema faça como o Chrnos mencionou no post anterior: INSERT INTO <TABELA> ( <CAMPO1>, <CAMPO2>, ...) VALUES (<VALOR1>, <VALOR2>,...) E o seu código está encerrando com um SEGURA = 0/1, Att. Compartilhar este post Link para o post Compartilhar em outros sites