Fórum varrer dataset e listar dados em ordem intercalada #413149
23/02/2012
0
meu dataset tem 2 campos: codigo e quantidade e estão ordenados por quantidade do menor para o maior, dai preciso lista esses dados em ordem intercalada nesse sentido:
listar primeiro registro e depois o ultimo,
listar segundo registro e depois o penultimo,
listar terceiro registro e depois o antepenultimo...
e assim por diante....
tentei usando o MoveBy do dataset mas não to obtendo sucesso...
Joao Moreira
Curtir tópico
+ 0Posts
23/02/2012
Joao Moreira
//mostrando o primeiro registro
Showmessage(FieldByName(estabelecimento).AsString + - + FieldByName(qtd).AsString);
MoveBY(qtdReg-1);
//mostrando o ultimo registro
Showmessage(FieldByName(estabelecimento).AsString + - + FieldByName(qtd).AsString);
moveby(-qtdReg);
next;
//mostrando o segundo registro
Showmessage(FieldByName(estabelecimento).AsString + - + FieldByName(qtd).AsString);
Dec(qtdReg);
Gostei + 0
23/02/2012
Gustavo Bretas
Rapaz, eu vi seu post na parte de SQL Server e estou tentando entender onde vc quer chegar com isso, mas esta complicado... rsrs!
A questão do intercalado eu entendi, mas e quando vc tiver um número impar de registros?
Se vc disser mais detalhes da sua aplicação e o que vc quer fazer seja mais tranquilo para te ajudar!
Gostei + 0
23/02/2012
Joao Moreira
Gostei + 0
23/02/2012
Joao Moreira
Gostei + 0
23/02/2012
Gustavo Bretas
Fiz aqui na lógica que vc descreveu, tenta aplicar no seu sistema!
Abraço!
Gostei + 0
23/02/2012
Joao Moreira
with qry do
begin
sql.Add(select a.estabelecimento, COUNT(*) as qtd from estabelecimento a);
sql.Add(inner join alunos b on (a.estabelecimento = b.id_escola));
sql.Add(group by a.estabelecimento order by qtd);
open;
x := 1;
y := RecordCount;
i := 1;
while x <= y do
begin
RecNo := x;
memo1.Lines.add(FieldByName(estabelecimento).AsString + - + FieldByName(qtd).AsString );
RecNo := y;
memo1.Lines.add(FieldByName(estabelecimento).AsString + - + FieldByName(qtd).AsString );
Inc(x);
Dec(y);
Inc(i)
end;
Showmessage(IntToStr(i));
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)