Foros del Web » Programación para mayores de 30 ;) » .NET »

a alguien se le ocurre algo ???

Estas en el tema de a alguien se le ocurre algo ??? en el foro de .NET en Foros del Web. Me pasa un expediente X y ya no se q hacer. Os explico : tengo una página de registro de usuario. Cuando el usuario rellena ...
  #1 (permalink)  
Antiguo 06/07/2004, 06:15
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
a alguien se le ocurre algo ???

Me pasa un expediente X y ya no se q hacer.
Os explico : tengo una página de registro de usuario. Cuando el usuario rellena los datos le da a un botón para introducirlo en la base de datos. Pues bien, el problema lo tengo con el botón q solo funciona la primera vez q haces click en él, es decir, si el usuario no ha rellanado los datos del formulario correctamente pues a la segunda vez haga click en el botón ya no se produce el evento click del botón.
Bueno, estaréis pensando q igual he hecho algo mal en el código ... pero es q he probado con otro navegador (Mozilla) y el botón funciona perfectamente !!!! no funciona con el explorer !!! como puedo hacer para q funcione con el explorer ???? alguna idea ???


salu2 y gracia !!
  #2 (permalink)  
Antiguo 06/07/2004, 07:46
Avatar de Jano2  
Fecha de Ingreso: enero-2002
Ubicación: Ñuñoa, Chile
Mensajes: 132
Antigüedad: 22 años, 3 meses
Puntos: 0
Deberias mostrar el codigo pare verlo..... y darte una opinion
__________________
Hay una sola Religion..El Amor
Hay Un Solo Lenguaje..El del Corazon
Hay Una Sola Raza...La Humanidad
Hay Un Solo Dios y Esta En Todas Partes.
Jano. :si:
http://diariodeldesarrollador.blogspot.com/
  #3 (permalink)  
Antiguo 06/07/2004, 08:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
//Se ejecuta cuando le damos al boton "insertar".
private void ButtonReg_Click(object sender, System.EventArgs e)
{
//Si no existen errores en los datos introduccios entonces insertamos
//los datos
this.En_Blanco();
if (this.Comprueba_Datos()==true)
{//Comprobamos si da error de inserción ya sea por que
//existe una tupla con la misma clave primaria o por otro tipo de error
try
{
Insertar_Socio();
Response.Redirect("Validar.aspx?Origen=default.asp x");
}
catch(System.Data.OleDb.OleDbException)
{
Response.Redirect("Error.aspx?Error=7&Origen=WebFo rmRegistro.aspx");
}
}
}


funciones :

private void En_Blanco()
{
Lapellido.Text="";
Lnombre.Text="";
Ledad.Text="";
Llogin.Text="";
Ldni.Text="";
Ltipo.Text="";
}

private bool Comprueba_Datos()
{
bool ok=true;

//Comprobamos que el Nombre este rellenado
if (TextNombre.Text=="")
{
Lnombre.Text="X";
ok=false;}

//Comprobamos que el apellido este rellenado
if (TextApellido.Text=="")
{
Lapellido.Text="X";
ok=false;}
//Comprobamos que la edad este rellanada
if (DropDownEdad.SelectedValue.ToString()=="")
{
Ledad.Text="X";
ok=false;}
//Comprobamos que el login este rellenado
if (TextLogin.Text=="")
{
Llogin.Text="X";
ok=false;}
//Comprobamos que el dni este rellenado, que sea numerico y
//que su longitud sea = 8

if (TextDni.Text=="")
{
Ldni.Text="X";
ok=false;}
try {Convert.ToInt32(TextDni.Text);}
catch(System.Exception)
{Ldni.Text="X";
ok=false;}
if (TextDni.Text.Length!=8)
{
Ldni.Text="X";
ok=false;}
//Comprobamos que este rellenado el dropList Tipo de usuario
if (DropDownListTipo.SelectedValue.ToString()=="")
{
Ltipo.Text="X";
ok=false;}
//Devolvemos el resultado de la comprobacion
return(ok);
}

public void Insertar_Socio()
{
//Guardamos todos los datos existentes en variables
string login = TextLogin.Text;
string dni = TextDni.Text;
string nombre =TextNombre.Text;
string apellido = TextApellido.Text;
int edad = Convert.ToInt16(DropDownEdad.SelectedValue.ToStrin g());
string tipo="Socio";
string categoria="";
string nivel="Principiante";

// si no es un internauta, es decir, q es administrador o operador ...
if ((Session["registrado"]!=null) && (Session["registrado"].ToString()=="true"))
{
Usuario_Reg usr = (Usuario_Reg)Session["usr_reg"];
tipo=usr.Dev_tipo_Socio();
}

if ((tipo=="Administrador")||(tipo=="Operador"))
{
tipo = DropDownListTipo.SelectedItem.Value;
}

//Obtenemos la categoria del Socio en dependecia de su edad.
switch (edad)
{
case (8|9|10) :
categoria="Alevin";
break;
case (11|12|13|14):
categoria="Infantil";
break;
case (15|16):
categoria="Cadete";
break;
case (17|18):
categoria="Juvenil";
break;
}
if (edad>18) categoria="Adulto";


string insercion ="INSERT INTO Usuario (login,dni,nombre,apellidos,usuario,edad,nivel,cat egoria,fecha_sancion) VALUES ('"+login+"','"+dni+"','"+nombre+"','"+apellido+"' ,'"+tipo+"',"+edad.ToString()+",'"+nivel+"','"+cat egoria+"',FORMAT('"+DateTime.MinValue.ToShortDateS tring()+"','dd/mm/yyyy'))";


MiConexion.Open();
OleDbCommand comando = new OleDbCommand(insercion,MiConexion);
OleDbDataReader datareader = comando.ExecuteReader();
MiConexion.Close();

TextLogin.Text="";
TextDni.Text="";
TextNombre.Text="";
TextApellido.Text="";
}

Ahi esta el metodo del evento y a los métodos q llama .

salu2 !!!
  #4 (permalink)  
Antiguo 06/07/2004, 19:13
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Vaya... todo en la misma pagina... la presentacion, las validaciones y el acceso a datos...

Te recomiendo que separes tu apliacion en capas, sino tendrás un repetiredo de codigo por donde quier....


POr que pones esto:

try
{
Insertar_Socio();
Response.Redirect("Validar.aspx?Origen=default.asp x");
}
catch(System.Data.OleDb.OleDbException)
{
Response.Redirect("Error.aspx?Error=7&Origen=WebFo rmRegistro.aspx");
}
}
}

Mejor ponlo donde esta tu acceso a datos...

lo de:

TextLogin.Text="";
TextDni.Text="";
TextNombre.Text="";
TextApellido.Text="";

Ponlo en un sub que se lleme LimpiaCampos()

Mmm.. te hayudará si fuise VB.NET, ya que C# no usa el Handles...

Por que no pones banderas ó debugeas tu code ???

Saludos!!
  #5 (permalink)  
Antiguo 08/07/2004, 19:13
 
Fecha de Ingreso: julio-2004
Mensajes: 50
Antigüedad: 19 años, 9 meses
Puntos: 0
Yo tampoco veo ningun posible error, yo que tu haria una traza del codigo.

Lo unico que no me gusta es:
if ((Session["registrado"]!=null) && (Session["registrado"].ToString()=="true"))
{
Usuario_Reg usr = (Usuario_Reg)Session["usr_reg"];
tipo=usr.Dev_tipo_Socio();

Me parece que estas almacenando un objeto en session y no me parece buena idea (aunque no tiene nada que ver con tu error)

Otra cosilla, para insertar yo usaria :
comando.ExecuteNonQuery();
en vez de OleDbDataReader datareader = comando.ExecuteReader();
No se si podria ser esto, pruebalo

Un saludo
__________________
http://www.ivangm.tk
Mi mail
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:12.