Problemas al cargar datos

04/02/2007 - 19:45 por José Antonio Roca H. | Informe spam
Buenas tardes: Tengo un problema con un programa que me actualiza datos. Se
trata de una WebApplication que lo que hace es recibir un parametro y al
momento de cargar la pagina muestra el parametro en un label y un dato
asociado a el en un textbox, este ultimo sera el que se debe actualizar.

El problema es que cuando presiono grabar, no me actualiza el registro, para
esto uso un Store Procedure el cual ya lo probe en el Query Analizer y
funciona perfectamente. Cuando le hice el seguimiento al programa usando un
Trace, me di cuenta que no me cargaba el nuevo valor con el que queria
actualizar la tabla, sino que me jalaba el valor con el que se cargaba la
pagina.

Les agradeceria mucho que me ayuden...gracisa...



Aqui les mando el codigo:


using System.Data.SqlClient;
using System.Configuration;

private void Page_Load(object sender, System.EventArgs e)

{

try

{

//string cod = Request.QueryString["Coddpto"]; este es el parametro que
recibe de otra pagina

string cod = "1"; //puse este de prueba para no depender de la pagina anterior

SqlConnection conn = new
SqlConnection(ConfigurationSettings.AppSettings["strConexion"]);

SqlCommand cmd = new SqlCommand("usp_Dpto_Prov_Dist_CargaActDpto");

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter par = new SqlParameter();

par = cmd.Parameters.Add("@coddpto", SqlDbType.Int, 4);

par.Value = cod;

SqlDataReader dr;


cmd.Connection = conn;

conn.Open();

dr = cmd.ExecuteReader();

dr.Read();

lblCoddpto.Text = dr["coddpto"].ToString();

txtDesc.Text = dr["descripcion"].ToString().Trim();

conn.Close();

}

catch(SqlException ex)

{lblmensaje.Text = ex.Message;}


catch(Exception ex)

{lblmensaje.Text = ex.Message;}

}

private void Button1_Click(object sender, System.EventArgs e)

{

SqlConnection conn = new
SqlConnection(ConfigurationSettings.AppSettings["strConexion"]);

SqlCommand cmd = new SqlCommand("usp_Dpto_Prov_Dist_ActDpto",conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter par = new SqlParameter();

par = cmd.Parameters.Add("@coddpto",SqlDbType.Int, 4);

par.Value = lblCoddpto.Text;

par = cmd.Parameters.Add("@descripcion",SqlDbType.Char, 40);

par.Value = txtDesc.Text.Trim();

par = cmd.Parameters.Add("@fecha",SqlDbType.DateTime);

par.Value = DateTime.Now.Date.ToString();

par = cmd.Parameters.Add("@hora",SqlDbType.Char, 10);

par.Value =
DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString()+":"+DateTime.Now.Second.ToString();

par = cmd.Parameters.Add("@usuario",SqlDbType.Char, 6);

par.Value = "admin";

try

{

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

if(Page.IsValid)

{

Response.Redirect("../../Error/Exito.aspx",false);

}

}

catch(SqlException ex)

{lblmensaje.Text = ex.Message;}


catch(Exception ex)

{lblmensaje.Text = ex.Message;}

}
 

Leer las respuestas

#1 Alberto Poblacion
04/02/2007 - 19:59 | Informe spam
"José Antonio Roca H." <José Antonio Roca
wrote in message news:
El problema es que cuando presiono grabar, no me actualiza el registro,
para
esto uso un Store Procedure el cual ya lo probe en el Query Analizer y
funciona perfectamente. Cuando le hice el seguimiento al programa usando
un
Trace, me di cuenta que no me cargaba el nuevo valor con el que queria
actualizar la tabla, sino que me jalaba el valor con el que se cargaba la
pagina.



Creo que el problema es que te falta un "if (!Page.IsPostBack)" en el
Page_Load. Cuando presionas el botón Grabar, PRIMERO se ejecuta el Page_Load
y DESPUES el código que tienes en el Button1_Click. Como el Page_Load carga
un valor en el TextBox, este valor "pisa" el que ha escrito el usuario, y
cuando llegas al Button1_Click, el valor que tiene el TextBox es otra vez el
valor original.

Se remedia encerrando el código del Page_Load dentro de un "if
(!Page.IsPostBack)" para que sólo se ejecute la primera vez que se visualiza
la página, pero no cuando se pulsa el botón.

Preguntas similares