FoxPro/Visual FoxPro - Te pago $50 si descubris el problema!

 
Vista:

Te pago $50 si descubris el problema!

Publicado por ana maria (22 intervenciones) el 07/11/2004 06:23:13
PAGO 50 pesos a quien me resuelva este problema.
(Si no vivis en argentina prometo mandarte 16 u$s por correo a la direccion que me digas)

debe haber una orden "SET" que solucione mi problema

Necesito saber que sentencia tengo que incorporar al PRG
para que NO aparezca un recuadro de dialogo
fuxia en medio de pantalla con la orden "SELECT DATABASE"
y directamente aparezca la ventana de error "No database in use"

Por favor pueden ahora ejecutar el foxpro y crear un PRG de 1 sola linea
lineas como ejemplifico abajo?

* PROGRAMA DE EJEMPLO
BROW
*FIN DEL PROGRAMA

Gracias a todos. Desde ya quedo enteramente a vustra disposicion para colaborar con cosas que yo pudiera saber. Gracias nuevamente.

PD Recorda que:
Quiero que no aparezca esa ventana fuxia que me da a elegie un dbf.

Esta ventana fuxia surge automaticamente como respuesta de Fox cuando se ejecuta una orden para usar con un DBF abierto y no hay nunguno abierto.

El objetivo final es que cuando ejecutes el programa directamente aparezca "no database in use"

Asi de simple.

Gracias.

Si te quedan dudas escribime!
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

RE:Te pago $50 si descubris el problema!

Publicado por Roman Suazo (2723 intervenciones) el 07/11/2004 18:24:40
No creo que se pueda ya que el mismo BROWSE me imagino que trae incorporado en su propio codigo abrir la ventana en caso de fallo...El asunto es que debes ser mas precavida en tu codigo, es decir, SIEMPRE checar que haya una tabla disponible antes de realizar ciertos operaciones. Ademas puedes crear tu propio browse, poniendo un grid en una forma y crear una clase a aprtir de la idea... asi pudiendo atrapar este tipo de errores.
Lo mejor siempre sera programar siempre a la defensiva...
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

TE AGRADEZCO EL BUEN CONSEJO PERO ......

Publicado por ana maria (22 intervenciones) el 08/11/2004 02:40:36
TE AGRADEZCO EL BUEN CONSEJO PERO no puedo modificar el codigo ya que es ENORME 600 submodulos!!!

A tu disposicion para lo que necesites!!!!

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

RE:Te pago $50 si descubris el problema!

Publicado por Plinio (7841 intervenciones) el 07/11/2004 20:21:01
El browse funciona con una tabla abierta, al ejecutar el comando y no encontrar niguna tabla este intenta abrir una.

Si se te es extrano encontrar un error en VFP puedes usar el comando SET STEP ON para que en el debugger salgan lineas por lineas.
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

RE:Te pago $50 si descubris el problema!

Publicado por Edgar Zambrano (90 intervenciones) el 08/11/2004 20:28:47
no entiendo todavia que es lo que necesitas. según mi persona, necesitas comprobar si tienes o no, una base de datos abierta o si tienes algunas tablas abiertas.

sacame de esa duda a ver si te puedo ayudar creando un prog de ejemplo.


Edgar Zambrano
[email protected]
Soledad - Atlántico - Colombia
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

RE:Te pago $50 si descubris el problema!

Publicado por Gregory (187 intervenciones) el 08/11/2004 20:44:39
Facil, lo que tienes que hacer es: (colocar en el lugar del BROW)
if !Database()
bdx =messagebox("No hay base de datos habierta"+chr(13)+;
"Desea habrir una base de datos?",36,"Aviso")
do case bdx
case bdx = 6
browse
endcase
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

***** MAS ACLARACIONES PARA MIS VALIENTES !!

Publicado por ana maria (22 intervenciones) el 08/11/2004 21:49:53
Quiero que fox no despliegue esa ventana fuxia

Fox la dispara automaticamente cuando se ejecuta una orden para base de datos sin haber base de datos abierta.

POR EJEMPLO
si ejecutas el comando brow o edit, o skip o replace, etc
sin antes aber abierto el DBF

ES INCREIBLE QUE SE DISPARE UNA RUTINA INTERACTIVA
DE FOX AUNQUE EL PROGRAMA ESTE COMPILADO

CONFIO EN QUE PUSIERON ALGUNA MANERA DE EVITAR
LA APARICION DE ESTA VENTANA.

Por el tipo de aplicacion que tengo hecha, se abren varios archivos distintos al la vez y desde varias terminales, por eso, a veces, si alguna terminal se cuelga, me borra o arruina el dbf con el que estaba trabajando.

Esto esta previsto y se soluciona sin problemas porque trabajo solo sobre archivos temporales. Es decir que si ocurre un problema de este tipo, simplemente reconstruyo el archivo temporal y listo.

Ahora bien, EL PROBLEMA ES QUE ANTES DE YO PODER DETECTAR QUE UN ARCHIVO SE ARRUINO (ENTES DE PODER CAPTURAR EL ERROR (ERROR Nº 52 "NOT DATABASE IS IN USE") Y AUTOMATICAMENTE RECONSTRUIR EL TEMPORAL
"APARECE LA VENTANA MALDITA!!!!!!!!!

y LOS OPERADORES QUE SON PETRO-CEFALICOS SE CAMBIAN DE DIRECTORIO, ELIJEN ARCHIVOS AL AZAR POR SIMPATIA Y ME DESTRUYEN MESES DE HISTORIALES. SNIF! : (

No se si quedo mas claro.

Necesito alguna orden (seguramente sera algun sys o algun set o algo para el config.fp) que evite esta ventana que da para elgir un dbf y salte directamente al error "not databse is in use"

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

RE:***** MAS ACLARACIONES PARA MIS VALIENTES !!

Publicado por Roman Suazo (2723 intervenciones) el 08/11/2004 22:14:48
Lo mas facil que tenes es que crear tu propia funcion..el Fox te proporciona las herramientas para reemplazar el comando BROWSE por el nombre de tu funcion...

Al principio de tu aplicacion solo definis donde se encuentran tus funciones y listo
(con SET PROCEDURE).

La funcion seria algo asi (puede ser que el falte algo):

Lparameter TablaActual

If used(tablaActual)
browse
else
*Generas el error con cualquier otro comando que no se BROWSE
endif


Esta funcion la llamarias algo asi:

MiBrowse(alias())

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

RE:***** MAS ACLARACIONES PARA MIS VALIENTES !!

Publicado por Saul (362 intervenciones) el 08/11/2004 23:53:32
Hoolaaaaa
Antes de darte una solución te quiero dar unos consejos.
1.- No maldigas tu pc (es la que te da de comer)
2.- Seria incapaz de cobrarte los 16 dolares, se supone que este foro es
para los que no sabemos.

3.- Antes de darle un Browse, Edit o Skip, la regla No. uno es tener una base de datos abierta.
y si tu archivo no te la abre porque no existe o porque esta dañana pues hay te va el codigo.

Espero haber colaborado con tigo..
bye

Saludos desde Guatemala.
Ing. Saúl Hernández.

ON ERROR DO errhand WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
USE nodatabase
*BROWSE
ON ERROR
PROCEDURE errhand
PARAMETER merror, mess, mess1, mprog, mlineno
CLEAR

WAIT WINDOWS 'Error number: ' + LTRIM(STR(merror)) +CHR(13)+;
'Error message: ' + mess +CHR(13)+;
'Line of code with error: ' + mess1 +CHR(13)+;
'Line number of error: ' + LTRIM(STR(mlineno)) +CHR(13)+;
'Program with error: ' + mprog
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