So discordo de vc quando diz que o recordcount vai sempre retornar > 1. Em alguns casos ele retorna -1, so nao descobri ainda quando. Alem do mais nem sempre ele se posiciona no primeiro registro ... ele pode estar em uma posicao inicial (-1) e realmente so buscar o registro quando vc comeca a ler os dados ... Por que? porque algumas vezes o programador quer executar a query apenas pra sabe se o banco existe, por exemplo ... deste modo ele estaria buscando registros sem necessidade ... entao ele espera vc comecar a ler os registros pra dar um fecth nos primeiros registros. Acho que a solucao e usar isempty mesmo.
Rafael Colucci Rafael Colucci ----- Original Message ----- From: "Filipe Belchior" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Tuesday, January 11, 2005 5:53 PM Subject: [delphi-br] Re: recordcount é confiável? > > > . > > Olá pessoal, > > me interessei pelo assunto pois já tive problemas com o recordcount > tempos atrás.. e bota tempo nisso :-) > > seguinte, se vc deseja apenas saber se a consulta NÃO esta vazia, > tanto o recordcount como o isempty funciona, pois o recordcount > retorna o no. de registros "fecthados" :-D, e o primeiro registro > sempre está "fetchado", se existir. > > mas, se o assunto é saber o numero de registros... através do > recordcount, o ideal seria fecthall antes de chamar o recordcount... > nada de Last, isso é loucura. > > à respeito de usar uma outra consulta com COUNT(*).. bom, acredito > ser melhor em tempo de resposta (para saber no. de registros), mas > a idéia de criar outra query não agrada à muitos. Eu uso hoje o > FecthAll, mas num lembro de usar em tabelas com dezenas de milhares > de registros, nessa situação, uma consulta paralela talvez agrade na > performance. > > > var > qryT: TIBQuery; > > ... > > // aconselho específicar os campos desejados, ao invés de * > qry1.sql.text := 'select campo1, campo2 from tab1'; > > // nova query para consulta total de regitros > qryT := TIBQuery.create; > qryT.Assign( qry1 ); > qryT.sql.text := 'select count(*) from tab1'; > qryT.open; > qryT.tag := qryT.fields[0].asinteger; > qryT.close; > > // o primeiro registro, se exitir, será "fetchado" e recordcount 1 > __qry1.open; > > > > . > --- Em delphi-br@yahoogrupos.com.br, Marcelo Almeida <[EMAIL PROTECTED]> > escreveu > > Alan escreveu: > > > > >esse modo que o Rodrigo falou é mais indicado do que o RecordCount, > isso eu > > >ouvi com o Bruno Lichot q deu uma palestra em porto alegre > > > > > > > > > > Se o que se quer é saber se o select retornou registros, como o exemplo > > que foi passado, o melhor é usar o isempty. > > O select count serve para informar a quantidade de registros, mas > muitas > > vezes precisamos saber se existe algum registro e não a quantidade > deles. > > Dependendo das condições do select o count pode demorar bastante. > > > > -- > > Marcelo Almeida > > > > > > -- > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> > > Para ver as mensagens antigas, acesse: > http://br.groups.yahoo.com/group/delphi-br/messages > > Para falar com o moderador, envie um e-mail para: > [EMAIL PROTECTED] ou [EMAIL PROTECTED] > > Links do Yahoo! Grupos > > > > > > > -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html