update com ibquery

10/02/2006

Oi Uso Delphi 6 e Firebird 1.5

Tenho que fazer uma recalculação da sequencia da numeração de itens de um orcamento, para inserir um produto no meio do orçamento.

Fiz a rotina em que achava os numeros posteriores ao que eu gostaria de chegar, mas o problema é que na hora de fazer a gravação, e usando um ibquery, mesmo que eu isole na sql o registro que vai ser mudado dá update failed, como se existisse um registro já usando o número. (mas não existe).

A Rotina que criei é simples.

QueItemOrcamento.SQL.Clear;
QueItemOrcamento.SQL.Add(´Select * from ItemOrcamento ´+
´where Item = ´´´+IntToStr(ItemAnt)+´´´ ´+
´and Lote = ´´´+´1´+´´´ ´+
´and CodOrcamento = ´´´+IntToStr(Codigo)+´´´ ´+
´and CodFilial = ´´´+IntToStr(PRINCIPAL.FilUs)+´´´ ´);
QueItemOrcamento.Open;
if not QueItemOrcamento.Eof then
begin
QueItemOrc.SQL.Clear;
QueItemOrc.SQL.Add(´Select * from ItemOrcamento ´+
´where CodOrcamento = ´´´+QueItemOrcamentoCODORCAMENTO.AsString +´´´ ´+
´and CodFilial = ´´´+QueItemOrcamentoCODFILIAL.AsString+´´´ ´+
´and Lote = ´´´+QueItemOrcamentoLOTE.AsString+´´´ ´+
´and Item = ´´´+QueItemOrcamentoITEM.AsString+´´´ ´);
QueItemOrc.Open;
QueItemOrc.Edit;
QueItemOrcITEM.Value := ItemAnt + 1;
QueItemOrc.Post;
end;

Tentei usar tables mas fica inviável, visto que a rotina dependendo da quantidade de itens se torna lenta, nossos orçamentos as vezes chegam a 500 itens.
Tentei simplesmente dar um edit na query que acho primeiro, mas dá o mesmo erro.

Agradeço antecipadamente qualquer ajuda.

Sandro


Salupe

Respostas

10/02/2006

Salupe

Depois que postei a mensagem, tentei utilizar uma sql de atualização em vez de pegar o registro e dar um edit nela.

Funcionou, mas não sei se isso não poderia vir a se tornar perigoso, e acabar fazendo um atualização onde não deveria ser feito, apesar de ter sempre isolado o registro pra tentar garantir que isso não aconteça.


Responder Citar