Erro com SQL

17/07/2008

1

Galera, to tentando executar esse SQL mas ta dando erro:

Código:
procedure TFrmCadastro.BtnSalvarTipoClick(Sender: TObject);
begin
   qrycadcategoria.Close;
   sql := ´INSERT INTO CLASSIFICACAO (CDCLASSIFICACAO, NMCLASSIFICACAO)´+
   ´ VALUES (´ + edit1.Text + ´,´+ ´"´ + edit2.Text +´" )´;
   ibqrycadcategoria.SQl.text:= sql;
   ibqrycadcategoria.Active:= true;
   ibqrycadcategoria.Open;
end;
end.


Erro:

[URL=http://img235.imageshack.us/my.php?image=errofs7.jpg][img:ecad5ea488]http://img235.imageshack.us/img235/4198/errofs7.th.jpg[/img:ecad5ea488][/URL]

O edit1.text esta igual a 2, e o edit2.text esta igual a Teste.
Alguem pode me ajudar?

Estou usando um IBdatabase, um IBtransiction , uma IBquery e um Datasource


Responder

Posts

17/07/2008

Ferreia2

Se não me falha a memória vc precisa colocar [b:3c7c855f40]ibqrycadcategoria.Execsql e não ibqrycadcategoria.Open;[/b:3c7c855f40]


Responder

17/07/2008

Gabriel301

Substituindo a linha ibqrycadcategoria.open;
poribqrycadcategoria.execsql

Continua dando o mesmo erro!


Responder

17/07/2008

Joaoshi

Colega, a instrução parece estar correta, delete a linha [b:d981f63814]ibqrycadcategoria.Active:= true[/b:d981f63814].

procedure TFrmCadastro.BtnSalvarTipoClick(Sender: TObject); 
begin 
   qrycadcategoria.Close; 
   sql := ´INSERT INTO CLASSIFICACAO (CDCLASSIFICACAO, NMCLASSIFICACAO)´+ 
   ´ VALUES (´ + edit1.Text + ´,´+ ´"´ + edit2.Text +´" )´; 
   ibqrycadcategoria.SQl.text:= sql; 
   ibqrycadcategoria.Active:= true;  // apague esta linha
   ibqrycadcategoria.execsql; 
end; 


Espero ter ajudado.


Responder

17/07/2008

Gabriel301

Continua dando o mesmo erro.

No erro, ele fala que a coluna é desconhecida. Só que parece que ele está colocando como o nome da coluna o valor do edit2.text.


Responder

17/07/2008

Joaoshi

Colega, por que [b:f7bcbda1e9]qrycadcategoria[/b:f7bcbda1e9] e [b:f7bcbda1e9]ibqrycadcategoria[/b:f7bcbda1e9] ?

Se não tiver problema com os nomes dos componentes, coloque um edit no formulário e veja o que esta sendo carregado no sql.

Edit.Text := sql;

Espero ter ajudado.


Responder

17/07/2008

Gabriel301

O nome dos componentes estão certos, é que na hora de postar devo ter apagado sem querer.

O conteúdo do SLQ é esse:
INSERT INTO CLASSIFICACAO (CDCLASSIFICACAO, NMCLASSIFICACAO) VALUES (2,´Teste´ )

Lembrando que CDCLASSIFICACAO é inteiro e NMCLASSIFICACAO é String.


Responder

17/07/2008

Joaoshi

Colega, você poderia postar esta parte do codigo da forma que esta no seu programa ?


Responder

17/07/2008

Gabriel301

Olha, vô colocar o fonte aqui pra Download, porque talvez seja algum erro na configuraçao dos componentes.
Alguém dá uma olhada pra mim?

A unit é Ucadastro, e a aba do formulário é Tipos de Materiais

Fonte:
http://rapidshare.com/files/130506443/Prot_tipo.rar.html

Obrigado.


Responder

17/07/2008

Joaoshi

Colega, imagino que sua rotina deveria ser assim:

procedure TFrmCadastro.BtnSalvarTipoClick(Sender: TObject); 
begin 
   ibqrycadcategoria.Close; 
   ibqrycadcategoria.sql.clear;
   sql := ´INSERT INTO CLASSIFICACAO (CDCLASSIFICACAO, NMCLASSIFICACAO)´+ 
   ´ VALUES (´ + edit1.Text + ´,´+ ´"´ + edit2.Text +´" )´; 
   ibqrycadcategoria.SQl.text:= sql; 
   ibqrycadcategoria.ExecSql; 
end; 


Precisa verificar se não esta utilizando um componente com campos já criados.

Lamento não poder ajudar mais.


Responder

17/07/2008

Gabriel301

Como assim campos já criados?


Responder

18/07/2008

Mazzi

Se nao deu certo nenhuma das alternativas acima, verifique:

-nome dos campos,
-integridade da tabela e de algum relacionamento;
e tente passar a string com o uso de QuotedStr

ex:

Insert into Tabela (codigo, nome) Values(´+txtcodigo.txt+´,´+ Quotedstr(txtNome.text)+ ´)´ );

Ou passe por paramentros

Insert into tabela (codigo, nome) Values (:pcod, :pnome);

query.paramByName(´pcodi´).value:= txtCodigo.text;
query.paramByName(´pnome´).value:= txtNome.text;

query.execSQl;


Responder