Fórum Uso de Transaction - Duvida #41379
08/01/2004
0
Uso esta combinação e estou muito satisfeito, mas passei a ter alguns problemas, principalmente quanto a cadastro
Nos cadastros uso compnentes DBEdit, Dbware, de varios tipos.
Mas na inclusões de cadastros nunca usei Tramsaction, sempre usei quando fazia inclusões sem componentes Dbware(Dbedit... etc), mas percebni que algumas vezes o cadastro não gravava embora sempre usei Applyupdate e post.
Então me remendaram a usar transaction tbm neste tipo de cadastro.
Uma pergunta,
Sempre use transactiond entro de um Try except, e entre eles uma instrução SQL.
Neste tipo de cadastro que é na verdade um formulario, que quando crio coloco a tabela em insert, como uso a TRansaction
na ora de colocar a tabela em Insert ?
Nilson
T+
Nilson Junior
Curtir tópico
+ 0Posts
08/01/2004
Afarias
|quando fazia inclusões sem componentes Dbware(Dbedit... etc), mas
|percebni que algumas vezes o cadastro não gravava embora sempre
|usei Applyupdate e post.
O ClientDataSet/DataSetProvider controlam as transações automaticamente (de forma implícita) -- isso funciona muito bem desde q vc nunca ´toque´ nestas transações -- e desde q seus Mestre-Detalhe sejam feitos com Nested DataSets.
|Então me remendaram a usar transaction tbm neste tipo de cadastro.
Não é necessário em geral... mas, depende do caso
|Sempre use transactiond entro de um Try except, e entre eles uma
|instrução SQL.
1- Abre a transação
2- Faz suas operações
3- Fecha a transação (com commit ou rollback)
|Neste tipo de cadastro que é na verdade um formulario, que quando crio
|coloco a tabela em insert, como uso a TRansaction
|na ora de colocar a tabela em Insert ?
Quando vc dá um Open no ClientDataSet -- uma transação é iniciada, o SELECT é executado, os registros são trazidos e a transação é fechada com um COMMIT.
Como vc passa a trabalhar com os registros em memória, não é necessário manter uma transação aberta.
A transação deve ser aberta (se vc pretende controlar explicitamente suas transações) antes do ApplyUpdates, e encerrada logo após -- existem outras formas, mas isso é o ´básico´.
T+
Gostei + 0
08/01/2004
Nilson Junior
é ainda necessário dar Commit
USO DBEXPRESS
Gostei + 0
08/01/2004
Afarias
Caso vc perceba q as alterações não foram gravadas, provavelmente é pq algum erro ocorreu durante a aplicação das atualizações.
A função ApplyUpdates retorna o número de erros ocorridos, então::
if CDS.ApplyUpdates(0) > 0 then ShowMessage(´algum erro ocorreu´);
vc pode tb usar o evento OnReconcileError do ClientDataSet para capturar os erros.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)