GARANTIR DESCONTO

Fórum Saber se a tabela está vazia #279456

29/04/2005

0

Alguém sabe como verificar, via código, se uma tabela Paradox, criada pelo Database Desktop está vazia?

VLW


Sérgio Gobbo

Sérgio Gobbo

Responder

Posts

29/04/2005

Raserafim

você pode utilizar a função RecordCount da query ou da table, e se retornar o valor zero é pq está vazia.
if Query.RecordCount = 0 then
  showmessage(´tabela vazia´);



Responder

Gostei + 0

29/04/2005

Otto

você pode utilizar a função RecordCount da query ou da table, e se retornar o valor zero é pq está vazia.
if Query.RecordCount = 0 then
  showmessage(´tabela vazia´);


pra saber se esta vazia, eu napo uso mais recordcount, pq em alguns casos(bde+firebird), mesmo tendo registro o resultado é = -1

é bom usar o isEmpty

if Query.isempty then
vazia


:wink:


Responder

Gostei + 0

27/03/2006

Lorde_morte.

Esta função sempre retorna true.

Como resolver este problema?

function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean;
begin
  RESULT:= NOT TABELA.IsEmpty;
end;


A falha do IsEmpty esta matando meu FrameWork. :cry:


Responder

Gostei + 0

27/03/2006

Otto

Esta função sempre retorna true. Como resolver este problema?
function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean;
begin
  RESULT:= NOT TABELA.IsEmpty;
end;
A falha do IsEmpty esta matando meu FrameWork. :cry:



ja tentou assim:

function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean;
begin
  Tabela.FetchAll; // linha incluida
  RESULT:= NOT TABELA.IsEmpty;
end;


:?:


Responder

Gostei + 0

27/03/2006

Martins

Alguém sabe como verificar, via código, se uma tabela Paradox, criada pelo Database Desktop está vazia? VLW


Tente assim:

  Tabela.Close;
  If Tabela.IsEmpty then
     ShowMessage(´Tabela vazia...´)
  else
     ShowMessage(´Contem registros...´);
...


Boa sorte


Responder

Gostei + 0

27/03/2006

Nerdex

Inclua o camando Table.First antes do teste com Table.IsEmpty, pq se você tiver uma tabela que contenha registros e estiver apontando para o último registro; Table.IsEmprty retornará true - por isso : [b:d51cd7b2a2]Table.First antes de chamar Table.IsEmpty[/b:d51cd7b2a2]

:wink:


Responder

Gostei + 0

27/03/2006

Martins

Inclua o camando Table.First antes do teste com Table.IsEmpty, pq se você tiver uma tabela que contenha registros e estiver apontando para o último registro; Table.IsEmprty retornará true - por isso : [b:06737e3e3b]Table.First antes de chamar Table.IsEmpty[/b:06737e3e3b] :wink:


Valew complemento [b:06737e3e3b]Nexdex[/b:06737e3e3b], quanto tempo meu nobre colega, um prazer tê-lo participando desse tópico.

Fica assim então.

Tabela.Close; 
Tabela.First;
  If Tabela.IsEmpty then 
     ShowMessage(´Tabela vazia...´) 
  else 
     ShowMessage(´Contem registros...´); 
... 



Boa sorte!!


Responder

Gostei + 0

27/03/2006

Emerson Nascimento

Inclua o camando Table.First antes do teste com Table.IsEmpty, pq se você tiver uma tabela que contenha registros e estiver apontando para o último registro; Table.IsEmprty retornará true - por isso : [b:6a1429e8d0]Table.First antes de chamar Table.IsEmpty[/b:6a1429e8d0] :wink:


desculpe, mas essa informação não procede. o IsEmpty funciona estando o ponteiro no primeiro ou no último registro. Talvez tenha sido feita confusão com o Eof. Este sim necessita de estar no primeiro registro para não retornar true (a menos, é claro, que haja apenas 1 registro).

Por que [b:6a1429e8d0]não[/b:6a1429e8d0] usar RecordCount nesse caso?
Porque Recordcount irá te retornar o número de registros. Obviamente se retornar um número maior que 0 (zero) é porque há registros, porém há um custo: ele varre toda a tabela para contar o número de registros abertos. Se a tabela tiver 2000 registros, ele irá do primeiro ao último, somando até retornar 2000. isso seria necessário se você quisesse saber quantos registros há na tabela, para montar um gauge ou uma barra de progresso.
no caso de apenas querer saber se há algum registro, use IsEmpty, porque se houver ao menos um registro (seja o primeiro, ou último, ou um intermediário) a função retorna imediatamente, não precisando varrer o dataset.


Responder

Gostei + 0

27/03/2006

Emerson Nascimento

[quote:fe28410c8f=´NerdeX´]Inclua o camando Table.First antes do teste com Table.IsEmpty, pq se você tiver uma tabela que contenha registros e estiver apontando para o último registro; Table.IsEmprty retornará true - por isso : [b:fe28410c8f]Table.First antes de chamar Table.IsEmpty[/b:fe28410c8f] :wink:


Valew complemento [b:fe28410c8f]Nexdex[/b:fe28410c8f], quanto tempo meu nobre colega, um prazer tê-lo participando desse tópico.

Fica assim então.

Tabela.Close; 
Tabela.First;
  If Tabela.IsEmpty then 
     ShowMessage(´Tabela vazia...´) 
  else 
     ShowMessage(´Contem registros...´); 
... 



Boa sorte!![/quote:fe28410c8f]

Só uma correção no código do nosso colega Martins: você não conseguirá saber nada sobre uma tabela fechada. na verdade você deveria verificar se a tabela está aberta, e não fechá-la.
function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean; 
begin
  if not Tabela.Active then
    try
      Tabela.Open;
    except
    end;

  try
    result := not Tabela.IsEmpty; 
  except
    result := false;
  end;
end;



Responder

Gostei + 0

27/03/2006

Martins

[quote:69cbe29d0e=´Martins´][quote:69cbe29d0e=´NerdeX´]Inclua o camando Table.First antes do teste com Table.IsEmpty, pq se você tiver uma tabela que contenha registros e estiver apontando para o último registro; Table.IsEmprty retornará true - por isso : [b:69cbe29d0e]Table.First antes de chamar Table.IsEmpty[/b:69cbe29d0e] :wink:


Valew complemento [b:69cbe29d0e]Nexdex[/b:69cbe29d0e], quanto tempo meu nobre colega, um prazer tê-lo participando desse tópico.

Fica assim então.

Tabela.Close; 
Tabela.First;
  If Tabela.IsEmpty then 
     ShowMessage(´Tabela vazia...´) 
  else 
     ShowMessage(´Contem registros...´); 
... 



Boa sorte!![/quote:69cbe29d0e]

Só uma correção no código do nosso colega Martins: você não conseguirá saber nada sobre uma tabela fechada. na verdade você deveria verificar se a tabela está aberta, e não fechá-la.
function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean; 
begin
  if not Tabela.Active then
    try
      Tabela.Open;
    except
    end;

  try
    result := not Tabela.IsEmpty; 
  except
    result := false;
  end;
end;
[/quote:69cbe29d0e]

Valew pelo observação e correção [b:69cbe29d0e]emerson.en[/b:69cbe29d0e], foi falta de atenção, não posso saber o q tem em um armário se ele estiver fechado :wink:
[b:69cbe29d0e]
Corrigindo: [/b:69cbe29d0e][b:69cbe29d0e][color=red:69cbe29d0e]Nexdex[/color:69cbe29d0e][/b:69cbe29d0e] para [b:69cbe29d0e][color=blue:69cbe29d0e]Nerdex[/color:69cbe29d0e][/b:69cbe29d0e]

valew galera!! :D


Responder

Gostei + 0

28/03/2006

Nerdex

[quote:a7a16b7038=´emerson.en ligado´]...Talvez tenha sido feita confusão com o Eof...[/quote:a7a16b7038]

Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)


Responder

Gostei + 0

29/11/2006

Facc

[quote:dfbba0c5f3=´emerson.en ligado´]...Talvez tenha sido feita confusão com o Eof...


Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)[/quote:dfbba0c5f3]


Revivendo o tópico...

Estou tendo problemas com [b:dfbba0c5f3]DMDados.TControleReceber.IsEmpty[/b:dfbba0c5f3]
pois minha tabela possui registros, e mesmo assim ele esta trazendo que está vazia, tentei com [b:dfbba0c5f3]DMDados.TControleReceber.RecordCount = 0[/b:dfbba0c5f3], porém tbm está trazendo valor 0 (zero). Já coloquei o [i:dfbba0c5f3][b:dfbba0c5f3]First, Refresh, Open, Close[/b:dfbba0c5f3][/i:dfbba0c5f3], mas sem resultado. O que posso fazer pra resolver?


Responder

Gostei + 0

29/11/2006

Paullsoftware

[quote:d8fd1fd047=´NerdeX´][quote:d8fd1fd047=´emerson.en ligado´]...Talvez tenha sido feita confusão com o Eof...


Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)[/quote:d8fd1fd047]


Revivendo o tópico...

Estou tendo problemas com [b:d8fd1fd047]DMDados.TControleReceber.IsEmpty[/b:d8fd1fd047]
pois minha tabela possui registros, e mesmo assim ele esta trazendo que está vazia, tentei com [b:d8fd1fd047]DMDados.TControleReceber.RecordCount = 0[/b:d8fd1fd047], porém tbm está trazendo valor 0 (zero). Já coloquei o [i:d8fd1fd047][b:d8fd1fd047]First, Refresh, Open, Close[/b:d8fd1fd047][/i:d8fd1fd047], mas sem resultado. O que posso fazer pra resolver?[/quote:d8fd1fd047]
desculpe a iginorância, mais vc já tentou contar os registros olhando pra eles???
tipo coloque um dbgrid abra a tabela, dê um last depois pessa pra ver os o total de registros...

no botão faça:
tabela.open;
tabela.last;
if tabela.isempty then caption := ´Tabela Vazia´
else 
caption := inttostr(tabela.recordcount);

é fazendo testes que vamos descobrir onde estão realmente os problemas... será que vc vai ta vendo os dados e mesmo assim vai está retornando ´0´ zero!! :wink:


Responder

Gostei + 0

29/11/2006

Facc

[quote:e9dde374b4=´Facc´][quote:e9dde374b4=´NerdeX´][quote:e9dde374b4=´emerson.en ligado´]...Talvez tenha sido feita confusão com o Eof...


Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)[/quote:e9dde374b4]


Revivendo o tópico...

Estou tendo problemas com [b:e9dde374b4]DMDados.TControleReceber.IsEmpty[/b:e9dde374b4]
pois minha tabela possui registros, e mesmo assim ele esta trazendo que está vazia, tentei com [b:e9dde374b4]DMDados.TControleReceber.RecordCount = 0[/b:e9dde374b4], porém tbm está trazendo valor 0 (zero). Já coloquei o [i:e9dde374b4][b:e9dde374b4]First, Refresh, Open, Close[/b:e9dde374b4][/i:e9dde374b4], mas sem resultado. O que posso fazer pra resolver?[/quote:e9dde374b4]
desculpe a iginorância, mais vc já tentou contar os registros olhando pra eles???
tipo coloque um dbgrid abra a tabela, dê um last depois pessa pra ver os o total de registros...

no botão faça:
tabela.open;
tabela.last;
if tabela.isempty then caption := ´Tabela Vazia´
else 
caption := inttostr(tabela.recordcount);

é fazendo testes que vamos descobrir onde estão realmente os problemas... será que vc vai ta vendo os dados e mesmo assim vai está retornando ´0´ zero!! :wink:[/quote:e9dde374b4]

já contei, com o mesmo componente inclusive (em questão), tem 879 registros, porém mesmo assim está trazendo [b:e9dde374b4]recordcount = 0[/b:e9dde374b4]


Responder

Gostei + 0

29/11/2006

Facc

[quote:168d90d82d=´paullsoftware´][quote:168d90d82d=´Facc´][quote:168d90d82d=´NerdeX´][quote:168d90d82d=´emerson.en ligado´]...Talvez tenha sido feita confusão com o Eof...


Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)[/quote:168d90d82d]


Revivendo o tópico...

Estou tendo problemas com [b:168d90d82d]DMDados.TControleReceber.IsEmpty[/b:168d90d82d]
pois minha tabela possui registros, e mesmo assim ele esta trazendo que está vazia, tentei com [b:168d90d82d]DMDados.TControleReceber.RecordCount = 0[/b:168d90d82d], porém tbm está trazendo valor 0 (zero). Já coloquei o [i:168d90d82d][b:168d90d82d]First, Refresh, Open, Close[/b:168d90d82d][/i:168d90d82d], mas sem resultado. O que posso fazer pra resolver?[/quote:168d90d82d]
desculpe a iginorância, mais vc já tentou contar os registros olhando pra eles???
tipo coloque um dbgrid abra a tabela, dê um last depois pessa pra ver os o total de registros...

no botão faça:
tabela.open;
tabela.last;
if tabela.isempty then caption := ´Tabela Vazia´
else 
caption := inttostr(tabela.recordcount);

é fazendo testes que vamos descobrir onde estão realmente os problemas... será que vc vai ta vendo os dados e mesmo assim vai está retornando ´0´ zero!! :wink:[/quote:168d90d82d]

já contei, com o mesmo componente inclusive (em questão), tem 879 registros, porém mesmo assim está trazendo [b:168d90d82d]recordcount = 0[/b:168d90d82d][/quote:168d90d82d]



Resolvido. O programador que fez o sistema esqueceu de colocar as seguintes linhas antes da chamada...
       RefreshQuery( DMDados.TControleReceber, [´´], [´´] ); [b]function que dá refresh na query[/b]
        OrdenaQuery( DMDados.TControleReceber, [´DataVecto´] ); [b]function que ordena a query com o campo que se deseja[/b]
        DMDados.vfiltrocontasReceber:=´REC´;
        DMDados.TControleReceber.Filtered:=true;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar