Algo extraño solo con vfp9 sp1 y sp2

47 views
Skip to first unread message

Novato

unread,
Aug 15, 2009, 10:26:34 AM8/15/09
to Mundo Visual FoxPro
Hace mucho tiempo uso foxpro, desde 2.0 , 2.6, vfp6 y actualmente vfp9
y salvo adaptar las partes se puede decir que nunca tuve grandes
problemas, sin embargo algo me ocurre con esta versión
En un procedimiento de selección busco la tabla utilizar, pero cuando
es la ultima no funciona esto es no selecciona la tabla, lo curioso es
que cuando uso el depurador ¡O sorpresa, la selecciona sin
problemas!.
Esto mismo ya me sucede con otras rutinas y no encuentro una
explicación ni una solución que se adecue para todos los casos, si
alguno me puede ayudar.
Desde ya muchas gracias.

If hacer=1
m.cliente=cliente
Sele clientes
Set Order To cliente
Seek m.cliente
Else
If hacer=2
m.provee=provee
Sele provee
Set Order To provee
Seek m.provee
Else
If hacer=3
m.codigo=codigo
Sele almacen
Set Order To codigo
Seek m.codigo
Else
If hacer=4
m.codigo=codigo
Sele asociar
Set Order To codigo
Seek m.codigo
Else
m.codigo=codigo
Sele transp
Set Order To codigo
Seek m.codigo
Endif
Endif
Endif
Endif

Guillermo Anibal garcia

unread,
Aug 15, 2009, 10:50:43 AM8/15/09
to Mund Visual FoxPro, humb...@ints.com.ar
Hola Colega:
Se ve que venis de Foxpro. quizas es mas conveniente utilizar el do case en este caso en lugar del if. Y no es conveniente estar seteando el indice cada vez que lo seleccionas (le estas haciendo perder un tiempo innecesario al proceso, a menos que esa misma tabla la utilies con distintos indices en este mismo proceso) , pues tu puedes abrir la tabla directamente asi
use clientes tag cliente in 0
En lo que respeta a tu codigo, aparantemente esta todo bien. Enviame si queres, todo el programa y/o formulario, que le pego una ojeada para tratar de ayudarte
Saludos
Guillermo
 
PD: Somos los dos argentinos, me parece
 
> Date: Sat, 15 Aug 2009 07:26:34 -0700
> Subject: [Mundo Visual FoxPro] Algo extraño solo con vfp9 sp1 y sp2
> From: humb...@ints.com.ar
> To: mundovis...@googlegroups.com

Cristobal Galvan

unread,
Aug 15, 2009, 4:37:26 PM8/15/09
to mundovis...@googlegroups.com
*-- La forma de usar
*-- Sintaxis (1)
MiPrograma(MiVariable)
*-- Sintaxis (2)
MiPrograma(1, AquiVaTuVariable, TuBaseDeDatos, TuOrden)
*-- Form completa
IF MiProgram(1)
&& Algo Verdadero
ELSE
&& Algo Falso
ENDIF
 
*************************
* Utiliza preferentemente DO CASE... ENDCASE en lugar de IF...ENDIF
*************************

*-- Estilo 1, con parametro HACER
LPARAMETERS lparHacer
DO CASE
CASE
lparHacer = 1
=
SEEK(m.Cliente, "CLIENTES", "CLIENTE")
CASE lparHacer = 1
=
SEEK(m.Provee , "PROVEE" , "PROVEE")
CASE lparHacer = 1
=
SEEK(m.Almacen, "ALMACEN", "CODIGO")
CASE lparHacer = 1
=
SEEK(m.Asociar, "ASOCIAR", "CODIGO")
CASE lparHacer = 1
=
SEEK(m.Transp , "TRANSP", "CODIGO")
ENDCASE
*-- Estilo 2, con parametros HACER, VARIABLE, BASEDEDATOS, ORDEN
LPARAMETERS lparHacer, lparVariable, lparDBF, lparOrden
*-- La variable llFound es del tipo logico (.T. .F.)

* 1
llFound = SEEK(lparVariable, lparDBF, lparOrden)
RETURN llFound
* 2
RETURN SEEK(lparVariable, lparDBF, lparOrden)
 
*-- Estilo (tuyo)
If hacer=1
m.cliente=cliente
Sele clientes
Set Order To cliente
Seek m.cliente
ELSE
If
hacer=2
m.provee=provee
Sele provee
Set Order To provee
Seek m.provee
ELSE
If
hacer=3
m.codigo=codigo
Sele almacen
Set Order To codigo
Seek m.codigo
ELSE
If
hacer=4
m.codigo=codigo
Sele asociar
Set Order To codigo
Seek m.codigo
ELSE
m.codigo=codigo
Sele transp
Set Order To codigo
Seek m.codigo
ENDIF
ENDIF
ENDIF
Endif
 
*-- Espero te ayude

Cristobal E. Galvan Nicasio


 
> Date: Sat, 15 Aug 2009 07:26:34 -0700
> Subject: [Mundo Visual FoxPro] Algo extraño solo con vfp9 sp1 y sp2
> From: humb...@ints.com.ar
> To: mundovis...@googlegroups.com
>
>

GOOD_FOX

unread,
Aug 15, 2009, 10:32:32 PM8/15/09
to Mundo Visual FoxPro

Hola ke tal...

Algo parecido me sucede (no siempre), tengo varios procedimientos y
funciones,
y en ocasiones ejecuto el código y se supone que debería de hacer algo
y no lo hace, reviso el código y es correcto, ejecuto el depurador y
lo hace. ¿Cuál es el problema?

El problema reside en que a veces Vfp. no logra actualizar el archivo
compilado FXP, por alguna razon no lo hace, entonces la solucion que
he encontrado, cuando detecto esto, tengo una rutina que uso desde la
línea de comando DO DELALL, la cual elimina archivos temporales,
indices IDX, y los archivos compilados FXP y vuelvo a ejecutar el
programa y Listo..!! todo vuelve a la normalidad.

Esto lo hace en la versión 6.0 en la Version 9.0 creo no lo he
detectado, pero por si las dudas, siempre ejecuto mi rutina de borrar
temporales para no tener problemas..


Saludos


Good_Fox

mcantor

unread,
Aug 16, 2009, 10:10:18 PM8/16/09
to Mundo Visual FoxPro
amigo... yo tuve un problema parecido y lo solucione colocando en el
"environment" de cada forma las tablas que necesito en todas las
rutinas de la forma..
No se si te ayude pero reviza...

Fabricio

unread,
Aug 19, 2009, 5:28:45 PM8/19/09
to Mundo Visual FoxPro
A como comentan otros, VFP por alguna razon no recompila
el .prg .vcx .scx o .frx, pero al acceder al depurador lo hace, por
eso es que funciona.

Yo hago algo parecido a lo que comenta Good_Fox, pero un poco mas
radical por medio de un .prg
- Elimino todos los archivo compilados: .fxp, .mnx, etc.
- Abro cada .vcx y cada .scx como tabla y blanqueo el campo ObjCode
- Recompilo todos los .vcx, .scx y .frx
- Problema resuelto

Hice esto por que me daba el mismo error en los codigo de clases o de
formulario

Saludos

Fabricio

MiguelAngel

unread,
Aug 20, 2009, 9:32:38 AM8/20/09
to Mundo Visual FoxPro
Fabricio reviza el proyect info, es donde se excluyen los archivos de
nuestro proyecto

di por favor, luego gracias

unread,
Aug 20, 2009, 9:56:56 AM8/20/09
to Mundo Visual FoxPro
blanqueo el campo ObjCode, que quiere decir, perdon mi ignorancia

Fabricio

unread,
Aug 22, 2009, 12:33:56 PM8/22/09
to Mundo Visual FoxPro
Blanquear un campo significa usar el comando BLANK

por ejemplo: tenemos un formulario llamado frmPrueba
las instrucciones para eliminar el codigo compilado y forzar la
recompilacion serian:

Use frmPrueba.SCX
Blank All Fields ObjCode
Use
Compile Form frmPrueba

Si queremos hacerlo para todos nuestros form o clases visuales habra
que poner un ciclo for y efectuar las primeras dos instrucciones por
cada archivo en particular, al salir del for ejecutaremos las
instrucciones:
Compile ClassLib *.VCX
Compile Form *.SCX

Con esto se consigue recompilar por completo los form, ya que cuando
dan errores es que por algun motivo desconocido fox no actualiza el
codigo compilado, por eso cuando lo revisamos con el depurador lo
obligamos a recompilar y por eso funciona diferente.

Saludos

Fabricio

On 20 ago, 07:56, "di por favor, luego gracias" <maovi...@hotmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages