Para saber si existe un registro: En lugar de Reccount()>0 que podría utilizar?

3,316 views
Skip to first unread message

Saúl Piña

unread,
Apr 21, 2016, 10:24:02 AM4/21/16
to Comunidad de Visual Foxpro en Español
buenos dias,

pues me he dado cuenta que el reccount()>0 me está pasando una mala jugada.. ya que se supone que si existe al menos un registro en el cursor, debe hacer un proceso, pero veo que el cursor me lo devuelve vacio y aun asi el reccount>0 lo da por hecho que es mayor a cero.

Alguna sugerencia?

gracias.

Hector R. De los Santos

unread,
Apr 21, 2016, 10:28:59 AM4/21/16
to publice...@googlegroups.com
Hola Saul,
Utiliza la variable del sistema  _TALLY
Esta contiene la cantidad de registros procesados en la ultima consulta.

De la ayuda de VFP:
SELECT * FROM customer ;
   WHERE country = 'USA' ;
   INTO CURSOR temp
? _TALLY

Saludos,

:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363

Patricio Muñoz

unread,
Apr 21, 2016, 10:32:56 AM4/21/16
to publice...@googlegroups.com
aparte del _tally puedes usar el eof()
ejemplo:

SELECT * FROM customer ;
   WHERE country = 'USA' ;
   INTO CURSOR temp

if eof()
  ?"sin registro"
endif
Bendiciones
--
Patricio Muñoz
Pro&Tech
Analista en Sistemas

Fernando D. Bozzo

unread,
Apr 21, 2016, 10:43:35 AM4/21/16
to Comunidad de Visual Foxpro en Español
Hola Saúl:

Partiendo de la base de que estás usando SET DELETED ON para no ber los borrados, podés hacer un GO TOP y comprobar si EOF()=.T., en cuyo caso no hay registros. Si EOF()=.F. entonces hay registros.


Saludos.-

Saúl Piña

unread,
Apr 21, 2016, 10:48:56 AM4/21/16
to Comunidad de Visual Foxpro en Español
Se me pasó mencionar un pequeño detalle, que mi base de datos y tablas es con MySQL

gracias.

Antonio Meza

unread,
Apr 21, 2016, 10:55:10 AM4/21/16
to Comunidad de Visual Foxpro en Español
lo bueno que fue un pequeño detalle jajajaj

Como usas FoxyDb, la siguiente propiedad te indica la cantidad de registros devueltos por una consulta Select, ejemplo:

? foxydb.sql_Records 

Foxydb.Sql("select * from clientes")
? foxydb.sql_Records 

y debes obtener el mismo valor con
? reccount()

Nota: FoxyDb usa SqlExec() y con VFP Sp2 SqlExec tiene un parametro que retorna una array con informacion y de ahi obtengo la cantidad de registros que paso a la propiedad .sql_Records 

saludos
Antonio Meza

Fernando D. Bozzo

unread,
Apr 21, 2016, 11:05:49 AM4/21/16
to publice...@googlegroups.com

No puedo creer que a Saul le estén recomendando usar select * from tabla para saber la cantidad de registros...

Y ya van 2 :'(

Miguel Canchas

unread,
Apr 21, 2016, 11:14:00 AM4/21/16
to publice...@googlegroups.com

Select count( CAMPO ) from MITABLA

 

MK

Antonio Meza

unread,
Apr 21, 2016, 11:15:41 AM4/21/16
to Comunidad de Visual Foxpro en Español
jajaja No para nada Maestro Fernando, le explico!!

FoxyDb es una librería para hacer mas fácil el manejo de datos con Firebird, MariaDb y Mysql, tiene una función llamada Sql() que permite enviar consultas o comandos al servidor de base de datos y obtener dichos registros.

En mi ejemplo que le indico a Saul es que el obtiene su consulta usando .Sql() y como no se el nombre de su tabla ni campos le puse un ejemplo de como se obtiene el cursor con FoxyDb y después puede consultar el valor de la propiedad de foxydb o la función nativa Reccount().

saludos
Antonio Meza

Fidel Charny

unread,
Apr 21, 2016, 11:18:37 AM4/21/16
to Comunidad de Visual Foxpro en Español
Resultado de imagen para abaco
Auto Generated Inline Image 1

Fernando D. Bozzo

unread,
Apr 21, 2016, 11:19:44 AM4/21/16
to publice...@googlegroups.com

Pero Saul solo quiere saber si su cursor tiene algún registro No borrado, así que reecount() queda descartado.

Fernando D. Bozzo

unread,
Apr 21, 2016, 11:21:02 AM4/21/16
to publice...@googlegroups.com

Jajajajaja!

Muy buena Fidel :-)

Saúl Piña

unread,
Apr 21, 2016, 11:31:32 AM4/21/16
to Comunidad de Visual Foxpro en Español
Perdon Profr Fernando, pero jamás he escrito la palabra "borrar" o "borrado".

La consulta es simple:

¿Como saber si en el cursor existe un registro o más?  en otras palabras, quiero saber si hay datos en el cursor o simplemente está vacio...

saludos.

Julián May

unread,
Apr 21, 2016, 11:36:43 AM4/21/16
to Comunidad de Visual Foxpro en Español
jajajajajajaja Que recuerdos me trajo ese abaco de la guardería x) 


Buena Fidel ah ah 

Fernando D. Bozzo

unread,
Apr 21, 2016, 11:37:43 AM4/21/16
to publice...@googlegroups.com

Ya te contesté Saul....

Probaste li que te puse?

Milton

unread,
Apr 23, 2016, 11:26:39 AM4/23/16
to Comunidad de Visual Foxpro en Español
Si estas utilizando Cursor Adapter, te puede servir lo siguiente:

SELECT COUNT(Codigo) FROM CRSRENFAC WITH (BUFFERING = .T.) WHERE !DELETED()  INTO ARRAY aTots
M.Lineas = ROUND(IIF(!ISNULL(aTots[1]),aTots[1],0),2)


Donde Codigo es el nombre de un campo de la tabla CRSRENFAC, misma que es objeto del conteo.
Reply all
Reply to author
Forward
0 new messages