Limite de registros no ADO com Access

28/03/2013

2

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.
Responder

Posts

28/03/2013

Bruno Leandro

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

19/04/2013

Welder.

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

Responder

05/05/2013

Welder.

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.
Responder
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%.
Responder

06/05/2013

Welder.

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?
Responder
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.
Responder

06/05/2013

Welder.

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.
Responder

07/05/2013

Welder.

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.
Responder