FoxPro/Visual FoxPro - Select de un cursor

   
Vista:

Select de un cursor

Publicado por Vidal Garza (8 intervenciones) el 28/04/2016 15:24:26
Buen día Foro,

Les mando muchos saludos.

Les platico que necesito hacer consultas de un programa que usa foxpro.

Para lo anterior necesito crear vistas o alguna tabla temporal. El problema es que no quiero llenarme de tablas temporales y como es para reportes web, no quisiera que cada sesion ande creando tablas temporales o la verdad no se como vaya a funcionar con ese camino.

Me tope con el concepto de cursores, por lo que me pregunto si hay manera de hacer un SELECT al cursor. El cursor lo puedo consultar desde el mismo foxpro con los comandos al hacer un select cursos y despues el brow.

Les agradeceria me compartieran su experiencia.

Slds.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Select de un cursor

Publicado por Fidel José (321 intervenciones) el 28/04/2016 16:46:07
Supongo por lo que dices que ese programa fox usa tablas nativas.
Para generar un cursor mediante una consulta SELECT - SQL sobre tablas nativas, tienes
SELECT * FROM (lcTabla) WHERE (lcWhere) INTO CURSOR lcNameCursor.
Si necesitas indexar o modificar algo del cursor y usas VFP9
SELECT * FROM (lcTabla) WHERE (lcWhere) INTO CURSOR (lcNameCursor) READWRITE

El cursor es una tabla temporal que también tienes que cerrar, pero no necesitas borrarla del disco. Si trabaja en memoria o genera un archivo es cosa que decide Fox. Con el cursor trabajas exactamente igual que con una tabla, con las siguientes excepciones:
Si trabajas con nombres largos de tabla y modificas la estructura del cursor con ALTER TABLE, perderás los nombres largos. Si usas tablas libres, no tienes de que preocuparte.
Si necesitas hacer APPEND FROM (el cursor), la nomenclatura sería:
SELECT TABLA_CURSOR
APPEND FROM DBF("otro_cursor")
Los cursores no se pueden guardar. Al cerrarse desaparecen. Pero si se pueden convertir a tabla con COPY TO o con un SELECT .. INTO TABLE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Select de un cursor

Publicado por Vidal (8 intervenciones) el 28/04/2016 16:57:30
Buen día Fidel,

Primeramente gracias por tus comentarios.

Entiendo como mandar la consulta a un cursor. El problema que tengo es hacer la consulta SQL del cursor, es decir.

SELECT * FROM customers INTO CURSOR mycursor

Claro que el select es mucho mas complejo, y sobre este cursor poder hacerle un query:

SELECT campo1,campo2 FROM mycursor

Esta ultima parte es la que no me deja, marca error

'MYCURSOR' debe crearse mediante select ... into table.

cabe mencionar que no se en que version de foxpro hicieron el programa, yo estoy usando VS6 - vf6 (era el unico que tenia) para hacer las consultas de prueba, una vez que se que funcionan las consultas las trabajo desde PHP conectandome por ODBC.

Entiendo que puedo mandar la consulta a una tabla, la parte que no me gusta de esto es que no se que tanto mantenimiento me suponga este tipo de tablas, como sera un ambiente web, no creo conveniente estar creando tablas por cada consulta real que quiera hacer, y hacer una tabla de base para mis consultas, al momento que reinicien la maquina, no se que pasara con ellas, etc, etc, etc. buscaba mas crear una vista y la puedo crear en el ambiente de desarrollo pero no me crea ningun archivo que pueda migrar a produccion. Como comento en produccion no quiero meter mano, deseo que sea lo mas transparente posible a fin de no afectar el software original.

Desde ya muchas gracias!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar