FoxPro/Visual FoxPro - Cerrar Ventana Proceso.

 
Vista:
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 03/07/2018 04:20:17
Hola! ¿Cómo están?. Soy nuevo programando en FoxPro 6.0 y bueno vengo una duda. Estoy creando un programa usando MACROS EN EXCEL y FoxPro. hice un bóton en Excel que al darle click. llama a mi Ejecutable de Foxpro e inicia el proceso, todo lo hace bien, pero tengo dos preguntas. como hacer que no se vea la pantalla de fox cuando inicia el proceso. lei que se hace con un archivo llamado Config.fpw y se le pone la instrucción Screen = OFF.

Lo hago y efectivamente ya no me pone la pantalla.... pero NO HACE NADA se queda trabo. y la segunda.. cuando inicia mi proceso, termina. pero no sé cierra el fox, en el codigo de mi FORM puse al final de todos los procesos QUIT pero parece que no lo ejecuta.

De antemano Gracias!!!
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
sin imagen de perfil
Val: 1.545
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Fidel José (624 intervenciones) el 03/07/2018 14:28:48
1) El formulario debe ser de nivel superior (ShowWindow = 2), de otra forma no se mostrará. Los otros formularios (si hay) deben ser inicializados como ShowWindow = 1 o ShowWindow = 2, dependiendo de lo que se pretenda.
2) Para que salga del sistema, tendrás que tener la orden Thisform.Release() al final del proceso y en el evento Unload del form colocar la instrucción QUIT.
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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 04/07/2018 02:32:26
Hola Fidel, muchas gracias por contestar, el día de hoy probé algunas cosas que me comentaste y cuando ejecuto mi programa desde Excel, ya no me aparece la ventana grande de FOX, solo me aparece el FORM en un cuadro, hace los procesos... pero me deja en pantalla la Consulta que hace, tengo que darle CErrar y continua. dejo mi codigo del prg y el form.

en prg
1
2
3
4
5
6
Set Default To "C:\Programa1\"
Set safety off
Close data
Do Form Form1
Read events
Clear events

Y el Form pues esta en la pestaña Active.
trae seccionar tablas, borrarlas cargarlas con información y hacer un query nada del otro mundo y al final pongo
QUIT, todo esto si lo hace pero cuando llega al QUIT parece que no lo tuviera ahí se queda y no se cierra. tengo que cerrarlo manualmente.

También puse el archivo Config.fpw con Screen = OFF

Lo único que quiero es que se cierre.
Alguna sugerencia?
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
sin imagen de perfil
Val: 1.545
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Fidel José (624 intervenciones) el 04/07/2018 13:52:40
Hola Cesar

Conviene estandarizar el main.prg de tu aplicación, por ejemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*<Main_prg>
Set Default To "C:\Programa1\"
Set safety off
* Close data
ON SHUTDOWN DO CERRAR
ADDPROPERTY(_Screen,"frmMain",NULL)
Do Form Form1 NAME _screen.frmMain
Read events
 
 
PROCEDURE CERRAR
* ---------------------
ON SHUTDOWN
IF VARTYPE(_SCREEN.frmMain)="O"     && Testea si el formulario está abierto
         _screen.frmMain.Release()
ENDIF
_Screen.frmMain = NULL
CLOSE ALL
SET PRINTER TO
CLOSE DATABASES
CLEAR EVENTS
QUIT
ENDPROC
 
*</Main_prg>

Por otra parte, cabe preguntar:
La rutina de la que hablas es un método del formulario?
Si es un método del formulario, y pretendes que el formulario se cierre cuando termine de ejecutarlo, la sentencia no es QUIT, sino THISFORM.RELEASE()
El comando QUIT debe ir en el evento UNLOAD del formulario.

La llamada al método Release del form es el único modo de liberación posible desde dentro del formulario. Y también desde fuera, utilizando una referencia de objeto si es que el form se implementa a partir de un archivo scx.



Además, si utilizas comandos o funciones que implican un estado de espera, eso te impedirá cerrar el formulario, salvo que le atribuyas alguna temporización (ejemplos: BROWSE , MESSAGEBOX(), WAIT WINDOW)

Además, si implementas objetos (CREATEOBJECT() ) la instancia debe eliminarse.
Ej:
LOCAL loExcel
loExcel = CREATEOBJECT("Excel.Application")
* Comandos pertinentes
loExcel = null

Si la referencia de objeto se crea sobre un propiedad del form o de _screen, debe liberarse en el Destroy del form
ADDPROPERTY(thisform,"oExcel",CREATEOBJECT("Excel.Application"))

* DestroyEvent
IF PEMSTATUS(This,"OEXCEL",5)
This.oExcel = NULL
ENDIF
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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 04/07/2018 14:33:29
Muchas gracias Fidel hoy lo pruebo y en la tarde te comento si funciono, lo curioso es que hice pruebas antes con algo muy parecido, puse un botón en Excel lo configure, y llama a fox hace las cosas y se cierra. pero al momento de hacer este no se me cierra es muy extraño, pero hoy lo pruebo y te comento, 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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 06/07/2018 19:11:49
Hola Fidel hice algunas cosas que me dijiste y si ya se cierra muchas gracias!!, pero tengo otro extraño problema, se ejecuta hace todo y cuando hace los cruces con la base de datos me muestra en pantalla la consulta osea el resultado.... Tengo que cerrarla manualmente luego hace el segundo cruce y lo mismo me muestra el resultado, como le hago para que no me muestre el resultado.

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
sin imagen de perfil
Val: 1.545
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Fidel José (624 intervenciones) el 06/07/2018 23:43:35
El tema se puede develar si muestras como haces la consulta.

Por ejemplo
lcPath = "c:\sistemas\thtero\poli\movim"
USE (lcPath) IN 0 SHARED
dia1 = DATE(2018,5,1)
dia2 = GOMONTH(dia1,1)-1 && gomonth no existe en VP6. Esta función devuelve el mismo día de tantos meses como se indica en el segundo parámetro.

SELECT fecha,factura,gravado,impiva,total FROM movim WHERE fecha between dia1 AND dia2

Esto escrito asi genera un cursor con el alias "QUERY". Funciona, pero tiene el problema que crea un browse automático del cursor.
(If you do not include the INTO clause, query results are displayed in a Browse window by default.)


Cómo se evita:
SELECT fecha,factura,gravado,impiva,total FROM movim WHERE fecha between dia1 AND dia2 INTO CURSOR curMiNombre

Los cursores creados con SELECT - SQL en VFP 6 son de solo lectura. En VFP9 existe la cláusula READWRITE con lo cual se vuelven el equivalente de una tabla temporal.
Por lo que si hay que modificar este cursor, será necesario generar una tabla
SELECT fecha,factura,gravado,impiva,total FROM movim WHERE fecha between dia1 AND dia2 INTO DBF MiNombre
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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 07/07/2018 16:06:12
Que tal Fidel, Muchas gracias por contestar entonces para evitar que se muestre la Consulta osea el Query en pantalla debo mandarlo a una tabla antes, mira esta es la consulta que hago:

Select Tabla1
Zap
Append From 'C:\Programa1\Tabla.txt Delimited With Character |

Select Cuenta,Agencia,Producto,Generico,Modalidad,Segmento From Tabla1 Where N_Agenci="Agencia1" or N_Agenci="Agencia2" or N_Agenci="Agencia3" or N_Agenci="Agencia4"


Copy To 'Agencias.xls' Type Foxplus


Thisform.releace()


Basicamente de la tabla 1 saco las 4 agencias y las meto en un excel. Y si lo hace me crea el excel y todo pero me muestra la consulta en pantalla y es lo que no quiero que haga.


de antemano 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
sin imagen de perfil
Val: 1.545
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Fidel José (624 intervenciones) el 09/07/2018 17:29:51
Select Tabla1
Zap
Append From 'C:\Programa1\Tabla.txt Delimited With Character |

lcCursor = SYS(2015) && crea un nombre único de cursor

Select Cuenta,Agencia,Producto,Generico,Modalidad,Segmento From Tabla1 Where N_Agenci="Agencia1" or N_Agenci="Agencia2" or N_Agenci="Agencia3" or N_Agenci="Agencia4" TO CURSOR (LCCURSOR)

SELECT (lcCursor)
Copy To 'Agencias.xls' Type Foxplus


USE IN SELECT(m.lcCursor)
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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 11/07/2018 03:34:04
Fidel Muchísimas gracias ya se cierra y no me aparecen las consultas.

Básicamente ya esta, lo ultimo que me falta.. es que cuando Excel manda a llamar a mi programa de FOX, me aparecían dos ventanas que era la grandota de FOX y el Form que es más pequeño, desde que puse el archivo Config.fpw con Screen = OFF, la Grande ya no aparece, solo me aparece el FORM y cuando termina pues se cierra, existe forma de que tampoco aparezca??

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
sin imagen de perfil
Val: 1.545
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Fidel José (624 intervenciones) el 11/07/2018 17:09:43
Si no quieres que se muestre un form, simplemente coloca to código en el main prg o en una clase no visual (una custom por ejemplo).
En el adjunto te muestro un ejemplo de un proyecto que no tiene ningún formulario. Solamente usa la clase lib_semaforos.vcx de Fernando D. Bozzo para determinar si el programa ya se está ejecutando. Las rutinas están incluidas en el mismo prg.
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
Imágen de perfil de Eduardo Ureña Solano
Val: 89
Ha disminuido su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cerrar Ventana Proceso.

Publicado por Eduardo Ureña Solano (116 intervenciones) el 03/07/2018 22:22:38
Aparte de la pregunta. ¿Por qué está trabajando en una versión tan antigua de VFP?
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
Imágen de perfil de César

Cerrar Ventana Proceso.

Publicado por César (11 intervenciones) el 04/07/2018 02:24:36
Hola Eduardo, es el que manejan en la empresa jaja realmente no se tiene permitido usar nada, pero solo cuentan con FoxPro 6.0 yo también pensaba lo mismo. pero como es una INTRANET no se puede instalar nada. digamos que tenemos que trabajar con lo que hay que es EXCEL y FOX
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