Porque não funciona?

23/09/2004

Tenho uma tabela com 15.000 itens, e sua estrutura é:
cod integer, indice varchar, descricao blob(memo). Tudo funciona bem. Só que agora, eu preciso acrescentar na frente da descricão o valor do campo indice + o minus ´-´ e edepois a descricao a pedido da chefia. Fiz esta rotina abaixo:

While not Dm.Indi_old.Eof do begin
with Dm.Indice do begin
Close;
Sql.Clear;
Sql.Text:=´Update indice set descricao =:desc where posicao =:pos and c =:c´;
parambyname(´desc´).asstring:=Dm.indi_oldindice.asstring+´ - ´+Dm.indi_olddescricao.asstring;
parambyname(´pos´).AsString:=Dm.indi_oldposicao.value;
parambyname(´c´).Asinteger:=Dm.indi_oldC.value;
execsql;
close;
sql.Clear;
sql.Add(´select * from indice´);
open;
end;
Dm.indi_old.Next;
end;

Acontece que faz o que eu quero, só que não termina nunca, e por isso vai repetindo o indice assim, por exemplo:
Digamos
cod=1, indice=tinta,descricao=tinta de parede
deveria ficar assim:
cod=1, indice=tinta, descricao=tinta - tinta de parede
Está ficando assim:
cod=1, indice=tinta, descricao=tinta - tinta - tinta - tinta de parede
Se eu não terminar, vai colocando o indice até sei lá quando.
Obs: Toda está sendo preenchida. É como se ela fosse até o fim e não saisse do while, voltando o ponteiro da tabela para o primeiro registro e comessasse tudo de novo. Tenho certeza que é erro de lógica. Como mudar este código, para me dar o resultado esperado? Desde já, grato!


Paulo

Respostas

23/09/2004

Mago M3rl1n

Acho que seria mais facil voce fazer somente o update.

Update Tabela Set Desc = Indice + ´-´ + Desc


Responder Citar

23/09/2004

Paulo

Mago, eu preciso é atualizar toda a tabela, e sem o while, eu não vejo como.


Responder Citar

23/09/2004

Mago M3rl1n

Amigo, o Update faz a atualização em toda tabela. Voce nao faz um update por registro.


Responder Citar

23/09/2004

Nildo

Tópico bloqueado.
Leia as regras de conduta.


Responder Citar