construir cursor nativo de VFP en base a variables o condiciones.

69 views
Skip to first unread message

Saúl Piña

unread,
Dec 8, 2016, 9:09:15 AM12/8/16
to Comunidad de Visual Foxpro en Español
Buenos dias,  Estoy tratando de crear una consulta SQL nativo de VFP (un cursor temporal) pero tengo problemas en la sintaxis de where, alguno que me ayude a ver el problema de esta sintaxis?

el codigo es el que sigue:
LPARAMETERS _modo
LOCAL _lcCampos
, _lcWhere
PRIVATE _pFec_Inicio
as Date, _pFec_fin as Date

_lcCampos
= "categoria, count(idcategoria) as total, fecha, idcategoria"

DO CASE
CASE _modo
= 1
    _lcWhere
= " group by idcategoria    order by idcategoria "
CASE _modo
= 2
    _lcWhere
= _sqltxt + " where  fecha_nota BETWEEN pFecha1 AND pFecha2 group by idcategoria    order by idcategoria "
ENDCASE

*cursor catalogos_totales
SELECT
(_lcCampos) FROM vw_solicitudes ;
WHERE
<<_lcWhere>> INTO CURSOR categorias_totales

SELECT categorias_totales
BROWSE

gracias

Jorge Bernardo Morales Hernandez

unread,
Dec 8, 2016, 9:27:48 AM12/8/16
to Comunidad de Visual Foxpro en Español
A ojo de pájaro, veo que la cadena dentro de la opción 2 del DO CASE, incluyes la palabra WHERE, cuando ya existe en la construcción del query más abajo.

Adicional a eso, en la misma cadena haces mención de una variable _sqltxt que según el código no existe.

Saludos,

Saúl Piña

unread,
Dec 8, 2016, 9:47:03 AM12/8/16
to Comunidad de Visual Foxpro en Español
ya es correcto, gracias. ya funciona.

Antonio Meza

unread,
Dec 8, 2016, 10:49:16 AM12/8/16
to Comunidad de Visual Foxpro en Español
En lo personal siempre pongo un MessageBox(_comandoSql) para ver como queda armado el Sql para que sea mas fácil detectar errores por no LER!!!! ahh se dice LEER!!! jajajajaj

saludos
Antonio Meza

Saúl Piña

unread,
Dec 8, 2016, 10:52:45 AM12/8/16
to Comunidad de Visual Foxpro en Español
Al fin mexicano!!

ya me puse a LEER y ya di con el problema.

Antonio Meza

unread,
Dec 8, 2016, 10:57:41 AM12/8/16
to Comunidad de Visual Foxpro en Español
para los que no sepan que es LER!!! aquí les paso el vídeo del Secretario de Educación de México, que CHULADA de gobernantes tenemos jajajajajaj en fin!!


Así que ya saben hay que ponerse a LER!!!! jajajajaj

saludos
Antonio Meza

HernanCano

unread,
Dec 9, 2016, 12:33:40 AM12/9/16
to Comunidad de Visual Foxpro en Español
¿Y si _MODO no vale ni 1 ni 2?

Hugo C.

unread,
Dec 9, 2016, 12:58:37 AM12/9/16
to Comunidad de Visual Foxpro en Español
Creo que en este tipo de consultas el where debe de de quedar excluido de la consulta y usar and

_lcWhere = " where 1 == 1 "

DO CASE 
CASE _modo 
= 1

    _lcWhere 
= _lcWhere + " group by idcategoria    order by idcategoria "
CASE _modo = 2
    _lcWhere 
= _lcWhere + _sqltxt + " And  fecha_nota BETWEEN pFecha1 AND pFecha2 group by idcategoria    order by idcategoria "

OHERWIse
 ...
ENDCASE

Saludos.

HernanCano

unread,
Dec 9, 2016, 1:21:35 AM12/9/16
to Comunidad de Visual Foxpro en Español
Gracias, Hugo.
Lamento la confusión. La pregunta era para Saúl.
Observamos que tiene varias situaciones ambiguas en su script. Seguramente resolvión con 

*cursor catalogos_totales
SELECT 
(_lcCampos) FROM vw_solicitudes ;
<<_lcWhere>> INTO CURSOR categorias_totales

Pero como tiene muchas otras cosas por resolver, seguramente volverá apreguntar sobre lo mismo mañana.... hasta tal vez creando un nuevo hilo.

Tu propuesta funciona siempre y cuando la vble _sqltxt tenga un valor que no "desacredite" tu propuesta. Por eso no aporto algo más concreto... ya que tiene muchas cosas sin resolver en su pregunta.

De todas formas gracias, Hugo.
Reply all
Reply to author
Forward
0 new messages