p2p.wrox.com Forums

Need to download code?

View our list of code downloads.


  Return to Index  

asp_espanol thread: Otra posibilidad que On Error Resume Next


Message #1 by "Jose Ignacio Saavedra Vivas" <ignaciosaavedra@h...> on Fri, 16 Aug 2002 04:33:06 +0000
Hola a todos.

Tengo el siguiente problema. Tengo una rutina que inserta en una base de 
datos. Yo le tengo un chequeo porque la llave principal de la BD es el campo 
Passw. Entonces si alguien trata de insertar un password que ya existe, se 
le informa debidamente al usuario . Esto funciona perfectamente cuando luego 
de insertar una clave se cierra el Visual Interdev y luego se vuelve a 
arrancar. Pero si en una misma sesion, es decir, sin arrancarlo de nuevo, se 
inserta una clave y luego se vuelve a insertar, sucede que el script de 
Visual  Basic no detecta el error, dice que adiciono la clave cuando en 
verdad no lo hace. Esto se debe creo al uso de On Error Resume Next y su 
codigo de retorno de error Err.Number. Conoce alguien otra forma de 
manipular los errores, cosa que en una misma sesion (es decir un solo 
arranque del navegador IE) se puedan obtener codigos de retorno de error 
distintos, uno para cuando adiciona (que creo siempre es 0) y otro para 
cuando no adiciona realmente?

Para mayor claridad incluyo el codigo que estoy utilizando en ASP.

Gracias por la ayuda que me puedan dar.


function inicio() {
<%
On Error Resume Next

Response.Write "var estatus="

'Definir y asignar variable local.
dim clave_to_add_vb
dim estado_vb
set clave_to_add_vb = Request.QueryString("clave_to_add")

'Insertar en la BD
insertar = "INSERT INTO Passwords SELECT " & Q & 2 & Q & " AS Grupo, " & Q & 
clave_to_add_vb & Q & " AS Passw"

oRS = conexion3.Execute(insertar)

estado_vb = Err.Number
With Response
	.Write estado_vb
End With

oRS.Close
conexion3.Close
set conexion3=Nothing
set oRS=Nothing
Response.Write vbCrLF
%>
switch (estatus) {
	case 0:
		alert("Clave adicionada con exito!!!")
	break
	default:
		alert("Clave no adicionada. Posibles causas entre otras: BD solo lectura  
o  La clave ya existe")
	break
}
location="admin2.htm"
}
//
window.onload=inicio
</script>


José Ignacio Saavedra Vivas
email: ignaciosaavedra@h...
teléfono casa: 571-7676180
dirección casa: Avenida Caracas Nro. 42A-09 Sur
Bogotá, D.C., Colombia

_________________________________________________________________
MSN. Más Útil cada Día. http://www.msn.es/intmap/

Message #2 by "Olivier SAUVE " <oliviersm@c...> on Fri, 16 Aug 2002 12:33:21 GMT
Si usas ON ERROR GOTO NEXT eso implica que debes inicializar el objeto 

Err ANTES de ejecutar toda sentencia importante y hacer una comprobacion 

 de dicho objeto JUSTO DESPUES de la ejecuci=F3n de dicha sentencia=3A

On Error Goto Next
=2E=2E=2E
Err=2EClear()
cnx=2EExecute StrSQL
If (Err=2ENumber =3C=3E 0) Then
    =27 Tratamiento del ERROR
End If =27 Sino es que todo va bien y se puede seguir
=2E=2E=2E
Err=2EClear()
cnx=2EExecute StrSQL  =27 o cualquier sentencia que desees depurar
If (Err=2ENumber =3C=3E 0) Then
    =27 Tratamiento del ERROR
End If =27 Sino es que todo va bien y se puede seguir

Con este m=E9todo no hay duda alguna de desde d=F3nde viene el error=2E A
unque 

creo que en la version 3=2E0 de ASP existe un objeto nuevo llamado 

ASPError=2C pero a=FAn no he podido meterme con =E9l=2E

Debeis saber que el tratamiento de Errores es FUNDAMENTAL para que no se 

descontrole la aplicaci=F3n y/o el sistema!!!! Ocupa tanto sino MAS codig
o 

que la funcionalidad en si=2E

Salu2 a todos y suerte

Olivier M=2E SAUVE

----- Mensaje Original -----
De=3A =22Jose Ignacio Saavedra Vivas=22 =3Cignaciosaavedra=40hotmail=2Eco
m=3E
Fecha=3A Viernes=2C Agosto 16=2C 2002 6=3A33 am
Asunto=3A =5Basp=5Fespanol=5D Otra posibilidad que On Error Resume Next

=3E Hola a todos=2E
=3E 

=3E Tengo el siguiente problema=2E Tengo una rutina que inserta en una 

=3E base de 

=3E datos=2E Yo le tengo un chequeo porque la llave principal de la BD 

=3E es el campo 

=3E Passw=2E Entonces si alguien trata de insertar un password que ya 

=3E existe=2C se 

=3E le informa debidamente al usuario =2E Esto funciona perfectamente 

=3E cuando luego 

=3E de insertar una clave se cierra el Visual Interdev y luego se 

=3E vuelve a 

=3E arrancar=2E Pero si en una misma sesion=2C es decir=2C sin arrancarlo
 de 

=3E nuevo=2C se 

=3E inserta una clave y luego se vuelve a insertar=2C sucede que el 

=3E script de 

=3E Visual  Basic no detecta el error=2C dice que adiciono la clave 

=3E cuando en 

=3E verdad no lo hace=2E Esto se debe creo al uso de On Error Resume 

=3E Next y su 

=3E codigo de retorno de error Err=2ENumber=2E Conoce alguien otra forma 

=3E de 

=3E manipular los errores=2C cosa que en una misma sesion (es decir un 

=3E solo 

=3E arranque del navegador IE) se puedan obtener codigos de retorno de 

=3E error 

=3E distintos=2C uno para cuando adiciona (que creo siempre es 0) y otro 

=3E para 

=3E cuando no adiciona realmente=3F
=3E 

=3E Para mayor claridad incluyo el codigo que estoy utilizando en ASP=2E
=3E 

=3E Gracias por la ayuda que me puedan dar=2E
=3E 

=3E 

=3E function inicio() =7B
=3E =3C=25
=3E On Error Resume Next
=3E 

=3E Response=2EWrite =22var estatus=3D=22
=3E 

=3E =27Definir y asignar variable local=2E
=3E dim clave=5Fto=5Fadd=5Fvb
=3E dim estado=5Fvb
=3E set clave=5Fto=5Fadd=5Fvb =3D Request=2EQueryString(=22clave=5Fto=5Fa
dd=22)
=3E 

=3E =27Insertar en la BD
=3E insertar =3D =22INSERT INTO Passwords SELECT =22 =26 Q =26 2 =26 Q =26
 =22 AS 

=3E Grupo=2C =22 =26 Q =26 

=3E clave=5Fto=5Fadd=5Fvb =26 Q =26 =22 AS Passw=22
=3E 

=3E oRS =3D conexion3=2EExecute(insertar)
=3E 

=3E estado=5Fvb =3D Err=2ENumber
=3E With Response
=3E    =2EWrite estado=5Fvb
=3E End With
=3E 

=3E oRS=2EClose
=3E conexion3=2EClose
=3E set conexion3=3DNothing
=3E set oRS=3DNothing
=3E Response=2EWrite vbCrLF
=3E =25=3E
=3E switch (estatus) =7B
=3E    case 0=3A
=3E        alert(=22Clave adicionada con exito!!!=22)
=3E    break
=3E    default=3A
=3E        alert(=22Clave no adicionada=2E Posibles causas entre otras=3A
 

=3E BD solo lectura  

=3E o  La clave ya existe=22)
=3E    break
=3E =7D
=3E location=3D=22admin2=2Ehtm=22
=3E =7D
=3E //
=3E window=2Eonload=3Dinicio
=3E =3C/script=3E
=3E 

=3E 

=3E Jos=E9 Ignacio Saavedra Vivas
=3E email=3A ignaciosaavedra=40hotmail=2Ecom
=3E tel=E9fono casa=3A 571-7676180
=3E direcci=F3n casa=3A Avenida Caracas Nro=2E 42A-09 Sur
=3E Bogot=E1=2C D=2EC=2E=2C Colombia
=3E 

=3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
=3E MSN=2E M=E1s =DAtil cada D=EDa=2E http=3A//www=2Emsn=2Ees/intmap/
=3E 

=3E 

=3E ---
=3E Usted est=E1 suscrito a asp=5Fespanol como=3A 

=3E oliviersm=40canal21=2Ecom
=3E Para darse de baja=2C env=EDe un mensaje en blanco a 

=3E leave-asp=5Fespanol-641849G=40p2p=2Ewrox=2Ecom
=3E 

=3E ---
=3E Change your mail options at http=3A//p2p=2Ewrox=2Ecom/manager=2Easp o
r 

=3E to unsubscribe send a blank email to leave-asp=5Fespanol-
=3E 641849G=40p2p=2Ewrox=2Ecom=2E

Message #3 by "Jose Ignacio Saavedra Vivas" <ignaciosaavedra@h...> on Tue, 20 Aug 2002 13:49:08 +0000
Olivier, hice lo que tu me dijiste pero sigo teniendo el mismo problema. Tal 
vez no me he explicado bien. La aplicacion funciona perfecto si luego de 
adicionar un registro salgo del visualizador de Interdev, en mi caso 
Internet Explorer, y vuelvo a entrar para adicionar un registro. En tal caso 
el Error da distinto de cero y está bien porque el registro ya existe. Pero 
la aplicacion NO FUNCIONA BIEN si ejecuto el visualizador web desde Interdev 
y adiciono un registro dos veces; la primera, como no existe, lo hace bien 
pues adiciona el registro. Pero si vuelvo a adicionar el mismo registro, es 
decir con la misma llave sin salir y volver a entrar del visualizador, la 
pagina ASP se ejecuta como si hubiera habido una adicion satisfactoria 
cuando en realidad no lo hace.

Cordialmente,

Ignacio


>From: "Olivier SAUVE  " <oliviersm@c...>
>Reply-To: "ASP en Español" <asp_espanol@p...>
>To: "ASP en Español" <asp_espanol@p...>
>Subject: [asp_espanol] Re: Otra posibilidad que On Error Resume Next
>Date: Fri, 16 Aug 2002 12:33:21 GMT
>
>Si usas ON ERROR GOTO NEXT eso implica que debes inicializar el objeto
>Err ANTES de ejecutar toda sentencia importante y hacer una comprobacion
>  de dicho objeto JUSTO DESPUES de la ejecución de dicha sentencia:
>
>On Error Goto Next
>...
>Err.Clear()
>cnx.Execute StrSQL
>If (Err.Number <> 0) Then
>     ' Tratamiento del ERROR
>End If ' Sino es que todo va bien y se puede seguir
>...
>Err.Clear()
>cnx.Execute StrSQL  ' o cualquier sentencia que desees depurar
>If (Err.Number <> 0) Then
>     ' Tratamiento del ERROR
>End If ' Sino es que todo va bien y se puede seguir
>
>Con este método no hay duda alguna de desde dónde viene el error. Aunque
>creo que en la version 3.0 de ASP existe un objeto nuevo llamado
>ASPError, pero aún no he podido meterme con él.
>
>Debeis saber que el tratamiento de Errores es FUNDAMENTAL para que no se
>descontrole la aplicación y/o el sistema!!!! Ocupa tanto sino MAS codigo
>que la funcionalidad en si.
>
>Salu2 a todos y suerte
>
>Olivier M. SAUVE
>
>----- Mensaje Original -----
>De: "Jose Ignacio Saavedra Vivas" <ignaciosaavedra@h...>
>Fecha: Viernes, Agosto 16, 2002 6:33 am
>Asunto: [asp_espanol] Otra posibilidad que On Error Resume Next
>
> > Hola a todos.
> >
> > Tengo el siguiente problema. Tengo una rutina que inserta en una
> > base de
> > datos. Yo le tengo un chequeo porque la llave principal de la BD
> > es el campo
> > Passw. Entonces si alguien trata de insertar un password que ya
> > existe, se
> > le informa debidamente al usuario . Esto funciona perfectamente
> > cuando luego
> > de insertar una clave se cierra el Visual Interdev y luego se
> > vuelve a
> > arrancar. Pero si en una misma sesion, es decir, sin arrancarlo de
> > nuevo, se
> > inserta una clave y luego se vuelve a insertar, sucede que el
> > script de
> > Visual  Basic no detecta el error, dice que adiciono la clave
> > cuando en
> > verdad no lo hace. Esto se debe creo al uso de On Error Resume
> > Next y su
> > codigo de retorno de error Err.Number. Conoce alguien otra forma
> > de
> > manipular los errores, cosa que en una misma sesion (es decir un
> > solo
> > arranque del navegador IE) se puedan obtener codigos de retorno de
> > error
> > distintos, uno para cuando adiciona (que creo siempre es 0) y otro
> > para
> > cuando no adiciona realmente?
> >
> > Para mayor claridad incluyo el codigo que estoy utilizando en ASP.
> >
> > Gracias por la ayuda que me puedan dar.
> >
> >
> > function inicio() {
> > <%
> > On Error Resume Next
> >
> > Response.Write "var estatus="
> >
> > 'Definir y asignar variable local.
> > dim clave_to_add_vb
> > dim estado_vb
> > set clave_to_add_vb = Request.QueryString("clave_to_add")
> >
> > 'Insertar en la BD
> > insertar = "INSERT INTO Passwords SELECT " & Q & 2 & Q & " AS
> > Grupo, " & Q &
> > clave_to_add_vb & Q & " AS Passw"
> >
> > oRS = conexion3.Execute(insertar)
> >
> > estado_vb = Err.Number
> > With Response
> >    .Write estado_vb
> > End With
> >
> > oRS.Close
> > conexion3.Close
> > set conexion3=Nothing
> > set oRS=Nothing
> > Response.Write vbCrLF
> > %>
> > switch (estatus) {
> >    case 0:
> >        alert("Clave adicionada con exito!!!")
> >    break
> >    default:
> >        alert("Clave no adicionada. Posibles causas entre otras:
> > BD solo lectura
> > o  La clave ya existe")
> >    break
> > }
> > location="admin2.htm"
> > }
> > //
> > window.onload=inicio
> > </script>
> >
> >
> > José Ignacio Saavedra Vivas
> > email: ignaciosaavedra@h...
> > teléfono casa: 571-7676180
> > dirección casa: Avenida Caracas Nro. 42A-09 Sur
> > Bogotá, D.C., Colombia
> >
> > _________________________________________________________________
> > MSN. Más Útil cada Día. http://www.msn.es/intmap/
> >
> >
> > ---
> > Usted está suscrito a asp_espanol como:
> > oliviersm@c...
> > Para darse de baja, envíe un mensaje en blanco a
> > %%email.unsub%%
> >
> > to unsubscribe send a blank email to leave-asp_espanol-
> > 641849G@p...
>
>
>---
>Usted está suscrito a asp_espanol como:
>ignaciosaavedra@h...
>Para darse de baja, envíe un mensaje en blanco a
>%%email.unsub%%
>


José Ignacio Saavedra Vivas
email: ignaciosaavedra@h...
teléfono casa: 571-7676180
dirección casa: Avenida Caracas Nro. 42A-09 Sur
Bogotá, D.C., Colombia

_________________________________________________________________
Charle con sus amigos online usando MSN Messenger: http://messenger.msn.com


  Return to Index