Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Miss

GotoBookMark

Recommended Posts

Bom dia galera!

to usando a seguinte procedure pra somar umas linhas selecionadas:

 

var

i: integer;

Sum: Double;

begin

for i:= 0 to grd.SelectedRows.Count do

begin

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1];

Sum:= Sum + qryValor.Value;

end;

ShowMessage(FloatToStr(Sum));

end;

 

ta fungando certinho ,,, mais ate hj naum consegui entender sobre o metodo GotoBookMark.

 

na procedure acima, qdo coloque qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1]; oke faz issu?

Alguem poderia me explicar pra q e como usar o GotoBookMark???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Implements a virtual method to position the dataset on the record to which a specified bookmark points.

 

Delphi syntax:

 

procedure GotoBookmark(Bookmark: TBookmark);

 

C++ syntax:

 

void __fastcall GotoBookmark(void * Bookmark);

 

Description

 

GotoBookmark calls an internal method that is an empty stub in TDataSet. Descendants of TDataSet redeclare and implement the internal method so that GotoBookmark makes the record identified by the Bookmark parameter active.

 

Note: Unidirectional datasets do not support bookmarks. Calling GotoBookmark on a unidirectional dataset does not change the active record.

 

GotoBookmark é um método virtualpara posicionar o dataser no registro o qual é especificado por um bookmark(ponteiro)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa!

kra

td bom ... ateh ai td bem ...

 

agora naum consigo entender qual seria a diferenca em fazer assim:

 

var

i: integer;

Sum: Double;

begin

for i:= 0 to grd.SelectedRows.Count do

begin

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1];

Sum:= Sum + qryValor.Value;

end;

ShowMessage(FloatToStr(Sum));

end;

 

 

ou assim

 

var

i: integer;

Sum: Double;

begin

for i:= 0 to grd.SelectedRows.Count do

begin

Sum:= Sum + qryValor.Value;

end;

ShowMessage(FloatToStr(Sum));

end;

 

naum entendi o pq de usa - lo,,,, ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra... mais oke eu qria entender era nesse meu caso aki kra:

 

var

i: integer;

Sum: Double;

begin

for i:= 0 to grd.SelectedRows.Count do // aki ele vai passar pelas linhas selecionadas

begin

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1]; // aki eu qria saber oke ele vai fazer

Sum:= Sum + qryValor.Value; // aki ele soma

end;

ShowMessage(FloatToStr(Sum));

end;

 

 

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1]; // aki eu qria saber oke ele vai fazer

 

pra q ele ta me servindo nesse meu codigo? Poderia fazer o msm sem usar o GotoBookMark?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você observar bem oo seu code notará que:

 

Estás dentro de um FOR...

 

Esse for está pegando linhas de um GRID...

 

por isso o GOTO BOOKMARK...

var

i: integer;

Sum: Double;

begin

for i:= 0 to grd.SelectedRows.Count do // aki ele vai passar pelas linhas selecionadas

begin

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1]; // aki eu qria saber oke ele vai fazer

Sum:= Sum + qryValor.Value; // aki ele soma

end;

ShowMessage(FloatToStr(Sum));

end;

 

você poderia fazer o mesmo... dando um .Next no final do for, antes do end... mas você concorda que de qq forma você teria que ponteirá-la no registro corrente do GRID?

 

por isso o uso...

 

var

i: integer;

Sum: Double;

begin

qry.GotoBookMark(Pointer(grd.SelectedRows.Items[i - 1]; // aki ele posiciona a query...

for i:= 0 to grd.SelectedRows.Count do // aki ele vai passar pelas linhas selecionadas

begin

Sum:= Sum + qryValor.Value; // aki ele soma

qry.next;

end;

ShowMessage(FloatToStr(Sum));

end;

mas iria ser muito ruim... por isso o uso do Gotobookmark, entendeu????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahhh bixo axo q agora entendi ...

veja fiz um teste:

 

var

i: integer;

begin

for i:= 1 to grd.SelectedRows.Count do //aki ele passa pelas linhas selecionadas...

begin

qry.GotoBookmark(Pointer(grd.SelectedRows.Items[i - 1])); // aki ele aponta exatamente para a linha selecionada onde esta passando a var i, para q possa acessar a (qry.Valor)

ShowMessage(qryHISTORICO.Value + ' - ' + FloatToStr(qryVALOR.Value));

qry.Next;

end;

seria issu kra?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.