ERRO AO DAR O INSERT NA TABELA ESTOQUE

AUSTANDER 05/01/2013 22:01:31
#416809
Bom pessoal, e estou com uma tremenda dúvida e precisando da ajuda do pessoal

Bom é o seguinte...

quando faço o insert no banco de dados na tabela login funciona perfeitamente, o código está abaixo

DM.QueryLogin.Close;
DM.QueryLogin.SQL.Clear;
DM.QueryLogin.SQL.Add([ô]Insert into Login values(:Id, :Login, :Senha, :Tipo_Acesso, :Solicitar_Senha)[ô]);
DM.QueryLogin.Parameters.ParamByName([ô]Id[ô]).Value := (1);
DM.QueryLogin.Parameters.ParamByName([ô]Login[ô]).Value := txtLogin.Text;
DM.QueryLogin.Parameters.ParamByName([ô]Senha[ô]).Value := txtSenha.Text;
DM.QueryLogin.Parameters.ParamByName([ô]Tipo_Acesso[ô]).Value := ([ô]ADMINISTRADOR[ô]);
DM.QueryLogin.Parameters.ParamByName([ô]Solicitar_Senha[ô]).Value := ([ô]0[ô]);

DM.QueryLogin.ExecSQL;

MessageDlg ([ô]As informações foram gravadas com sucesso![ô], mtinformation,[mbok], 0);

agora preciso gravar na tabela estoque e ta dando um erro assim

Project enge.exe raised exception class Eole exception with message [obdc firebird driver] [firebird] dynamic sql error
sql erro code = -104
token unknown - line 2, column 1
?[ô].

fiquei quase o dia todo para resolver isso e até agora nada, aguem sabe me dizer aonde estou errando? acho que deve ser a quebra de linha do insert


DM.QueryEstoque.Close;
DM.QueryEstoque.SQL.Clear;
DM.QueryEstoque.SQL.Add([ô]Insert into Estoque Values(:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria) [ô]);
DM.QueryEstoque.SQL.Add([ô]:CodigoBarras, :Aceita_Fracionar, :Medida, :Pontuacao, :Informacoes, :Moeda, :LucroVarejo, :LucroAtacado, :Cotacao[ô]);
DM.QueryEstoque.SQL.Add([ô]:QuantidadeMinima, :EstoqueAtual, :Ativo, :Codigo_Fornecedor, :Fornecedor, :Porcentagem, :DataCadastro, :Foto, :Observacoes[ô]);
DM.QueryEstoque.SQL.Add([ô]:Grade_Codigo, :Grade_Descricao, :Grade_Estoque, :Compor_Codigo, :Compor_Descricao, :Compor_Quantidade, :AliquotaIcms[ô]);
DM.QueryEstoque.SQL.Add([ô]:AliquotaIpi, :Inside, :Tributacao, :Imposto, :Origem, :Classificacao_Fiscal, :Classificacao_Fiscal_Cf)[ô]);

DM.QueryEstoque.Parameters.ParamByName([ô]Codigo[ô]).Value := [ô]2000356[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Indique[ô]).Value := [ô]Nao indicado[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Produto[ô]).Value := [ô]TDA2613[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]ValorCusto[ô]).Value := [ô]0.10[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]ValorVarejo[ô]).Value := [ô]0.50[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]ValorAtacado[ô]).Value := [ô]1.00[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Categoria[ô]).Value := [ô]INTEGRADO[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]CodigoBarras[ô]).Value := [ô]00001[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Aceita_Fracionar[ô]).Value := [ô]1[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Medida[ô]).Value := [ô]UN[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Pontuacao[ô]).Value := [ô]0[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Informacoes[ô]).Value := [ô]NENHUM[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]Moeda[ô]).Value := [ô]$RS[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]LucroVarejo[ô]).Value := [ô]10.00[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]LucroAtacado[ô]).Value := [ô]20.00[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Cotacao[ô]).Value := [ô]0.10[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]QuantidadeMinima[ô]).Value := [ô]5[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]EstoqueAtual[ô]).Value := [ô]10[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]Ativo[ô]).Value := [ô]2[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Codigo_Fornecedor[ô]).Value := [ô]101[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Fornecedor[ô]).Value := [ô]GRILL SOLUÇOES[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Porcentagem[ô]).Value := [ô]14[ô];
//DM.QueryEstoque.Parameters.ParamByName([ô]DataCadastro[ô]).Value := DateToStr(Date);
DM.QueryEstoque.Parameters.ParamByName([ô]DataCadastro[ô]).Value := [ô]2013.01.05[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Foto[ô]).Value := [ô]C:\foto    este.jpg[ô];


DM.QueryEstoque.Parameters.ParamByName([ô]Observacoes[ô]).Value := [ô]TESTE[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Codigo[ô]).Value := [ô]1010[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Descricao[ô]).Value := [ô]TURMA[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Estoque[ô]).Value := [ô]3[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Compor_Codigo[ô]).Value := [ô]1200[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Compor_Descricao[ô]).Value := [ô]DOWN[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]Compor_Quantidade[ô]).Value := [ô]2[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]AliquotaIcms[ô]).Value := [ô]300[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]AliquotaIpi[ô]).Value := [ô]15[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Inside[ô]).Value := [ô]4[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Tributacao[ô]).Value := [ô]JUROS[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Imposto[ô]).Value := [ô]8[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]Origem[ô]).Value := [ô]COMANDA[ô];

DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal[ô]).Value := [ô]EFEITO TESTE[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal_Cf[ô]).Value := [ô]EFEITO RAISER[ô];

DM.QueryEstoque.ExecSQL;

MessageDlg ([ô]O Teste foi realizado com êxito![ô], mtinformation,[mbok], 0);
OMAR2011 06/01/2013 12:19:48
#416814
Cabra,isto é DELPHI?
Estou enganado ou é algo que desconheço.
AJSO 06/01/2013 14:10:36
#416818
Caro

Seu insert tem que resppeitar a seguinte ordem

INSERT INTO tabela_nome (columa1, columa2, columa3,...) VALUES (valor1, valor2, valor3,...)

Isso esta acontecendo na sua QUERY........................................

Sua tabela pode conter campos que não aceita NULL ou é do tipo INTEGER e esta colocando caracteres do tipo STRING.................

Olhe a sua INSERT..............
Citação:

DM.QueryEstoque.SQL.Add([ô]Insert into Estoque Values(:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria) [ô]);





Isso é uma outra linha que não faz parte do seu INSERT...............
Citação:

DM.QueryEstoque.SQL.Add([ô]:CodigoBarras, :Aceita_Fracionar, :Medida, :Pontuacao, :Informacoes, :Moeda, :LucroVarejo, :LucroAtacado, :Cotacao[ô]);
DM.QueryEstoque.SQL.Add([ô]:QuantidadeMinima, :EstoqueAtual, :Ativo, :Codigo_Fornecedor, :Fornecedor, :Porcentagem, :DataCadastro, :Foto, :Observacoes[ô]);
DM.QueryEstoque.SQL.Add([ô]:Grade_Codigo, :Grade_Descricao, :Grade_Estoque, :Compor_Codigo, :Compor_Descricao, :Compor_Quantidade, :AliquotaIcms[ô]);
DM.QueryEstoque.SQL.Add([ô]:AliquotaIpi, :Inside, :Tributacao, :Imposto, :Origem, :Classificacao_Fiscal, :Classificacao_Fiscal_Cf)[ô]);




Se esta é parte de sua Tabela é preciso quebrar a linha e não fechar os parenteses do INSERT como fez no seu comando com a tabela LOGIN...............



[txt-color=#e80000]Insert into Estoque Values(:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria)[/txt-color]


o INSERT tem mais parametros que os declarados na sua query
Estão declarados na sua query apenas esses (:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria)




VEJA SE ESTA DÁ CERTO DEIXE EM APENAS UMA LINHA

TROQUE ISSO
=====================================================================================================================
DM.QueryEstoque.SQL.Add([ô]Insert into Estoque Values(:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria) [ô]);
DM.QueryEstoque.SQL.Add([ô]:CodigoBarras, :Aceita_Fracionar, :Medida, :Pontuacao, :Informacoes, :Moeda, :LucroVarejo, :LucroAtacado, :Cotacao[ô]);
DM.QueryEstoque.SQL.Add([ô]:QuantidadeMinima, :EstoqueAtual, :Ativo, :Codigo_Fornecedor, :Fornecedor, :Porcentagem, :DataCadastro, :Foto, :Observacoes[ô]);
DM.QueryEstoque.SQL.Add([ô]:Grade_Codigo, :Grade_Descricao, :Grade_Estoque, :Compor_Codigo, :Compor_Descricao, :Compor_Quantidade, :AliquotaIcms[ô]);
DM.QueryEstoque.SQL.Add([ô]:AliquotaIpi, :Inside, :Tributacao, :Imposto, :Origem, :Classificacao_Fiscal, :Classificacao_Fiscal_Cf)[ô]);
================================================================================================================================

POR ISSO:
=============================================================================================
DM.QueryEstoque.SQL.Add([ô]Insert into Estoque Values(:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria, :CodigoBarras, :Aceita_Fracionar, :Medida, :Pontuacao, :Informacoes, :Moeda, :LucroVarejo, :LucroAtacado, :Cotacao, :QuantidadeMinima, :EstoqueAtual, :Ativo, :Codigo_Fornecedor, :Fornecedor, :Porcentagem, :DataCadastro, :Foto, :Observacoes, :Grade_Codigo, :Grade_Descricao, :Grade_Estoque, :Compor_Codigo, :Compor_Descricao, :Compor_Quantidade, :AliquotaIcms, :AliquotaIpi, :Inside, :Tributacao, :Imposto, :Origem, :Classificacao_Fiscal, :Classificacao_Fiscal_Cf)[ô]);
================================================================================================



Boa Sorte
AUSTANDER 07/01/2013 01:46:41
#416830
Amigo OMAR2011,,no Delphi e bem diferente o tipo de comando, pelo menos no delphi 2010 é assim, eu usei o comando por parametro, por isso vc estranhou kkkkk

amigo AJSO, no vb o limite de um codigo na mesma linha é bem maior do que a do delphi, mas vamos lá
No delphi nao precisa respeitar linha do insert, ex

DM.QueryEstoque.SQL.Add([ô]insert into Teste[ô]) ([ô]values[ô]); e por ai vai,,,

mas esquentei a cabeça e conseguir resolver assimnm

DM.QueryEstoque.Close;
DM.QueryEstoque.SQL.Clear;
DM.QueryEstoque.SQL.Add([ô]insert into Estoque[ô]);
DM.QueryEstoque.SQL.Add([ô](Codigo, Indique, Produto, ValorCusto, ValorVarejo, ValorAtacado, Categoria, CodigoBarras, Aceita_Fracionar, Medida, Pontuacao, Informacoes, Moeda, LucroVarejo, LucroAtacado, Cotacao,[ô]);
DM.QueryEstoque.SQL.Add([ô] QuantidadeMinima, EstoqueAtual, Ativo, Codigo_Fornecedor, Fornecedor, Porcentagem, DataCadastro, Foto, Observacoes, Grade_Codigo, Grade_Descricao, Grade_Estoque, Composto, SelecioneProduto, Compor_Quantidade,[ô]);
DM.QueryEstoque.SQL.Add([ô] Aliquota_Icms, Aliquota_Ipi, Inside, Tributacao, Imposto, Origem, Classificacao_Fiscal, Classificacao_Fiscal_Cf)[ô]);
DM.QueryEstoque.SQL.Add ([ô]values[ô]);
DM.QueryEstoque.SQL.Add([ô](:Codigo, :Indique, :Produto, :ValorCusto, :ValorVarejo, :ValorAtacado, :Categoria, :CodigoBarras, :Aceita_Fracionar, :Medida, :Pontuacao, :Informacoes, :Moeda, :LucroVarejo, :LucroAtacado, :Cotacao,[ô]);
DM.QueryEstoque.SQL.Add([ô] :QuantidadeMinima, :EstoqueAtual, :Ativo, :Codigo_Fornecedor, :Fornecedor, :Porcentagem, :DataCadastro, :Foto, :Observacoes, :Grade_Codigo, :Grade_Descricao, :Grade_Estoque, :Composto, :SelecioneProduto, :Compor_Quantidade,[ô]);
DM.QueryEstoque.SQL.Add([ô] :Aliquota_Icms, :Aliquota_Ipi, :Inside, :Tributacao, :Imposto, :Origem, :Classificacao_Fiscal, :Classificacao_Fiscal_Cf)[ô]);
DM.QueryEstoque.Parameters.ParamByName([ô]Codigo[ô]).Value := lblCodigo.Caption;
DM.QueryEstoque.Parameters.ParamByName([ô]Indique[ô]).Value := cboIndique.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Produto[ô]).Value := txtProduto.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]ValorCusto[ô]).Value := txtValorCusto.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]ValorVarejo[ô]).Value := txtValorVarejo.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]ValorAtacado[ô]).Value := txtValorAtacado.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Categoria[ô]).Value := cboCategoria.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]CodigoBarras[ô]).Value := txtCodigoBarras.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Categoria[ô]).Value := cboCategoria.Text;
if RadioFracionarSim.Checked = True then
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Aceita_Fracionar[ô]).Value := [ô]1[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Aceita_Fracionar[ô]).Value := [ô]0[ô];
end;
DM.QueryEstoque.Parameters.ParamByName([ô]Medida[ô]).Value := cboMedida.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Pontuacao[ô]).Value := txtPontuacao.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Informacoes[ô]).Value := txtInformacoes.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Moeda[ô]).Value := cboMoeda.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]LucroVarejo[ô]).Value := txtLucroVarejo.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]LucroAtacado[ô]).Value := txtLucroAtacado.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Cotacao[ô]).Value := lblCotacao.Caption;
DM.QueryEstoque.Parameters.ParamByName([ô]QuantidadeMinima[ô]).Value := txtQuantidadeMinima.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]EstoqueAtual[ô]).Value := txtEstoqueAtual.Text;
if RadioAtivoSim.Checked = True then
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Ativo[ô]).Value := [ô]1[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Ativo[ô]).Value := [ô]0[ô];
end;
if StringGrid1.Cells[0,1] = [ô][ô] then
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Codigo_Fornecedor[ô]).Value := [ô]0[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Codigo_Fornecedor[ô]).Value := StringGrid1.Cells[0,1];
end;
DM.QueryEstoque.Parameters.ParamByName([ô]Fornecedor[ô]).Value := StringGrid1.Cells[1,1];
DM.QueryEstoque.Parameters.ParamByName([ô]Porcentagem[ô]).Value := txtPorcentagem.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]DataCadastro[ô]).Value := FormatDateTime([ô]mm/dd/yyyy[ô], now);
DM.QueryEstoque.Parameters.ParamByName([ô]Foto[ô]).Value := txtFoto.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Observacoes[ô]).Value := Inserir.Text;
if StringGrid2.Cells[0,1] = [ô][ô] then
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Codigo[ô]).Value := [ô]0[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Estoque[ô]).Value := [ô]0[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Codigo[ô]).Value := StringGrid2.Cells[0,1];
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Estoque[ô]).Value := StringGrid2.Cells[2,1];
end;
DM.QueryEstoque.Parameters.ParamByName([ô]Grade_Descricao[ô]).Value := StringGrid2.Cells[1,1];
DM.QueryEstoque.Parameters.ParamByName([ô]Composto[ô]).Value := cboComposto.Text;
if StringGrid3.Cells[0,1] = [ô][ô] then
begin

DM.QueryEstoque.Parameters.ParamByName([ô]SelecioneProduto[ô]).Value := [ô]0[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Compor_Quantidade[ô]).Value := [ô]0[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]SelecioneProduto[ô]).Value := StringGrid3.Cells[0,1];
DM.QueryEstoque.Parameters.ParamByName([ô]Compor_Quantidade[ô]).Value := StringGrid3.Cells[1,1];
end;
DM.QueryEstoque.Parameters.ParamByName([ô]Aliquota_Icms[ô]).Value := cboAliquotaIcms.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Aliquota_Ipi[ô]).Value := txtAliquotaIpi.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Imposto[ô]).Value := txtImposto.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal_Cf[ô]).Value := cboClassificacaoFiscalCf.Text;
if RadioInsideNao.Checked = True then
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Inside[ô]).Value := [ô]0[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal_Cf[ô]).Value := [ô]0[ô];
end
else
begin
DM.QueryEstoque.Parameters.ParamByName([ô]Inside[ô]).Value := [ô]1[ô];
DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal_Cf[ô]).Value := cboClassificacaoFiscalCf.Text;
end;
DM.QueryEstoque.Parameters.ParamByName([ô]Tributacao[ô]).Value := txtTributacao.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Origem[ô]).Value := cboOrigem.Text;
DM.QueryEstoque.Parameters.ParamByName([ô]Classificacao_Fiscal[ô]).Value := cboClassificacaoFiscal.Text;
DM.QueryEstoque.ExecSQL;
MessageDlg ([ô]Produto cadastrado com sucesso.[ô], mtinformation,[mbok], 0);
PageControl1.TabIndex := 0;

Valeu pela ajuda dos amigos...



Tópico encerrado , respostas não são mais permitidas