Saber se a tabela está vazia
Alguém sabe como verificar, via código, se uma tabela Paradox, criada pelo Database Desktop está vazia?
VLW
VLW
Sérgio Gobbo
Curtidas 0
Respostas
Raserafim
29/04/2005
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´);
GOSTEI 0
Otto
29/04/2005
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:
GOSTEI 0
Lorde_morte.
29/04/2005
Esta função sempre retorna true.
Como resolver este problema?
A falha do IsEmpty esta matando meu FrameWork. :cry:
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:
GOSTEI 0
Otto
29/04/2005
Esta função sempre retorna true.
Como resolver este problema?
A falha do IsEmpty esta matando meu FrameWork. :cry:
function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean; begin RESULT:= NOT TABELA.IsEmpty; end;
ja tentou assim:
function TBuscaFrame.AchouAlgo(Tabela:TDataSet): Boolean; begin Tabela.FetchAll; // linha incluida RESULT:= NOT TABELA.IsEmpty; end;
:?:
GOSTEI 0
Martins
29/04/2005
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
GOSTEI 0
Nerdex
29/04/2005
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:
:wink:
GOSTEI 0
Martins
29/04/2005
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!!
GOSTEI 0
Emerson Nascimento
29/04/2005
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.
GOSTEI 0
Emerson Nascimento
29/04/2005
[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;
GOSTEI 0
Martins
29/04/2005
[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;
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
GOSTEI 0
Nerdex
29/04/2005
[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)
Concordo em gênero, número e grau - Desculpa a falha ... aí ...: 8)
GOSTEI 0
Facc
29/04/2005
[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?
GOSTEI 0
Paullsoftware
29/04/2005
[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:
GOSTEI 0
Facc
29/04/2005
[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]
GOSTEI 0
Facc
29/04/2005
[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;
GOSTEI 0