FoxPro/Visual FoxPro - Trabajar con grid en visual fox pro

 
Vista:
sin imagen de perfil

Trabajar con grid en visual fox pro

Publicado por xavier (2 intervenciones) el 14/05/2016 03:29:06
Buenas tardes estimados amigos Foxeros, Esperando todo esta bien.

Les escribo para solicitarles por favor apoyo en lo siguiente:

1- Estoy trabajando con una grid y dos formularios de visual fox 9, Una vez encuentro el registro en el primer form de busqueda envio los datos al segundo form hasta ahi todo bien, El lio es que en segundo form tengo una opcion de salir ejecuto un close all , pero resulta a veces no puedo ingresar nuevamente me indica el archivo esta en uso, me imagino es la consulta del select o el cursor del select, Saben como solucionar este problemita???

2- En la misma grid donde tengo la consulta o busqueda se puede activar el mouse para moverse con el mouse hacia arriba/abajo y navegar sobre los registros??

3-Se puede adjuntar imagenes pdf o jpg en un form de visual fox y guardar en una tabla??

4- Es posible enviar correos desde visual fox a usuarios especificos o masivos???


Agradeciendo de ante mano sus sugerencias

Slds
Xavier Gutiérrez
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.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Trabajar con grid en visual fox pro

Publicado por Fidel José (657 intervenciones) el 14/05/2016 14:27:31
1- Como no pones el código que empleas, es muy poco lo que se puede decir.
1.1.) Si estás haciendo un SELECT SQL y lo diriges a un cursor (INTO CURSOR) ese problema no se presenta. Si lo diriges a una tabla que ya está abierta, tendrás ese problema. Necesitas cerrar la tabla antes.
1.2.) CLOSE ALL es un comando que debería utilizarse solamente en la rutina de cierre o por razones muy específicas.

Desde ya asumo que utilizas apertura manual de tablas, porque de lo contrario, el CLOSE ALL hubiera terminado con tu programa.
Y también asumo que no utlizas Sesión Privada de Datos, sino que trabajas en el Datasession por default (o sea 1).

Para evitar este tipo de comandos y también evitar que pululen tablas abiertas que no se necesitan (estando en riesgo), se puede utilizar un tipo de rutina como el siguiente:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
* Supongamos que necesitamos 3 tablas para ejecutar un SQL
* CLIENTES,FACTURAS,PRODUCTOS
LOCAL lcTablesOpen,lcTablesUse,I,;
	lnTally
 
lcTablesOpen = ""
lcTablesUse = "CLIENTES,FACTURAS,PRODUCTOS"
 
* Abre las tablas que están cerradas
FOR i = 1 TO GETWORDCOUNT(m.lcTablesUse,",")
	lcTable = GETWORDNUM(m.lcTablesUse,i,",")
	IF !USED(m.lcTAble)
		USE (lcTable) IN 0 SHARED AGAIN
		lcTablesOpen = m.lcTablesOpen + lcTable + ","
	ENDIF
NEXT
 
* Crea el cursor mediante select sql
SELECT * (etc) INTO CURSOR curFacturas
lnTally = _tally	&& cantidad de registros obtenidos
 
* Cierra las tablas que estaban cerradas
FOR i= 1 TO GETWORDCOUNT(m.lcTAblesOpen,",")
	lcTAble = GETWORDNUM(m.lcTablesOpen,i,",")
	IF !EMPTY(m.lcTable) AND USED(m.lcTable)
		USE IN SELECT(m.lctable)
	ENDIF
NEXT
 
IF m.lnTally > 0	&& si el cursor tiene registros
	DO FORM frm_Secundario WITH "curFacturas"
ENDIF
 
* En el destroy del formulario donde estaría este código
* se debe cerrar el cursor, si fue creado
IF USED("CURFACTURAS")
	USE IN CURFACTURAS
ENDIF
Obviamente, en producción, esta rutina debería estar separada, por lo menos, en tres partes:
a) Rutina que efectua la apertura de tablas (que deberá devolver si tuvo que abrir o no la tabla)
b) Rutina que cierre las tablas de una lista
c) La rutina central que maneja a las otras 2

También tienes que tener en cuenta que el planteo que expongo es un poco elemental, no tiene control de errores, ni control de problemas de apertura.
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

Trabajar con grid en visual fox pro

Publicado por neo (1604 intervenciones) el 18/05/2016 16:00:50
Supongo que trabajas con tablas dbf

Respuesta 1:
Posiblemente abres alguna tabla con "use" y VFP te dice que ya existe una tabla abierta por tal motivo muestra error.

Respuesta 2:
Se va por default, siempre y cuando tengas el enfoque en el grid

Respuesta 3:
Si es posible adjuntar pdf o jpg (el segundo caso es mas simple de mostrar en form)

Respuesta 4:
Tambien es posible enviar correos desde VFP, en lo personal me gusta mucho y me simplifica hacer esa tarea con foxypreviewer

Saludos!!
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