Recordcount -1

Firebird

10/02/2005

Alguém sabe porque que ao executar a sintaxe abaixo o valor de retorno é -1. Utilizo banco Oracle 8.1.7

var
v_qtd: integer;


begin
v_qtd:=query1.recordcount;

// o valor de v_qtd é igual a -1.


A query1 é:

select * from funcionarios
where codemp = 300
order by nome



Obrigado.


Airoosp

Airoosp

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

10/02/2005

[b:ac166ed616][color=red:ac166ed616]Notificação de Infração às Regras de Conduta :[/color:ac166ed616][/b:ac166ed616]

Tópico no fórum errado. Deveria estar no de Delphi.

Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].


GOSTEI 0
Airoosp

Airoosp

10/02/2005

Não entendi, pois trata-se do Delphi com o Oracle. O resultado do recordcount eu quero mostrar em um form do Delphi.


GOSTEI 0
Gandalf.nho

Gandalf.nho

10/02/2005

Caso você não tenha percebido esse fórum específico aqui é de Interbase/Firebird e não de Delphi. Quanto a notificação me distraí um pouco, era pra ser Delphi e não Oracle, mas já corrigi.


GOSTEI 0
Marcio.theis

Marcio.theis

10/02/2005

Isto ocorre por causa do comando select *, vc provavelmente deve de ter muitos registros na tabela, sendo que lhe retorno no RecodCount o -1, e para que isto não aconteça mais, especifique os campos que vc deseja trazer no sql.


GOSTEI 0
Afarias

Afarias

10/02/2005

Não tem a ver com o SQL.

O RecordCount funciona diferente para ´bancos SQL´ (SGBD) e arquivos como xBase e Paradox.

O RecordCount é implementado diferentemente para cada tipo de componente (DataSet) que vc usa -- então, o q ele apresenta depende dos componentes q vc está usando -- Geralmente, ele diz apenas quantos registros tem no BUFFER do componente (ou não diz nada! como no seu caso)

Para SGBDs (como o Oracle) não tem como o RecordCount dizer quantos registros foram trazidos na consulta, a não ser q todos os registros sejam antes trazidos para o Buffer (.Last ou .FetchAll) mas ainda assim, alguns componentes nem mesmo implementam isso.

Para os componentes Unidirecionais (DBX por exemplo) então essa propriedade é inútil (visto q tais componentes não contem um buffer)

Geralmente usar o RecordCount não é uma boa prática quando se trabalha como SGBD -- se for usar, leia atentamente a documentação sobre ´como funciona´ específicamente para o conjunto de DataSets q vc está usando.

No mais estou trancando o tópico, visto q, como bem observou a colega Gandalf ele está completamente fora de contexto.

T+


GOSTEI 0
POSTAR