Page 1 of 1

Forma Rapida de Contar Registros *SOLUCIONADO*

Posted: Thu May 20, 2021 5:28 pm
by remtec
Hola Amigos

Quizás una pregunta ingenua para muchos.

Quiero saber si este una forma mas rápida de contar los registro que cumplan una condición en una Dbf, que no sea un "Do while", siempre lo he realizado recorriendo la dbf completa y preguntando si cumple condición y lo sumo.

Muchos Saludos

Antonio

Ejemplo:

Code: Select all | Expand


         Sele b
        DbGotop()
        Reg:=0
        Do While !Eof()
             If Subs(b->Tip_Pag,1,2)="VI".or.Subs(b->Tip_Pag,1,2)="CH"
                   Reg:=Reg + 1
             Endif
             DbSkip()
        Enddo

 

Re: Forma Rapida de Contar Registros ?

Posted: Thu May 20, 2021 6:22 pm
by karinha

Re: Forma Rapida de Contar Registros ?

Posted: Fri May 21, 2021 1:37 am
by artu01
Hola no lo he probado pero quizas resulte con dbeval()

Code: Select all | Expand


      b->( dbEval( {|| iif( Subs(b->Tip_Pag,1,2)="VI".or.Subs(b->Tip_Pag,1,2)="CH", Reg:=Reg + 1, ) },, {||b->!Eof()}))
 

Re: Forma Rapida de Contar Registros ?

Posted: Thu May 27, 2021 2:36 pm
by JoseAlvarez
Prueba usando la funcion

Reccount() for <condicion>

Saludos

Re: Forma Rapida de Contar Registros ?

Posted: Thu May 27, 2021 3:25 pm
by karinha
JoseAlvarez wrote:Prueba usando la funcion

Reccount() for <condicion>

Saludos


Master José, siempre que possible, haga asi, porfa.

Code: Select all | Expand


// \SAMPLES\RECCOUNT.PRG

#include "FiveWin.ch"

FUNCTION Rec_Count()

   LOCAL nRecords

   USE CUSTOMER NEW

   USE TEST NEW

   ? RecCount()

   nRecords := CUSTOMER->( RecCount() )

   ? nRecords

   CLOSE ALL

RETURN NIL

// FIN
 


Saludos.

Re: Forma Rapida de Contar Registros ?

Posted: Thu May 27, 2021 4:53 pm
by remtec
Amigos

Muchas gracias por su ayuda.

Aplique:

Reccount() for <condicion>

Muy agradecido por su tiempo y ayuda.

Muchos Saludos.

Antonio

Re: Forma Rapida de Contar Registros *SOLUCIONADO*

Posted: Thu May 27, 2021 7:37 pm
by JoseAlvarez
Saludos Joao.

Tienes razón, trataré de ser más didáctico y explícito la próxima vez.

Se trata de ayudar lo más posible.

Gracias por la observación.