Limite de registros no ADO com Access

Delphi

28/03/2013

Bom dia pessoal

Tenho uma tabela em Access (2010), onde faço um filtro (select campo from tabela wehre campo = condicao), no Access sei que com essa condição existem 126.000 registros, mas no Delphi (2010) o AdoQuery só me mostra 65.530 registros.

Observei também que se tentar copiar do Access e colar no Excel (2010) só aceita copiar os 65.530 registros.
Welder.

Welder.

Curtidas 0

Respostas

Bruno Leandro

Bruno Leandro

28/03/2013

e não sei se existe esse limite para o access, mas tenta filter pelo ADO sem o where, e veja quantos registros retornam
GOSTEI 0
Welder.

Welder.

28/03/2013

e não sei se existe esse limite para o access, mas tenta filter pelo ADO sem o where, e veja quantos registros retornam


Boa tarde.

Então, fazendo um select * from tabela só apresenta os mesmos 65.530

GOSTEI 0
Welder.

Welder.

28/03/2013

e não sei se existe esse limite para o access, mas tenta filter pelo ADO sem o where, e veja quantos registros retornam


Boa tarde.

Então, fazendo um select * from tabela só apresenta os mesmos 65.530



Aparentemente o problema está no retorno do RecordCount, pois a grid está exibindo quase todos registros existentes na tabela no banco access, exceto os dois últimos.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

28/03/2013

Acabei de passar por este mesmo problema. Resolvi assim:

var
x:integer;
comando:string;
begin
   if JvSpinEdit1.Text='0' then begin
   ShowMessage('Você Selecionou 0 Registros, esta consulta não pod'+
   'e continuar!'+#13#10+'Selecione um valor >1 para ter uma pesquisa válida!');
   end else begin
  comando:='';
  comando:='select TOP '+JvSpinEdit1.Text+' *from sua_tabela where campo_a=:D2';
    with DB.malasfechadas do begin
    Active:=false;
    sql.Clear;
    sql.Add(comando+' and enviado is null');
    Parameters.ParamByName('D2').Value:=DBLookupComboBox1.Text;
    prepared:=true;
    Active:=true;
    end;
   Label3.Caption:=inttostr(DB.malasfechadas.RecordCount);
  end;

Experimente fazer assim que garanto 100%.
GOSTEI 0
Welder.

Welder.

28/03/2013

Acabei de passar por este mesmo problema. Resolvi assim:

var
x:integer;
comando:string;
begin
   if JvSpinEdit1.Text='0' then begin
   ShowMessage('Você Selecionou 0 Registros, esta consulta não pod'+
   'e continuar!'+#13#10+'Selecione um valor >1 para ter uma pesquisa válida!');
   end else begin
  comando:='';
  comando:='select TOP '+JvSpinEdit1.Text+' *from sua_tabela where campo_a=:D2';
    with DB.malasfechadas do begin
    Active:=false;
    sql.Clear;
    sql.Add(comando+' and enviado is null');
    Parameters.ParamByName('D2').Value:=DBLookupComboBox1.Text;
    prepared:=true;
    Active:=true;
    end;
   Label3.Caption:=inttostr(DB.malasfechadas.RecordCount);
  end;

Experimente fazer assim que garanto 100%.


Dessa maneira trouxe mais do que 65530 registros?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

28/03/2013

Não apenas o que eu setei no comando SQL, é ai que tá o segredo. Usa paginação como dos Sites. Página 1 com alguns regisrtos pagina 2 com mais registros, e assim por diante.
GOSTEI 0
Welder.

Welder.

28/03/2013

Não apenas o que eu setei no comando SQL, é ai que tá o segredo. Usa paginação como dos Sites. Página 1 com alguns regisrtos pagina 2 com mais registros, e assim por diante.



bom usei sua a ideia. Um pouco diferente claro. no meu caso tive que colocar opções de colocar o order by em ordem crescente e decrescente. Tipo: Select top StrToInt(edit.text ) campos from tabela where condição order by campo ASC.

Mas se alguém souber porque o AdoQuery.RecordCout só conta os 65530 primeiros registros e se tiver como contornar, deixa ai a dica.
GOSTEI 0
Welder.

Welder.

28/03/2013

Galera eu acho que descobri.
Com Select TOP campo1, campo2, campo3, etc from tabela where condicao, trouxe todos registros no adoquery.recordcount
Fica ai a dica.
GOSTEI 0
POSTAR