Cancelar operacao de inclusao de dados de forma limpa

Delphi

10/04/2007

Criei um programa para inserir dados de um banco de dados para outro. Quando se clica no botao Importar, eu o desativo para evitar problemas de dois cliques sucessivos. Tem um botao de Fechar a operacao, mas me retorna erro de dataset. Entretanto, qual a maneira mais limpa de cancelar o processo de importacao, sem deixar lixo ou obter mensagens de erro referentes a clientdataset. Se estivar num processo de insercao via transacao, insere o ultimo registro apos o clique de cancelamento, fecha os clientdatasets e finalmente aborta a operacao. Alguem tem uma sugestao limpa, e se possivel, um trecho de codigo para acelerar meu desenvolvimento?


Bugaloobr

Bugaloobr

Curtidas 0

Respostas

Pestana_

Pestana_

10/04/2007

eu uso os componentes ibx, mas acredito que deve ser semelhante, se estiver dados para serem gravados voce grava a transação (Transaction.Commit) ou se for simplesmente fechar a operação (Transaction.Rollback).

é isso que vc queria?


flw


GOSTEI 0
Bugaloobr

Bugaloobr

10/04/2007

A resolucao eh por ai. No caso, supondo q o clique no botao Cancelar seja feita no meio do processo de inclusao de um registro. Neste caso, ele insere o registro atual e finalmente cancela a operacao global de insercao. Tentei, mas ainda nao consegui implementar uma rotina if conexaoBD.intrasaction then -- dataset.insercao.commit -- break ou cancel. Eh neste ponto que quero uma solucao limpa, e onde estou com problema para implementar.


GOSTEI 0
Pestana_

Pestana_

10/04/2007

ainda não consegui entender direito, é isso que vc quer?

no botão importar teria que ser definido mais ou menos assim:

try
....
....
....
Transaction.Commit;
exception
Transaction.Rollback;
end;


no botao Fechar operação:

....
....
....
Transaction.Rollback;

com isso quando voce clicar no botão Fechar operação todos os registros inseridos no banco
serão apagados.


GOSTEI 0
POSTAR