Ajuda: dbgrid 10 registros por vez

Delphi

11/12/2013

Como faço para exibir no dbgrid apenas 10 registros por vez? E depois programar um botõa avançar (+10) e retornar (-10)?
Pedro

Pedro

Curtidas 0

Respostas

Marcos Saffran

Marcos Saffran

11/12/2013

Olá Pedro,

você pode alterar o comando select da query, incluindo o limit.

select * from 'tabela' limit 10 (buscará 10 registros)

select * from 'tabela' limit 5, 10 (buscará os registros de 6 a 10)
GOSTEI 0
Pedro

Pedro

11/12/2013

Blz Marcos,

Entendi. Mas e no caso do botão para avançar e retornar? Saberia me dizer como ficaria?

Olá Pedro,

você pode alterar o comando select da query, incluindo o limit.

select * from 'tabela' limit 10 (buscará 10 registros)

select * from 'tabela' limit 5, 10 (buscará os registros de 6 a 10)
GOSTEI 0
Marcos Saffran

Marcos Saffran

11/12/2013

Blz Marcos,

Entendi. Mas e no caso do botão para avançar e retornar? Saberia me dizer como ficaria?

Olá Pedro,

você pode alterar o comando select da query, incluindo o limit.

select * from 'tabela' limit 10 (buscará 10 registros)

select * from 'tabela' limit 5, 10 (buscará os registros de 6 a 10)


Para o Primeiro select tente:

select * from 'tabela' limit 0, 10

Para o Segundo:

select * from 'tabela' limit 10, 10

usando o limit inicio, quantidade de linhas, então é só criar uma variável global que guardará o início, assim para avançar será a variável global + 10 e para retroceder será a variável global - 10 (limitando a 0).
GOSTEI 0
Pedro

Pedro

11/12/2013

Marcos, bom dia

Desculpa a minha ignorancia, mas não entedi muito bem a questão da variavél global. Teria como me dar um explo de código?

Desde já agradeço,

Blz Marcos,

Entendi. Mas e no caso do botão para avançar e retornar? Saberia me dizer como ficaria?

Olá Pedro,

você pode alterar o comando select da query, incluindo o limit.

select * from 'tabela' limit 10 (buscará 10 registros)

select * from 'tabela' limit 5, 10 (buscará os registros de 6 a 10)


Para o Primeiro select tente:

select * from 'tabela' limit 0, 10

Para o Segundo:

select * from 'tabela' limit 10, 10

usando o limit inicio, quantidade de linhas, então é só criar uma variável global que guardará o início, assim para avançar será a variável global + 10 e para retroceder será a variável global - 10 (limitando a 0).
GOSTEI 0
Pedro

Pedro

11/12/2013

O 'limit' não funcionou no firibird o que faço?

Marcos, bom dia

Desculpa a minha ignorancia, mas não entedi muito bem a questão da variavél global. Teria como me dar um explo de código?

Desde já agradeço,

Blz Marcos,

Entendi. Mas e no caso do botão para avançar e retornar? Saberia me dizer como ficaria?

Olá Pedro,

você pode alterar o comando select da query, incluindo o limit.

select * from 'tabela' limit 10 (buscará 10 registros)

select * from 'tabela' limit 5, 10 (buscará os registros de 6 a 10)


Para o Primeiro select tente:

select * from 'tabela' limit 0, 10

Para o Segundo:

select * from 'tabela' limit 10, 10

usando o limit inicio, quantidade de linhas, então é só criar uma variável global que guardará o início, assim para avançar será a variável global + 10 e para retroceder será a variável global - 10 (limitando a 0).
GOSTEI 0
Marcos Saffran

Marcos Saffran

11/12/2013

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    btnRetroceder: TButton;
    btnAvancar: TButton;
    Edit1: TEdit;
    procedure btnAvancarClick(Sender: TObject);
    procedure btnRetrocederClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  LinhaBD : Integer = 0; //variável global, iniciando com 0
implementation

{$R *.dfm}

procedure TForm1.btnAvancarClick(Sender: TObject);
begin
  LinhaBD := LinhaBD + 10;
  //abaixo você colocará os comandos do select
  'select * from 'tabela' limit ' + LinhaBD + ',10;';
end;

procedure TForm1.btnRetrocederClick(Sender: TObject);
begin
  LinhaBD := LinhaBD - 10;
  if LinhaBD < 0 then
    LinhaBD := 0;
  //abaixo você colocará os comandos do select
  'select * from 'tabela' limit ' + LinhaBD + ',10;';

end;

end.
GOSTEI 0
Marcos Saffran

Marcos Saffran

11/12/2013

Para as versões acima da 2 do firebird, há o 'rows'.

Depois do select você coloca
ROWS <m> [TO <n>]

onde o m é a linha inicial e o n é a linha final.

então no exemplo que enviei coloque assim
'select * from 'tabela' rows ' + IntToStr(LinhaBD) + ' to ' + IntToStr(LinhaBD + 10);

Obs:
1 - o ROWS deve ficar no final do comando.
2 - o m e o n devem ser maior ou igual a 1, portanto altere o valor inicial da variável LinhaBD para 1 e no if do botão retroceder troque o zero pelo um 1.
GOSTEI 0
Pedro

Pedro

11/12/2013

Agora consegui! Muito obrigado mesmo pela ajuda e paciência.

Abs amigo,

Para as versões acima da 2 do firebird, há o 'rows'.

Depois do select você coloca
ROWS <m> [TO <n>]

onde o m é a linha inicial e o n é a linha final.

então no exemplo que enviei coloque assim
'select * from 'tabela' rows ' + IntToStr(LinhaBD) + ' to ' + IntToStr(LinhaBD + 10);

Obs:
1 - o ROWS deve ficar no final do comando.
2 - o m e o n devem ser maior ou igual a 1, portanto altere o valor inicial da variável LinhaBD para 1 e no if do botão retroceder troque o zero pelo um 1.
GOSTEI 0
POSTAR