Ir para conteúdo
Fórum Script Brasil
  • 0

erro de sintax


mauror

Pergunta

Tenho uma tabela em que o campo "qsaldo" - do tipo int - registra a quantidade existente de determinada mercadoria.

Todas entradas e saidas da mercadoria são registradas nesse saldo, ou seja, é efetuada a soma algébrica do saldo anterior mais entradas menos saidas.

O problema que encontro é quando o saldo reduz-se a 0 (zero), recebendo a mensagem: 'you have an error in your SQL sintax. Check the manual that corresponds to your mysql server version for the right sintax to use near "at line '.

Uso o Wampserver com o MySql 5.5.8 e o Delphi 7.

O código que dá o erro é o seguinte:

tabelas.THist.Open;

tabelas.THist.Insert;

tabelas.THistsaldoqtd.Value := eqsaldo;

tabelas.Thist.Post;

tabelas.Thist.Close;

THist é uma tabela e não uma query.

Eqsaldo é uma variável com o resultado da soma algébrica de saldo anterior, recebido através de uma query (QHist), mais entrada menos saida.

Quando eqsaldo é igual a 0 (zero) acontece o erro citado.

Se maior que 0 (zero), a gravação (post) ocorre normalmente.

A query QHist foi fechada antes do código acima de inserção na tabela THist.

Alguém pode esclarecer-me ?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
...

O problema que encontro é quando o saldo reduz-se a 0 (zero), recebendo a mensagem: 'you have an error in your SQL sintax. Check the manual that corresponds to your mysql server version for the right sintax to use near "at line '.

Uso o Wampserver com o MySql 5.5.8 e o Delphi 7.

O código que dá o erro é o seguinte:

tabelas.THist.Open;

tabelas.THist.Insert;

tabelas.THistsaldoqtd.Value := eqsaldo;

tabelas.Thist.Post;

tabelas.Thist.Close;

THist é uma tabela e não uma query.

...

Alguém pode esclarecer-me ?

Também trabalho com Delphi e MySQL.

Passa o código sql para avaliarmos. O que você passou é uma classe e não dá para adivinhar o que está lá.

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado Denis,

Tenho apenas este código - e nada mais - para inclusão do valor da variável 'eqsaldo' na tabela THist (objeto TTble da palheta BDE):

procedure transac.movimento;

begin

tabelas.THist.Open;

tabelas.THist.Insert;

tabelas.THistsaldoqtd.Value := eqsaldo;

tabelas.Thist.Post;

tabelas.Thist.Close;

end;

Desculpe, havia me esquecido de citar que se trata de uma procedure

Não estou entendendo a razão da mensagem de erro que ocorre somente quando o campo 'saldoqtd' recebe o eqtdsaldo=0.

Para seu melhor entendimento, exemplifico:

tabela.Thistsaldoqtd.value := 100;

quando efetuo a saida de 10 produtos: eqsaldo=100 menos 10 = 90

consequência: tabela.THistsaldoqtd.value := 90 - gravado corretamente;

Se efetuo a entrada de 30 produtos: eqsaldo = 90 mais 30 = 120

consequência: tabela.THistsaldoqtd.value := 120 - gravado corretamente;

Se efetuo a saida de 120 produtos: eqsaldo = 120 - 120 = 0

consequência: tabela.THistsaldoqtd.value deveria ser igual a 0 (zero)

Nesse momento ocorre o erro e, evidentemente, não acontece a gravação.

Grato por sua atenção.

Link para o comentário
Compartilhar em outros sites

  • 0
Desculpe, havia me esquecido de citar que se trata de uma procedure

Não estou entendendo a razão da mensagem de erro que ocorre somente quando o campo 'saldoqtd' recebe o eqtdsaldo=0.

Para seu melhor entendimento, exemplifico:

tabela.Thistsaldoqtd.value := 100;

quando efetuo a saida de 10 produtos: eqsaldo=100 menos 10 = 90

consequência: tabela.THistsaldoqtd.value := 90 - gravado corretamente;

Se efetuo a entrada de 30 produtos: eqsaldo = 90 mais 30 = 120

consequência: tabela.THistsaldoqtd.value := 120 - gravado corretamente;

Se efetuo a saida de 120 produtos: eqsaldo = 120 - 120 = 0

consequência: tabela.THistsaldoqtd.value deveria ser igual a 0 (zero)

Nesse momento ocorre o erro e, evidentemente, não acontece a gravação.

Grato por sua atenção.

Olá mauror,

realmente esse seu código ta estranho.

primeiro que, se você já tem um registro, e ta execultando o insert, por mais que não dê erro, esse valor não será alterado e sim será criado um novo registro.

Pra que você altere esse valor já existente, você deve usar o comando UPDATE atraves de uma TQuery

Abs. Progr'amador

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

  • 0

Olá mauror,

realmente esse seu código ta estranho.

primeiro que, se você já tem um registro, e ta execultando o insert, por mais que não dê erro, esse valor não será alterado e sim será criado um novo registro.

Pra que você altere esse valor já existente, você deve usar o comando UPDATE atraves de uma TQuery

Abs. Progr'amador

Amigo, a intenção é realmente utilizar o insert - para futuro uso estatístico dos dados, coisa que o update não permitiria.

Eu já não sei o que fazer para contornar o problema. Já tentei várias artimanhas sem resultado. Estou relutante em alterar o campo para string - fazendo várias conversões para obter as somas e subtrações necessárias ao resultado final - porque implicaria em muitas alterações no aplicativo.

Mas parece que não tenho outra alternativa, não é ?

Realmente, é uma situação de encabular.

Link para o comentário
Compartilhar em outros sites

  • 0

você já tentou usar uma TQuery em vez do TTable?

tipo:

Query1.Prepare;
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into NomeTabela (saldoqtd) values ('+''''+saldoqtd+''''+')');
Query1.ExecSql;
Query1.Unprepare;
ou passando parametro:
Query1.Prepare;
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into NomeTabela (saldoqtd) values (:saldoqtd)');
Query1.ParamByName('saldoqtd').Value := saldoqtd;
Query1.ExecSql;
Query1.Unprepare;

e claro, verificando os outros campos da tabela.

Abs. Progr'amador

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...