Pegar campos da Segunda linha do DBGRID

Delphi

24/11/2003

Olá Meus Colegas
Estou fazendo uma rotina para pegar os campos que quero de um dbgrid,
e na verdade não sei que que acontecesse que ele só me retorna somente os campos da primeira linha, e da segunda em diante não.

OBS:
Antes de pegar os campos eu faço um select e exibo a consulta neste dbgrid

vejam.....

procedure TFRM_PRINCIPAL.BitBtn7Click(Sender: TObject);
var
total0,resultado0,resultado10,resultado20,resultado30,
resultado40,resultado50,resultado60 :array [1..10] of string;
i:integer;

begin

for i := 1 to dbgrid1.DataSource.DataSet.RecordCount //varia de linha ou casos que possuo no dbgrid
do begin
resultado0[i]:=pchar(dbgrid1.Fields[0].AsString); //recebe os campos q quero do dbgrid
resultado10[i]:=pchar(dbgrid1.Fields[1].AsString);
resultado20[i]:=pchar(dbgrid1.Fields[3].AsString);
resultado30[i]:=pchar(dbgrid1.Fields[4].AsString);
resultado40[i]:=pchar(dbgrid1.Fields[8].AsString);
resultado50[i]:=pchar(dbgrid1.Fields[7].AsString);

total0[i]:=´ INTERNAÇÕES ´ +
´ Codigo Prestador >>´+ resultado0[i] +
´ Nome Prestador >> ´+ resultado10[i] +
´ Nome Associado >> ´+ resultado20[i] +
´ Data Procedimento >> ´+ resultado30[i] +
´ Dias Ate Hoje Internados >> ´+ resultado40[i] +
´ Diagnostico Doença >> ´+ resultado50[i] ;

showmessage(´´+total0[i]);

end;

Vamos supor que o meu numero de registro =2
(dbgrid1.DataSource.DataSet.RecordCount)

ele começa a pegar os campos da minha primeira linha
e não passa para a segunda linha,
Bom vcs sabem porque acontece isto?
Porque ele não pula para a segunda linha do DBGRID e fica sempre na primeira?
Desde já agradeço sua Opinião ou Dica


Omegatrue

Omegatrue

Curtidas 0

Respostas

Tocotaura

Tocotaura

24/11/2003

voce precisa incrementar a variavel ´i´ dentro do ´for´ para ele ir pulando de um registro para o outro até que chegue no final da tabela.


GOSTEI 0
Hatrix

Hatrix

24/11/2003

tente usar isso:

procedure TFRM_PRINCIPAL.BitBtn7Click(Sender: TObject);
var total0,resultado0,resultado10,resultado20,resultado30,
resultado40,resultado50,resultado60 :array [1..10] of string;
i:integer;
begin

resultado0[i] := ´´;
resultado10[i] := ´´;
resultado20[i] := ´´;
resultado30[i] := ´´;
resultado40[i] := ´´;
resultado50[i] := ´´;

with dbgrid1.DataSource.DataSet do
begin
First;
while not Eof do
begin
resultado0[i] := dbgrid1.Fields[0].AsString + dbgrid1.Fields[0].AsString;
resultado10[i]:= dbgrid1.Fields[1].AsString + dbgrid1.Fields[1].AsString;
resultado20[i]:= dbgrid1.Fields[3].AsString + dbgrid1.Fields[3].AsString;
resultado30[i]:= dbgrid1.Fields[4].AsString + dbgrid1.Fields[4].AsString;
resultado40[i]:= dbgrid1.Fields[8].AsString + dbgrid1.Fields[8].AsString;
resultado50[i]:= dbgrid1.Fields[7].AsString + dbgrid1.Fields[7].AsString;
//////
Next;// Não esqueçer desse cara, se não trava.
end;
end;
total0[i] := ´ INTERNAÇÕES ´ +
´ Codigo Prestador >>´ + resultado0[i] +
´ Nome Prestador >> ´ + resultado10[i] +
´ Nome Associado >> ´ + resultado20[i] +
´ Data Procedimento >> ´ + resultado30[i] +
´ Dias Ate Hoje Internados >> ´ + resultado40[i] +
´ Diagnostico Doença >> ´ + resultado50[i];
showmessage(´´+total0[i]);
end;


mas eu não entendi direito o q vc quer fazer.
esses campos no grid são numéricos? se for, vai ter q usar de outro jeito.
quase igual... só muda o tipo de variável.


GOSTEI 0
Omegatrue

Omegatrue

24/11/2003

Agradeço a todos irei fazer o teste dos mesmos
Valeu mesmo


GOSTEI 0
POSTAR