Usuario
Capturar un error del sistema con Visual Basic 6

Pregunta
-
Hola buenos días.
No se si está pregunta está ya respondida o no, pero no he encontrado nada que me pueda valer. El tema es que tengo una aplicación que llama a un módulo de java y este devuelve un error al sistema (0 si es correcto y 1 si es incorrecto), pero no se como capturar ese error. Seguro que es una chorrada, pero no he encontrado nada.
Muchas gracias!!
Todas las respuestas
-
Al inicio del procedimiento puedes colocar
..sub o funtcion...
on error goto lbl_error
..proceso
..proceso
lbl_salir:
exit sub o function
lbl_error:
msgbox err.description
resume lbl_salir
-----
Lo ideal es tener una función para manejar errores, a la cual le pasas el numero de error y allí se muestra al usuario el mensaje.
-
Gracias por tu respuesta, pero esto no me vale, ya que el programa, o mejor dicho, la llamada a la función de java, no devuelve ningún error en sí, si no que lo que hace es validar un dato y devolver un 0 ó un 1 dependiendo de si es correcto ese dato o no. Eso me valdría si la ejecución del programa de visual basic diera un error, pero un código que devuelve el programa de java como error del sistema no se puede tratar con ese control de errores.
-
Si lo que haces es llamar a una función de un módulo en Java lo que debes hacer es controlar el error desde la parte de Java.
Si lo que quieres es capturar el error desde VB 6 puedes, por ejemplo, trabajar con variables de entorno en la que guardes el error desde Jave y lo recuperes luego desde VB6.
Saludos, Javier J
-
-
El programa funciona bien, pero el módulo de java, tiene que devolver un código de error (0 ó 1) dependiendo de si el nif es correcto (el nif se le pasa con la caja de texto Text1.text). Eso lo tiene que hacer por que la ejecución del programa es correcto, pero no se como capturar ese código que devuelve java al sistema.
El código del programa es el siguiente
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Dim Ruta As String
Private Sub Command1_Click()
On Error GoTo ONOFRE
Dim Inicio As STARTUPINFO
Dim Proceso As PROCESS_INFORMATION
Dim CodigoError As Integer
Ruta = "Java -Jar d:\ValidarNif\ValNif.jar " & Text1.Text
'Lanza el proceso
Inicio.cb = Len(Inicio)
CreateProcessA 0&, Ruta, 0&, 0&, 1&, &H20&, 0&, 0&, Inicio, Proceso
'Espera hasta la terminación (Tiempo infinito)
WaitForSingleObject Proceso.hProcess, &HFFFFFFFF
'Cierre el proceso
CloseHandle Proceso.hThread
CloseHandle Proceso.hProcessEnd sub
-
Si lo que haces es llamar a una función de un módulo en Java lo que debes hacer es controlar el error desde la parte de Java.
Si lo que quieres es capturar el error desde VB 6 puedes, por ejemplo, trabajar con variables de entorno en la que guardes el error desde Jave y lo recuperes luego desde VB6.
Saludos, Javier J
-
-
Javier, creo que el planteamiento inicial no es correcto. Realmente lo que deseas es obtener un valor devuelto por una aplicación Java.
http://www.reocities.com/Hollywood/boulevard/1781/capitulo_especial.htm
Javier, creo que esto que me has puesto no vale, por que yo no tengo un .class que incorporar a la aplicación. Yo desde mi código visual basic, ejecuto un .jar (que es un validador de nif) al cual se le pasa un parámetro. Hasta ahí lo tengo controlado. El problema me surge por que esa llamada al .jar devuelve un valor (que lo devuelve como error del sistema) y yo desde el código de visual basic no se como recuperar ese valor. Imagino que en visual existe alguna librería o algo que haga referencia a los errores del sistema para poder controlarlos de alguna forma. Eso es lo que necesito, como acceder a los errores que se han producido en el sistema.
Gracias