Fórum Criar procedure / Função #40311
24/11/2003
0
Estou migrando meus sistemas de paradox para interbase, em um determinado sistema utilizo o seguinte para apagar os registros após um procedimento:
if Dm.banco.FindKey([wCodigo]) then begin
While (Dm.Banco.FieldbyName(´CODIGO´).AsInteger = wCodigo) and not Dm.Banco.Eof do
begin
if Dm.Banco.FieldbyName(´CODIGO´).AsInteger = wCodigo then
Dm.Banco.Delete;
end;
Agora preciso implementar procedimento paracido no bco interbase.
Ja tentei utilizar Query, seleciono todos os registro que satisfaçam a condição mas quando mando apagar:
While not Q1.Eof do
begin
Q1.Delete;
end;
mesmo que a Query tenha N registros somente dois são eliminados.
Pergunta: As funções no Db podem retornar por exemplo se foi bem sucedido ou não um determinada operação com no exemplo?
Se alguém puder me ajudar, desde já agradeço.
Preciso criar um procedure / função
if Dm.banco.FindKey([wCodigo]) then begin
While (Dm.Banco.FieldbyName(´CODIGO´).AsInteger = wCodigo) and not Dm.Banco.Eof do
begin
if Dm.Banco.FieldbyName(´CODIGO´).AsInteger = wCodigo then
Dm.Banco.Delete;
end;
Agora preciso implementar procedimento paracido no bco interbase.
Ja tentei utilizar Query, seleciono todos os registro que satisfaçam a condição mas quando mando apagar:
While not Q1.Eof do
begin
Q1.Delete;
end;
mesmo que a Query tenha N registros somente dois são eliminados.
Pergunta: As funções no Db podem retornar por exemplo se foi bem sucedido ou não um determinada operação com no exemplo?
Se alguém puder me ajudar, desde já agradeço.
Preciso criar um procedure / função
Marcotema
Curtir tópico
+ 0
Responder
Posts
25/11/2003
Paulo Renato
Ao invés de vc usar uma query para selecionar os registros e depois apagá-los via código experimente apagar diretamente via sql:
DELETE FROM TABELA WHERE CONDICAO;
Da forma que vc fez não está errado e talvez não esteja funcionando porque pode haver restrições em tabelas relacionadas. Se houver restrições o comando acima também apagará somente 2 registros, portanto é necessário eliminar onde os registros tem integridade referencial antes de apagá-los.
DELETE FROM TABELA WHERE CONDICAO;
Da forma que vc fez não está errado e talvez não esteja funcionando porque pode haver restrições em tabelas relacionadas. Se houver restrições o comando acima também apagará somente 2 registros, portanto é necessário eliminar onde os registros tem integridade referencial antes de apagá-los.
Responder
Gostei + 0
25/11/2003
Marcotema
Obrigado pela dica, deu certo.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)