nsouza Postado Maio 7, 2009 Denunciar Share Postado Maio 7, 2009 Colegas sou iniciante e estou com problema no código abaixo recebo a seguinte mensagem ao clicar no botão incluir:Da a seguinte mensagem de erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',' ate line 2'. Minha conexão é com o DBExpress e estou usando o Mysql 5.0.77Por favor alguém poderia corrigir este código ou parte de código para mim.DM.Q_Funcionarios.close; DM.Q_Funcionarios.sql.clear; DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO, NUMERO, OMPLEMENTO, CIDADE, ESTADO, CEP, TELEFONE, CELULAR, EMAIL, RG, CPF, DTNASCIMENTO, DTADMISSAO, DTDEMISSAO, NOMECONTATO,TELCONTATO, LOGIN, SENHA, FOTO'); DM.Q_Funcionarios.SQL.Add('VALUES (:NOME, :ENDERECO, :NUMERO, :COMPLEMENTO, :CIDADE, :ESTADO, :CEP, :TELEFONE, :CELULAR, :EMAIL, :RG, :CPF, :DTNASCIMENTO, :DTADMISSAO, :DTDEMISSAO, :NOMECONTATO,:TELCONTATO, :LOGIN, :SENHA, :FOTO)'); DM.Q_Funcionarios.ParamByName('NOME').Text := edtNome.Text; DM.Q_Funcionarios.ParamByName('CODESPECIALIDADE').Text := edtcodespecialidade.Text;; DM.Q_Funcionarios.ParamByName('ENDERECO').Text := edtEndereco.Text; DM.Q_Funcionarios.ParamByName('NUMERO').Text := edtNumero.Text; DM.Q_Funcionarios.ParamByName('COMPLEMENTO').Text := edtComplemento.Text; DM.Q_Funcionarios.ParamByName('CIDADE').Text := edtCidade.Text; DM.Q_Funcionarios.ParamByName('ESTADO').Text := edtUF.Text; DM.Q_Funcionarios.ParamByName('CEP').Text := mkeCep.Text; DM.Q_Funcionarios.ParamByName('TELEFONE').Text := mkeTelefone.Text; DM.Q_Funcionarios.ParamByName('CELULAR').Text := mkeCelular.Text; DM.Q_Funcionarios.ParamByName('EMAIL').Text := edtEmail.Text; DM.Q_Funcionarios.ParamByName('RG').Text := edtIdentidade.Text; DM.Q_Funcionarios.ParamByName('CPF').Text := mkeCpf.Text; DM.Q_Funcionarios.ParamByName('DTNASCIMENTO').Text := mkeNascimento.Text; DM.Q_Funcionarios.ParamByName('DTADMISSAO').Text := mkeDemissao.Text; DM.Q_Funcionarios.ParamByName('DTDEMISSAO').Text := mkeDemissao.Text; DM.Q_Funcionarios.ParamByName('NOMECONTATO').Text := edtNomeCont.Text; DM.Q_Funcionarios.ParamByName('TELCONTATO').Text := mkeTelContato.Text; DM.Q_Funcionarios.ParamByName('LOGIN').Text := edtLogin.Text; DM.Q_Funcionarios.ParamByName('SENHA').Text := edtSenha.Text; DM.Q_Funcionarios.ParamByName('FOTO').Text := edtFoto.Text; DM.Q_Funcionarios.ExecSql(false); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 7, 2009 Denunciar Share Postado Maio 7, 2009 Da a seguinte mensagem de erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',' ate line 2'. Voce tem um erro na sintaxe em sua SQL; cheque o manual correspondente para sua versão MySQL Server ( Mysql 5.0.77 ) para o uso correto da sintaxe ou seja a sintaxe da SQL não pode ser assim, principalmente quando se está passando parametros'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',') abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Maio 7, 2009 Autor Denunciar Share Postado Maio 7, 2009 Da a seguinte mensagem de erro:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',' ate line 2'. Voce tem um erro na sintaxe em sua SQL; cheque o manual correspondente para sua versão MySQL Server ( Mysql 5.0.77 ) para o uso correto da sintaxe ou seja a sintaxe da SQL não pode ser assim, principalmente quando se está passando parametros'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',') abraçoCaro,minha dificuldade esta justamente em identificar onde esta o erro para neste syntaxevocê tem o manual de referencia desta versão onde pode me orientar onde eu consigo?Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 8, 2009 Denunciar Share Postado Maio 8, 2009 você tem o manual de referencia desta versão onde pode me orientar onde eu consigo?Veja neste endereçohttp://dev.mysql.com/doc/refman/5.0/en/abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Maio 9, 2009 Autor Denunciar Share Postado Maio 9, 2009 Caro Jhonas,tentei, retentei, tentei de novo, mudei o jeito, perdi horas tentando e não tive sucessofiz da forma que você com poucas colunas e mesmo assim continua dando e erro de syntaxe 1- forma que tentei DM.Q_Funcionarios.Active := False; DM.Q_Funcionarios.SQL.Clear; DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (ENDERECO, NUMERO) VALUES ('); DM.Q_Funcionarios.SQL.Add('"'+EdtENDERECO.Text+'","'); DM.Q_Funcionarios.SQL.Add(EdtNumero.Text+',)'); DM.Q_Funcionarios.ExecSQL; 2- forma que tentei DM.Q_Funcionarios.close; DM.Q_Funcionarios.sql.clear; DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (NOME, ENDERECO'); DM.Q_Funcionarios.SQL.Add('VALUES (:NOME, :ENDERECO)'); DM.Q_Funcionarios.ParamByName('NOME').AsString := edtNome.Text; DM.Q_Funcionarios.ParamByName('ENDERECO').AsString := edtEndereco.Text; DM.Q_Funcionarios.ExecSql(false);voce poderia dar uma exemplo de como devo fazer?Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 9, 2009 Denunciar Share Postado Maio 9, 2009 voce poderia dar uma exemplo de como devo fazer?DML – Data Manipulation Language Inserindo dados em uma tabela (INSERT) Atualizando dados em uma tabela (UPDATE) Removendo dados de uma tabela (DELETE) Exemplo usando meu Banco de dadosprocedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (9999, 9999)'); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (:COD1, :COD2)'); IBQuery1.ParamByName('COD1').AsInteger := 8888; IBQuery1.ParamByName('COD2').AsInteger := 8888; SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES ('+ Edit1.Text + ',' + Edit2.Text + ')'); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (:COD1, :COD2)'); IBQuery1.ParamByName('COD1').AsInteger := strtoint(Edit1.Text); IBQuery1.ParamByName('COD2').AsInteger := strtoint(Edit2.Text); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; Todas essas maneiras funcionam ... faça uma comparação com o seu códigoVeja outras informações:http://www.devmedia.com.br/articles/viewcomp.asp?comp=5085http://www.apostilando.com/download.php?co...categoria=MySQLhttp://imasters.uol.com.br/artigo/3707/mysql/mysql_5/http://www.cursoadv.com.br/mysql.aspxabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Maio 9, 2009 Autor Denunciar Share Postado Maio 9, 2009 (editado) voce poderia dar uma exemplo de como devo fazer?DML – Data Manipulation Language Inserindo dados em uma tabela (INSERT) Atualizando dados em uma tabela (UPDATE) Removendo dados de uma tabela (DELETE) Exemplo usando meu Banco de dadosprocedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (9999, 9999)'); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (:COD1, :COD2)'); IBQuery1.ParamByName('COD1').AsInteger := 8888; IBQuery1.ParamByName('COD2').AsInteger := 8888; SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES ('+ Edit1.Text + ',' + Edit2.Text + ')'); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active := False; IBQuery1.SQL.Clear; IBQuery1.SQL.Append('INSERT INTO OBRAS (COD_EMP, COD_OBRA) '); IBQuery1.SQL.Append('VALUES (:COD1, :COD2)'); IBQuery1.ParamByName('COD1').AsInteger := strtoint(Edit1.Text); IBQuery1.ParamByName('COD2').AsInteger := strtoint(Edit2.Text); SHOWMESSAGE(IBQuery1.SQL.Text); IBQuery1.ExecSQL; IBQuery1.Active := TRUE; end; Todas essas maneiras funcionam ... faça uma comparação com o seu códigoVeja outras informações:http://www.devmedia.com.br/articles/viewcomp.asp?comp=5085http://www.apostilando.com/download.php?co...categoria=MySQLhttp://imasters.uol.com.br/artigo/3707/mysql/mysql_5/http://www.cursoadv.com.br/mysql.aspxabraçoamigo, funcionou coloquei a seguinte syntaxe: DM.Q_Funcionarios.Active := False; DM.Q_Funcionarios.SQL.Clear; DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO)'); DM.Q_Funcionarios.SQL.Add('VALUES (:CODESPECIALIDADE, :nome, :endereco)'); DM.Q_Funcionarios.ParamByName('codespecialidade').AsInteger := StrToInt(edtcodespecialidade.Text); DM.Q_Funcionarios.ParamByName('nome').AsString := edtNome.Text; DM.Q_Funcionarios.ParamByName('endereco').AsString := edtEndereco.Text; DM.Q_Funcionarios.ExecSQL; DM.Q_Funcionarios.Active := TRUE;no entanto retornou o seguinte erro:'Q_Funcionarios: Cursor not retorned from Query"Outro detalhe é que apesar de dar este erro, quando dou um refresh no banco de dados os registros estão sendo gravado, porém duplicados.obrigado! Editado Maio 10, 2009 por nsouza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2009 Denunciar Share Postado Maio 11, 2009 amigo, funcionou coloquei a seguinte syntaxe:DM.Q_Funcionarios.Active := False;DM.Q_Funcionarios.SQL.Clear;DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO)');DM.Q_Funcionarios.SQL.Add('VALUES (:CODESPECIALIDADE, :nome, :endereco)');DM.Q_Funcionarios.ParamByName('codespecialidade').AsInteger := StrToInt(edtcodespecialidade.Text);DM.Q_Funcionarios.ParamByName('nome').AsString := edtNome.Text;DM.Q_Funcionarios.ParamByName('endereco').AsString := edtEndereco.Text;DM.Q_Funcionarios.ExecSQL;no entanto retornou o seguinte erro:'Q_Funcionarios: Cursor not retorned from Query"Outro detalhe é que apesar de dar este erro, quando dou um refresh no banco de dados os registros estão sendo gravado, porém duplicados.Retire este comandoDM.Q_Funcionarios.Active := TRUE; // ele esta provocando a duplicaçãoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Maio 11, 2009 Autor Denunciar Share Postado Maio 11, 2009 Caro Jhonas,quando clico no botão confirmar para salvar os dados, recebo a mensagemDataset not in edit or insert modeabaixo esta o código do botão confirmar, pesquisei algumas coisas mas não tive sucessoem resolver.Obrigado pela sua atenção, se puder ajudar de novoagradeço.Procedure TF_Funcinario.confirmarClick(Sender:TObject);begin if confira <> 3 then begin grava; F_Dados.Q_funcionario.Post;end; PanGrid.BringToFront; PanBotoes.Enabled := True; Limpa;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2009 Denunciar Share Postado Maio 11, 2009 quando clico no botão confirmar para salvar os dados, recebo a mensagemDataset not in edit or insert modeDataSet não está no modo Edit ou modo InsertProcedure TF_Funcinario.confirmarClick(Sender:TObject); begin if confira <> 3 then begin grava; // Se nesta procedure não estiver Editando ou Inserindo este erro acontece F_Dados.Q_funcionario.Post; end; // porque este END está aqui ? PanGrid.BringToFront; PanBotoes.Enabled := True; Limpa; end;Veja se encontra onde está este comandoF_Dados.Q_funcionario.Edit;ou F_Dados.Q_funcionario.Insert;OBS: Preste mais atenção no seu código .... voce está comentendo erros primáriosabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Maio 11, 2009 Autor Denunciar Share Postado Maio 11, 2009 (editado) quando clico no botão confirmar para salvar os dados, recebo a mensagemDataset not in edit or insert modeDataSet não está no modo Edit ou modo InsertProcedure TF_Funcinario.confirmarClick(Sender:TObject); begin if confira <> 3 then begin grava; // Se nesta procedure não estiver Editando ou Inserindo este erro acontece F_Dados.Q_funcionario.Post; end; // porque este END está aqui ? PanGrid.BringToFront; PanBotoes.Enabled := True; Limpa; end;Veja se encontra onde está este comandoF_Dados.Q_funcionario.Edit;ou F_Dados.Q_funcionario.Insert;OBS: Preste mais atenção no seu código .... voce está comentendo erros primáriosabraçoCaro Jhonas,obrigado pelo toque quanto a prestar atenção nas minhas syntaxes vou ficar mais atento. O erro esta porque eu coloquei .append e era .insert.No entanto quando fui corrigir a syntaxe abaixo:DM.Q_Funcionarios.Active := False;DM.Q_Funcionarios.SQL.Clear;DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO)');DM.Q_Funcionarios.SQL.Add('VALUES (:CODESPECIALIDADE, :nome, :endereco)');DM.Q_Funcionarios.ParamByName('codespecialidade').AsInteger := StrToInt(edtcodespecialidade.Text);DM.Q_Funcionarios.ParamByName('nome').AsString := edtNome.Text;DM.Q_Funcionarios.ParamByName('endereco').AsString := edtEndereco.Text;DM.Q_Funcionarios.ExecSQL;DM.Q_Funcionarios.Active := TRUE;esta linha de comando estava escrita desta forma://DM.Q_Funcionarios.Active := TRUE;como sabe ela não tem função desta forma, deletei-a e ainda sim continuou aparecendo a mensagem de erro:'Q_Funcionarios: Cursor not retorned from Query" Editado Maio 12, 2009 por nsouza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 12, 2009 Denunciar Share Postado Maio 12, 2009 'Q_Funcionarios: Cursor not retorned from Query" Cursor não retornado para QueryProcure não usar SQL.Add e sim SQL.AppendDM.Q_Funcionarios.Active := False; DM.Q_Funcionarios.SQL.Clear; DM.Q_Funcionarios.SQL.Append('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO)'); DM.Q_Funcionarios.SQL.Append('VALUES (:CODESPECIALIDADE, :nome, :endereco)'); DM.Q_Funcionarios.ParamByName('codespecialidade').AsInteger := StrToInt(edtcodespecialidade.Text); DM.Q_Funcionarios.ParamByName('nome').AsString := edtNome.Text; DM.Q_Funcionarios.ParamByName('endereco').AsString := edtEndereco.Text; DM.Q_Funcionarios.ExecSQL;Os exemplos que te passei funcionam e é para voce comparar com o seu código ... não tente adivinhar ...leia mais sobre o assunto, procure na net, teste, modifique, teste novamente ... até chegar ao resultado esperado... quando esquentar demais a cabeça ... pare , apague tudo e faça novamente do início... voce sempre chega a soluçãoMeu lema : Leitura, Teste, Leitura , modificação, Teste ... até conseguir .. rs A prática leva a perfeição.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nsouza
Colegas sou iniciante e estou com problema no código abaixo recebo a seguinte mensagem ao clicar no botão incluir:
Da a seguinte mensagem de erro:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right
syntax to use near 'Value('2', 'Carlos',",",",",",",",",",",",",",",",",","' / / ',' ate line 2'.
Minha conexão é com o DBExpress e estou usando o Mysql 5.0.77
Por favor alguém poderia corrigir este código ou parte de código para mim.
DM.Q_Funcionarios.close;
DM.Q_Funcionarios.sql.clear;
DM.Q_Funcionarios.SQL.Add('INSERT INTO FUNCIONARIO (CODESPECIALIDADE, NOME, ENDERECO, NUMERO, OMPLEMENTO, CIDADE, ESTADO, CEP, TELEFONE, CELULAR, EMAIL, RG, CPF, DTNASCIMENTO, DTADMISSAO, DTDEMISSAO, NOMECONTATO,TELCONTATO, LOGIN, SENHA, FOTO');
DM.Q_Funcionarios.SQL.Add('VALUES (:NOME, :ENDERECO, :NUMERO, :COMPLEMENTO, :CIDADE, :ESTADO, :CEP, :TELEFONE, :CELULAR, :EMAIL, :RG, :CPF, :DTNASCIMENTO, :DTADMISSAO, :DTDEMISSAO, :NOMECONTATO,:TELCONTATO, :LOGIN, :SENHA, :FOTO)');
DM.Q_Funcionarios.ParamByName('NOME').Text := edtNome.Text;
DM.Q_Funcionarios.ParamByName('CODESPECIALIDADE').Text := edtcodespecialidade.Text;;
DM.Q_Funcionarios.ParamByName('ENDERECO').Text := edtEndereco.Text;
DM.Q_Funcionarios.ParamByName('NUMERO').Text := edtNumero.Text;
DM.Q_Funcionarios.ParamByName('COMPLEMENTO').Text := edtComplemento.Text;
DM.Q_Funcionarios.ParamByName('CIDADE').Text := edtCidade.Text;
DM.Q_Funcionarios.ParamByName('ESTADO').Text := edtUF.Text;
DM.Q_Funcionarios.ParamByName('CEP').Text := mkeCep.Text;
DM.Q_Funcionarios.ParamByName('TELEFONE').Text := mkeTelefone.Text;
DM.Q_Funcionarios.ParamByName('CELULAR').Text := mkeCelular.Text;
DM.Q_Funcionarios.ParamByName('EMAIL').Text := edtEmail.Text;
DM.Q_Funcionarios.ParamByName('RG').Text := edtIdentidade.Text;
DM.Q_Funcionarios.ParamByName('CPF').Text := mkeCpf.Text;
DM.Q_Funcionarios.ParamByName('DTNASCIMENTO').Text := mkeNascimento.Text;
DM.Q_Funcionarios.ParamByName('DTADMISSAO').Text := mkeDemissao.Text;
DM.Q_Funcionarios.ParamByName('DTDEMISSAO').Text := mkeDemissao.Text;
DM.Q_Funcionarios.ParamByName('NOMECONTATO').Text := edtNomeCont.Text;
DM.Q_Funcionarios.ParamByName('TELCONTATO').Text := mkeTelContato.Text;
DM.Q_Funcionarios.ParamByName('LOGIN').Text := edtLogin.Text;
DM.Q_Funcionarios.ParamByName('SENHA').Text := edtSenha.Text;
DM.Q_Funcionarios.ParamByName('FOTO').Text := edtFoto.Text;
DM.Q_Funcionarios.ExecSql(false);
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.