¿Dónde debo escribir mi rutina para errores en Visual FoxPro
Se un poco acerca de como detectar errores con el comando on error, pero tengo unas pequeñas dudas de como emplearlo: a)Donde debo escribir mi rutina para errores. b)Puedo escribir varios mensajes de error para diferentes tipos de errores por ejemplo:para errores de archivos, de impresión, etc... ¿y cómo debo de hacer esto? c)Me podrías dar un pequeño ejemplo de "on error", con dos tipos de errores diferentes.
Gracias...
3 Respuestas
Respuesta de César Pech
1
1
César Pech, Me defiendo en lo que a VFP se refiere
La rutina de errores es muy conveniente que lo escribas en un procedimiento separado. Para poder "personalizar" tu mensaje de error es preciso que conozcas los códigos de error. ON error Do _Error WITH ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO() "_error.prg" -------------------- PARAMETER merror, mess, mess1, mprog, mlineno dO CASE cASE mERROR = 1705 &&ACCESO DENEGADO MessageBox ('UNO O VARIOS NO PUEDEN SER ABIERTOS EN FORMA COMPARTIDA !!!'+chr(13); +chr(13)+'* Tal vez intenta abrir el sistema mas de una vez.'+; chr(13)+'* Verifique su barra de tareas.'+chr(13)+chr(13)+; 'Si desea más información llame al administrador de cómputo...'+chr(13)+Chr(13)+; 'El sistema se finalizará...', 16, Mess) On shutdown Quit Otherwise MessageBox('Número de error: ' + LTRIM(STR(merror))+chr(13)+'Mensaje de error: ' + mess +chr(13)+'Línea de código con error: ' + mess1 +chr(13)+'Número de línea del error: ' + LTRIM(STR(mlineno)),16,'Error de sistema') Endcase
- Anónimoahora mismo
Respuesta de miron
1
1
miron, ¡¡La vida es un constante movimiento, la quietud es la muerte!!
Ejemplo: Utilizando código directo PRG ON ERROR DO contrerr && contrerr es el procedimiento del controlador de error. BRWS && Produce un error de sintaxis. ON ERROR && Restaura el tratamiento de errores del sistema. PROCEDURE contrerr = AERROR(aErrorArray) && Datos del error más reciente. CLEAR ? 'El error ofreció la siguiente información' && Muestra el mensaje. FOR n = 1 TO 7 && Muestra todos los elementos de la matriz. ? AMatrizError(n) ENDFOR En los forms el el evento "error" es donde se pone el código Estudia la función aerror() AERROR( ) (Función) Crea una matriz de variables de memoria con información relativa al error más reciente de Visual FoxPro u ODBC. Sintaxis AERROR(NombreMatriz) Tipos devueltos Numeric Argumentos NombreMatriz Especifica el nombre de la matriz que creará AERROR( ). Comentarios AERROR( ) crea una matriz unidimensional con seis columnas y devuelve el número de filas de la matriz. El tipo de error que se produce determina el número de filas de la matriz. La siguiente tabla describe el contenido de cada elemento cuando ocurre un error de Visual FoxPro. Cuando se produce un error de Visual FoxPro, la matriz contiene una fila. Número de elemento Descripción 1 Numeric. El número del error. Es idéntico al valor devuelto por ERROR( ). 2 Character. El texto del mensaje de error. Es idéntico al valor devuelto por MESSAGE( ). 3 El valor nulo. No obstante, si el error tiene un parámetro de error adicional, contiene el texto de dicho parámetro. Es idéntico al valor devuelto por SYS(2018). 4 El valor nulo. No obstante, cuando corresponda, contiene el número del área de trabajo donde se produjo el error. 5 El valor nulo. No obstante, si ha fallado un desencadenante (error 1539), contiene uno de los siguientes valores numéricos: 1 - El desencadenante Insert falló. 2 - El desencadenante Update falló. 3 - El desencadenante Delete falló. 6 El valor nulo. 7 El valor nulo. La tabla siguiente describe el contenido de cada elemento cuando ocurren errores OLE con los números 1427 ó 1429. Cuando ocurren estos errores OLE, la matriz contiene una fila. Número de elemento Descripción 1 Numeric. Contiene 1427 ó 1429. 2 Character. El texto del mensaje de error de FoxPro. 3 Character. El texto del mensaje de error de OLE. 4 Character. El nombre de la aplicación (por ejemplo, Microsoft Excel). 5 El valor nulo o Character. Contiene el nombre del archivo de Ayuda de la aplicación, donde hay más información sobre el error; de lo contrario, contiene el valor nulo. 6 El valor nulo o Character. Contiene el Id. De contexto de la Ayuda para el tema de Ayuda si hay información disponible en la aplicación; de lo contrario, devuelve el valor nulo. 7 Numeric. Un número de excepción de OLE 2.0. La tabla siguiente describe el contenido de cada elemento cuando ocurre un error ODBC numerado como 1526. Cuando ocurre un error ODBC, la matriz contiene dos o más filas; una fila para cada error ODBC. Número de elemento Descripción 1 Numeric. Contiene 1526. 2 Character. El texto del mensaje de error. 3 Character. El texto del mensaje de error de ODBC. 4 Character. El estado actual SQL de ODBC. 5 Numeric. El número de error del origen de datos ODBC. 6 Numeric. El controlador de conexión ODBC. 7 El valor nulo.
En general en tu programa tienes que tener un programa inicial, en el mismo podes poner la instrucción on error, el cual se encarga normalmente de cerrar tu aplicación en forma ordenada, guardando información sobre los errores ocurridos. Para el control más fino de los errores, te conviene utilizar el método error que viene en cada objeto de fox. Por ejemplo, si un formulario te da un error, te fijas cual es el numero de error y en el método error, escribís código para controlar ese error especifico. Si tu objeto no controla el error, entonces la rutina global establecida con on error lo hará. Para controlar distintos errores, podes utilizar una instrucción de control do case / end case, utilizando el n° de error que se pasa al método error. ¿Qué version de vfp estas utilizando? ¿Tienes instalada la ayuda en linea?
Gracias por tu ayuda, tengo la version 6.0 de visual fox, pero no tengo la ayuda en linea, lo que pasa es que el software que tengo es una version pirata es estoy practicando y conociendo el sistema, de echo es muy bueno y tiene muchas ventajas. Gracias...
Te puedo mandar el manual del programador 2.29 mb un pdf comprimido con el winrar. Te recomiendo que te des una vuelta por www.portalfox.com en donde vas a encontrar todo tipo de información, tutoriales, artículos, archivos, etc.
Sabes me interesa mucho ese manual del programador, no sabes cuanto me podría ayudar en muchas dudas que me surgen, ojala y no fuera mucha molestia y me lo pudieras enviar por correo, te lo agradecería muchísimo. Si me puedes enviar, envíamelo por favor a las siguientes direcciones: [email protected] ( correo personal ) [email protected] ( del trabajo ) Me serviría mucho ya que en ocasiones la misma ayuda de vfp, hace referencia a este manual, muchas gracias nuevamente gracias por ayudarme...
Ya deberías recibirlo, si es que tu servidor de mail te permite recibir un adjunto de ese tamaño