Fórum comando SQL #275405

04/04/2005

0

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

Responder

Posts

04/04/2005

Emerson Nascimento

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


Responder

Gostei + 0

04/04/2005

Vendre

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


Responder

Gostei + 0

04/04/2005

Kapak

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


Responder

Gostei + 0

04/04/2005

Rjcerri

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.


Responder

Gostei + 0

04/04/2005

Cabelo

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;


Responder

Gostei + 0

05/04/2005

Kapak

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]?


Responder

Gostei + 0

05/04/2005

Emerson Nascimento

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;



Responder

Gostei + 0

05/04/2005

Cabelo

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.


Responder

Gostei + 0

05/04/2005

Kapak

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 ?


Responder

Gostei + 0

05/04/2005

Rjcerri

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar