comando SQL

Delphi

04/04/2005

DataMrp.ZQueryMrpmat.SQL.Clear;
DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=(:fal) and total=(:tot) where simulacao=:simu and qtdmatprima > estoque ´);
DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text);
DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat;
DataMrp.ZQueryMrpmat.ExecSQL;

estou usando esse comando acima e da essa mensagem de erro.

´no argument for format ´¬s´ ,process stop´
não posso usar o update dessa forma? estou tentando passar para o paremetro Fal o resultado entre dois campos dessa mesma tabela.


Rjcerri

Rjcerri

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

04/04/2005

está faltando passar o valor do parâmetro :tot


GOSTEI 0
Vendre

Vendre

04/04/2005

amigo pela msg de erro q deu.. falta mais um ¬ nos teus parametros ficando assim.. ´¬s¬´


GOSTEI 0
Kapak

Kapak

04/04/2005

DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat;
Isso funciona ?


GOSTEI 0
Rjcerri

Rjcerri

04/04/2005

DataMrp.ZQueryMrpmat.SQL.Clear;
DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=:fal,total=:tot where simulacao=:simu and qtdmatprima > estoque ´);
DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text);
DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat;
DataMrp.ZQueryMrpmat.Parambyname(´tot´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´preco´).AsFloat*DataMrp.ZQueryMrpmat.fieldbyname(´falta´).AsFloat;
DataMrp.ZQueryMrpmat.ExecSQL;

dei mole no parametro tot, mas mesmo assim continua dando aquela mensagem de erro.


GOSTEI 0
Cabelo

Cabelo

04/04/2005

DataMrp.ZQueryMrpmat.SQL.Clear; DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=:fal,total=:tot where simulacao=:simu and qtdmatprima > estoque ´); DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text); DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat; DataMrp.ZQueryMrpmat.Parambyname(´tot´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´preco´).AsFloat*DataMrp.ZQueryMrpmat.fieldbyname(´falta´).AsFloat; DataMrp.ZQueryMrpmat.ExecSQL; dei mole no parametro tot, mas mesmo assim continua dando aquela mensagem de erro.


Colega..

Não manjo muito em trabalhar com parambyname, mas será que vc não estaria usando eles de forma errada, talvez se vc passar os parâmetros antes de dar o SQL, acho que resolveria.. assim:

DataMrp.ZQueryMrpmat.SQL.Clear;
DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text);
DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat;
DataMrp.ZQueryMrpmat.Parambyname(´tot´).asfloat:=DataMrp.ZQueryMrpmat.fieldbyname(´preco´).AsFloat*DataMrp.ZQueryMrpmat.fieldbyname(´falta´).AsFloat;
DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=:fal,total=:tot where simulacao=:simu and qtdmatprima > estoque ´);
DataMrp.ZQueryMrpmat.ExecSQL;


GOSTEI 0
Kapak

Kapak

04/04/2005

Isto é uma novidade p/ mim e gostaria muito de aprender:
DataMrp.ZQueryMrpmat.SQL.Clear; DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=:fal,total=:tot where simulacao=:simu and qtdmatprima > estoque ´); DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text); DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=[b:5d325b3225]DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat[/b:5d325b3225];
O Dataset está num comando [b:5d325b3225]Update[/b:5d325b3225] certo?
Então como ele conseguirá pegar o valor que está em negrito ?
Será que ele fará um [b:5d325b3225]Select[/b:5d325b3225] nos bastidores antes do [b:5d325b3225]Update[/b:5d325b3225]?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

04/04/2005

with DataMrp.ZQueryMrpmat do
begin
  SQL.Clear; 
  SQL.Add(´update mrpmatprima set total=(qtdmatprima-estoque)*preco, falta=qtdmatprima-estoque´);
  SQL.Add(´where simulacao=:simu and qtdmatprima > estoque´);
  Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text);
  ExecSQL;
end;



GOSTEI 0
Cabelo

Cabelo

04/04/2005

Isto é uma novidade p/ mim e gostaria muito de aprender:[quote:3fa9d0641a]DataMrp.ZQueryMrpmat.SQL.Clear; DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=:fal,total=:tot where simulacao=:simu and qtdmatprima > estoque ´); DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text); DataMrp.ZQueryMrpmat.Parambyname(´fal´).asfloat:=[b:3fa9d0641a]DataMrp.ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat[/b:3fa9d0641a];
O Dataset está num comando [b:3fa9d0641a]Update[/b:3fa9d0641a] certo?
Então como ele conseguirá pegar o valor que está em negrito ?
Será que ele fará um [b:3fa9d0641a]Select[/b:3fa9d0641a] nos bastidores antes do [b:3fa9d0641a]Update[/b:3fa9d0641a]?[/quote:3fa9d0641a]

Colega..

O select deve ter acontecido em alguns eventos anteriores, pois a query deve estar aberta para que aconteça esta atribuição, e é passada por parâmetros ao dataset na hora de dar o update, eu particularmente não gosto de trabalhar assim, prefiro usar o SQL na mão mesmo e simplesmente jogar os selects, updates, inserts, deletes .. numa variável string, e manipular a vontade, sem depender do dataset para isso, muito menos dos parâmetros, o quê aumenta e muito o desempenho do comando.


GOSTEI 0
Kapak

Kapak

04/04/2005

Colega.. O select deve ter acontecido em alguns eventos anteriores, pois a query deve estar aberta para que aconteça esta atribuição, e é passada por parâmetros ao dataset na hora de dar o update
Desculpe minha ignorância mas confesso que não entendí.
1-É dado ZQueryMrpmat.SQL.Clear
2-É dado ZQueryMrpmat.SQL.Add(´update ...´)
3-O valor atribuído ao ParamByName(´fal´) é ZQueryMrpmat.fieldbyname(´qtdmatprima´).asfloat-DataMrp.ZQueryMrpmat.Fieldbyname(´estoque´).asfloat;
Ou seja, é a mesma query.
Vc poderia me explicar melhor como isso ocorre ?


GOSTEI 0
Rjcerri

Rjcerri

04/04/2005

DataMrp.ZQueryMrpmat.SQL.Clear;
DataMrp.ZQueryMrpmat.SQL.Add(´update mrpmatprima set falta=qtdmatprima-estoque ,total=:preco*falta where simulacao=:simu and qtdmatprima > estoque ´);
DataMrp.ZQueryMrpmat.Parambyname(´simu´).asinteger:=strtoint(txtsimulacao.text);
DataMrp.ZQueryMrpmat.ExecSQL;

Assim funcionou valeu!! :D


GOSTEI 0
POSTAR