Ir para conteúdo

POWERED BY:

Arquivado

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

h1d3

Mostrar os 10 ultimos e os proximos 10 registros

Recommended Posts

Eae galera beleza?Entao tv precisandu duma ajuda aki,deve ser coisa boba,mas to quebrandu a kbeca kk,qria sabe como seria o comando pra mostrar o 10 ultimos e os 10 proximos registros,contando do registro que esta em foco no momento,do jeito q eu fiz precisaria dar um select pra cada consulta

SELECT TempRama1,Tempo FROM testerama,testetemporama WHERE testerama.Id > 5 AND testerama.Id < 10 LIMIT 2

ai para os proximo is ter q da mais um select com id >10 <15...nm vai fik mt legal,alguem tem uma ideia ai???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Uma idéia, usando Dephi...

 

Bom... o que você precisa é um jeito de não mostrar todas as linhas de uma query (que às vezes pode ser enorme) de uma vez, criando uma espécie de "navegador" de dez em dez linhas certo?

 

Para algo assim, uso uma rotina em Delphi, nas minhas aplicações web.

 

Então, considerando uma query que retorne muitos registros como:

select nome, telefonefrom `acme`.`clientes`where nome between 'A' and 'Z'

Uso quatro variáveis: iRecNo, iFirst, iLast, iTTLin, sendo, respectivamente, Número do Registro Atual, como referência, Primeiro Registro, Ultimo Registro, Quantidade de Linhas Desejadas;

 

Quando abro a query pela primeira vez, a partir do navegador (iEx p.e.), o programa recebe

 

iRecNo=1

iFirst =1

iLast = 10

iTTLin=10

 

Com um botão "Página Anterior" e um botão "Página Seguinte", respectivamente, diminuimos ou incrementamos a variável iRecNo para, com um comando "moveby" selecionar os registros a serem mostrados no browser...

 

If sBotaoTec="pagprior" then  // Se clicado o botão Página Anterior  Begin	// Verifica se pode diminuir	If iRecNo-iTTLin>0 then	  Begin		iRecNo   := iRecNo-iTTLin;		iFirst   := iRecNo;		iLast	:= (iRecNo+iTTLin)-1;		bOk2Mov  := True;		iReg2Mov := -iTTLin;	  End;	{EndIf iRecNo-...}  EndElse  // Se clicado o botão Página Seguinte  Begin	// Verifica se pode aumentar	If iRecNo+iTTLin<=iRecordsCount then  // (iRecordsCount=Total de Registros da Query)	  Begin		iRecNo   := iRecNo+iTTLin;		iFirst   := iRecNo;		iLast	:= (iRecNo+iTTLin)-1;		iReg2Mov := iTTLin;	  End;	{EndIf iRecNo+iTTLin...}  End;{EndIf}If bOk2Mov then  Begin	// Se é para mostrar os Registros	iLin := 1;	Query.MoveBy(iReg2Mov); // avança ou retrocede n registros;	While (not Query.Eof) and (Query.RecNo>=iFirst) and (Query.RecNo<=iLast) do Begin	  StringGrid.Cells[1,iLin] := Query.FieldByName('nome').AsString;	  Query.Next;	  Inc(iLin);	End;{While (not Query...)}  End;{EndIf}

Ok?

 

Claro que pode-ser fazer isso usando outras linguagens, php, vb, etc......

 

Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po legal eu tb fzia issu aki no VB,dum jeito bem parecido...Mas eu ultilizo issu pra seguinte funcao:Eu possuo um grafico de linhas,q tem um botao vai e volta aonde o vai anda 10 minutos do graficos e o volta atraza 10 minutos,e um grafico de automacao que de 1 em 1 minuto cria um registro na tabela de historico a qual gera as informacoes para o grafico...no vb eu consegui fz,mas no sitema novo,q é ASP/C#.Net,nao estou conseguindo,consegui fz ele mostra o primeiro e ultimo registro...agora ele mostra os 10 proximos e os 10 anteriores nao estou conseguindo...Tentei "migrar" a formula que usava no vb e nao funcionou =/,to sem ideias ja....Esse e um exemplo de q eu usava pra voltar no VB mas ja ta com a sintaxe de c#,so num funciono

int inicio; int fim; object sql; sql = SqlDataSource1.SelectCommand = "SELECT temprama1,tempo FROM testetemporama,testerama WHERE id BETWEEN " & inicio & " AND " & fim & " ORDER BY id ASC LIMIT 10"; if ((inicio - 10) <= 1) { inicio = 1; fim = 10; } else { inicio = inicio - 10; fim = fim - 10; }

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.