Contar los registros de una tabla MySQL desde VFP.

1,299 views
Skip to first unread message

Edgar Acevedo

unread,
Sep 18, 2013, 3:09:04 AM9/18/13
to publice...@googlegroups.com, Edgar Acevedo

Saludos expertos:

Tengo muy poco conocimiento y experiencia de MySQL y su interactuar con VFP 9.  Por esta razón, hasta ahora, para contar cuantos registros tiene una tabla de MySQL genero una consulta hacia un cursor de VFP y luego con el RECCOUNT() pregunto cuantos registros tiene mi cursor recién creado.

PIenso que talvez existe una mejor forma de hacerlo, sin tener que "bajar" toda la tabla a un cursor mediante un SELECT. 

¿Habrá algo como el RECCOUNT() de VFP que me permita poner en una variable la cantidad de registros?

Otra cosa: Hasta ahora he ejecutado el SQLEXEC que me devuleve un valor mayor que 0 si el comando de MySQL se ejecutó con éxito.  También con el SQLEXEC obtengo cursores que puedo manipular en VFP.   Pero... ¿Puedo con el SQLEXEC obtener el resultado de una variable o dato específico de una tabla de MySQL como lo propongo en mi primera pregunta (párrafo anterior)?
Por ejemplo:
- El conteo de cuantos registros cumplen con una condición (el equivalente de COUNT() de VFP.
- La suma de uno (o varios) campos numéricos basándose en una condición (el equivalente al SUM FOR de VFP).

Como les repito, ésto lo he logrado bajando la data resultante de un SELECT hacia un cursor de VFP, pero ¿Hay otra forma de hacerlo mas "al estilo de VFP"?

Gracias anticipadas por su atención a mi consulta.  Saludos,



Edgar Acevedo.


Carlos Miguel FARIAS

unread,
Sep 18, 2013, 6:55:29 AM9/18/13
to Grupo Fox
Sin usar nada extraño
Cantidad de registros:
lcSQL = "SELECT COUNT(*) AS 'TusRegistros' FROM TuTabla"
liRsp = SQLExec(kcSQL, "CuantosHay" )
liQRegistros = CuantosHay.TusRegistros && equivale al reccount

Y hay comandos de mysql que te indican los registro, mira las variantes de la sentencia SHOW.

En cuanto a la otra, tambien con SQL lo logras facil.
lcSQL = "SELECT SUM(UnCampo) AS 'UnCampo', SUM(OtroCampo) AS 'OtroCampo', FROM TuTabla WHERE <<aca pones la condicion>>"
liRsp = SQLExec(kcSQL, "AlgoComoUnSum" )
lnSumaUnCampo = AlgoComoUnSum.UnCampo
lnSumaOtroCampo = AlgoComoUnSum.OtroCampo

S.E.U.O

Saludos: Miguel, La Pampa (RA)

Luis M.

unread,
Sep 18, 2013, 7:37:17 AM9/18/13
to publice...@googlegroups.com, Edgar Acevedo
Otra forma de hacerlo:

TEXT TO CSQL TEXTMERGE NOSHOW
SELECT ID_registro FROM mitabla
ENDTEXT
cmd = SQLEXEC(nHandle, CSQL, "cur_mitabla", aLineasResultado) && el últ.parámetro es el nº de reg. del SELECT
m.NumRegistros = aLineasResultado[1,2] && en esta variable tenemos el Nº de registros de la tabla
IF cmd > 0
** ok
ELSE
AERROR(laErr)
MESSAGEBOX("Error de conectividad a la base de datos MySQL. Error " + CHR(13) + laErr[2], 0+16+0,;
'Información al usuario.')
RETURN
ENDIF

Saludos,
Luis Martínez.

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Sep 18, 2013, 12:08:48 PM9/18/13
to publice...@googlegroups.com, Edgar Acevedo
Hola solo usa asi
nTotalReg = 0
SQLExec (Conexion,"Select count(*) as TotalReg from TbTuTabla","TmpReg")
nTotalReg = TmpReg.TotalReg 
Use in TmpReg


Pd.: Descargate mi grilla que tiene multiples funciones como filtrar, multiseleccion, búsqueda, etc del siguiente link http://www.developervfp.blogspot.com/p/gridlibre-v35.html. Ahora también puedes bajarte mi ultima herramienta Busqueda Incremental con un TEXTBOX http://developervfp.blogspot.mx/p/busqueda-incremental-con-un-textbox.html  las herramientas viene con código fuente, ojo no hacer mal uso por favor. 


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
San Juan del Rio - Queretaro - Mexico 
Nextel.: 52*133750*16
rycjesusrj @ hotmail.com
Framework Multi-conexion version 6.0 (nueva)


Edgar Acevedo

unread,
Sep 18, 2013, 7:04:49 PM9/18/13
to publice...@googlegroups.com
Muchísimas gracias estimados expertos.

Sus propuestas y ejemplos no solo me sirvieron para lograr mi cometido, sino que adicionalmente comprendí cosas que "guguleando" había leído pero sin comprender como usarlas.  Ahora entiendo mejor el "modelo de operación" de VFP con MySQL.

Muy agradecido.


Edgar Acevedo.

David Salazar

unread,
Sep 19, 2013, 8:29:23 PM9/19/13
to publice...@googlegroups.com
Porque no utilizas procedimientos almacenados o funciones que te devuelvan el valor que buscas. Puedes procesar mucha información y luego obtener valores puntuales.


2013/9/18 Edgar Acevedo <aper...@gmail.com>

Carlos Miguel FARIAS

unread,
Sep 20, 2013, 6:03:35 AM9/20/13
to Grupo Fox

Si quieres hacer la aplicación independiente del SGBD conviene usar el SQL mas estándar codificado en la aplicación. Para mejor desempeño, si conviene usar SP.
saludos: Miguel, La Pampa (RA)

Reply all
Reply to author
Forward
0 new messages