Savepoint

Delphi

01/09/2009

Uso um componente chamado TOracleQuery, da suit DOA(Direct Oracle Access). Ele tem um método chamado Savepoint. Alguém me explicaria como esse método funciona? O que significa isso:

TOracleQuery.Session.Savepoint(´Meu ponto´);



Paulo

Paulo

Curtidas 0

Respostas

Osocram

Osocram

01/09/2009

olha eu não uso esse treco ae não...

Mas se for seguir o raciocínio dos DataSet o savePoint seria p vc salvar a posição do ponteiro.

Por exemplo vc tem um dbgrid com 10 registros... e vc esta posicionado no terceiro e mudou um valor, então o sistema vai ter q fazer um loop em todos os registros p recalcular o total novamente.
Se vc so fizer o loop colocando um first; e fazer o loop normal ao terminar o ponteiro estará no final e não onde o ususario tinha posicionado.
Dae que vem o SavePoint, antes do loop vc faz um SavePopint, faz o loop e ao terminar vc carrega o savePoint novamente e o cursor vai retornar onde estava, assim o usuario não perdido vendo o dbgrid rolando os registros até o final e ficando la.

Isso se esse componente está seguindo o raciocinio dos DataSet nativo do delphi.


GOSTEI 0
Paulo

Paulo

01/09/2009

Após eu ter postado a pergunta, é que eu vi essa suit de componentes tem help. E no help dele achei a resposta:
Identifies a point in a transaction to which you can later roll back. In the parameter, you can pass any name to identify the savepoint.

Demais, obrigado pela resposta.


GOSTEI 0
Fabriciocolombo

Fabriciocolombo

01/09/2009

olha eu não uso esse treco ae não... Mas se for seguir o raciocínio dos DataSet o savePoint seria p vc salvar a posição do ponteiro. Por exemplo vc tem um dbgrid com 10 registros... e vc esta posicionado no terceiro e mudou um valor, então o sistema vai ter q fazer um loop em todos os registros p recalcular o total novamente. Se vc so fizer o loop colocando um first; e fazer o loop normal ao terminar o ponteiro estará no final e não onde o ususario tinha posicionado. Dae que vem o SavePoint, antes do loop vc faz um SavePopint, faz o loop e ao terminar vc carrega o savePoint novamente e o cursor vai retornar onde estava, assim o usuario não perdido vendo o dbgrid rolando os registros até o final e ficando la. Isso se esse componente está seguindo o raciocinio dos DataSet nativo do delphi.


Isso que vc exemplificou é Bookmark e não SavePoint. O SavePoint do TClientDataSet funciona para salvar o estado atual do DataSet, para poder reverter as alterações feitas neles, como se fosse uma transação.


GOSTEI 0
Osocram

Osocram

01/09/2009

Verdade... me confundi feio
ahuahuah

Mau ae. Eu falei sobre BookMark.

[quote:316fd1c209]olha eu não uso esse treco ae não... Mas se for seguir o raciocínio dos DataSet o savePoint seria p vc salvar a posição do ponteiro. Por exemplo vc tem um dbgrid com 10 registros... e vc esta posicionado no terceiro e mudou um valor, então o sistema vai ter q fazer um loop em todos os registros p recalcular o total novamente. Se vc so fizer o loop colocando um first; e fazer o loop normal ao terminar o ponteiro estará no final e não onde o ususario tinha posicionado. Dae que vem o SavePoint, antes do loop vc faz um SavePopint, faz o loop e ao terminar vc carrega o savePoint novamente e o cursor vai retornar onde estava, assim o usuario não perdido vendo o dbgrid rolando os registros até o final e ficando la. Isso se esse componente está seguindo o raciocinio dos DataSet nativo do delphi.


Isso que vc exemplificou é Bookmark e não SavePoint. O SavePoint do TClientDataSet funciona para salvar o estado atual do DataSet, para poder reverter as alterações feitas neles, como se fosse uma transação.[/quote:316fd1c209]


GOSTEI 0
POSTAR