Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Problema Con Update Y Sp (http://www.forosdelweb.com/f78/problema-con-update-sp-449566/)

RugalMKing 12/12/2006 13:40

Problema Con Update Y Sp
 
Hola, tengo el siguiente problema:

trato de realizar una actualizacion a la bd mediante stored procedure.

para mostrar los datos actuales lo hago mediante un formulario y un sqldatareader. hasta aqui todo bien.

tengo algunos campos de texto y recupero sus datos asi:

Código:

EE_Nombre.Attributes("Value") = ObjLector("E_Nombre")
EE_Apellidos.Attributes("Value")  = ObjLector("E_Apellidos")

luego un dropdownlist donde establezco el elemento seleccionado acorde al valor almacenado en la bd, lo eh probado de dos maneras distintas:

Manera 1:

Código:

Dim NivelCont As Integer
Dim iCont As Integer
NivelCont = EE_Nivel.Items.Count
For iCont = 0 To NivelCont
    If ObjLector("E_Nivel") = EE_Nivel.Items(iCont).Text Then
        EE_Nivel.Items(iCont).Selected = True
        Exit For
    End If
Next

Manera 2:

Código:

EE_Nivel.SelectedIndex = EE_Nivel.Items.IndexOf(EE_Nivel.Items.FindByValue(ObjLector("E_Nivel")))
Ambas funcionan igual, el problema viene al procesar la actualizacion.

Este es mi stored procedure:

Código:

CREATE PROCEDURE ESP_ModificarUsuario

@E_ID Int,
@E_Nombre varchar(max),
@E_Apellidos varchar(max),
@E_Nivel varchar(max)

AS

UPDATE TABLA_USUARIOS

SET

E_Nombre=@E_Nombre,
E_Apellidos=@E_Apellidos,
E_Nivel=@E_Nivel

WHERE E_ID=@E_ID

Y el proceso...

Código:

'Parámetro E_ID
            Dim ObjParamID As New SqlParameter("@E_ID", SqlDbType.Int)
            ObjParamID.Value = CInt(Request.Querystring("E_ID"))
            ObjComando.Parameters.Add(ObjParamID)
'Parámetro Nombre
            Dim ObjParamNombre As New SqlParameter("@E_Nombre", SqlDbType.VarChar)
            ObjParamNombre.Value = EE_Nombre.text
            ObjComando.Parameters.Add(ObjParamNombre)
            'Parámetro Apellidos
            Dim ObjParamApellidos As New SqlParameter("@E_Apellidos", SqlDbType.VarChar)
            ObjParamApellidos.Value = E_Apellidos.text
            ObjComando.Parameters.Add(ObjParamApellidos)
'Parámetro Nivel
            Dim ObjParamNivel As New SqlParameter("@E_Nivel", SqlDbType.VarChar)
            ObjParamNivel.Value = EE_Nivel.SelectedItem.Value
            ObjComando.Parameters.Add(ObjParamNivel)

El problema real, es que el nombre y apellido se actualizan bien, pero no el nivel. el nivel no se actualiza y no se que problema haya con el dropdownlist, si interfiere en algo que establezca el elemento seleccionado segun lo que hay en la base de datos y la parte:

Código:

ObjParamNivel.Value = EE_Nivel.SelectedItem.Value
En fin ojalá alguien me pueda instruir.

Saludos.

RugalMKing 12/12/2006 14:27

Re: Problema Con Update Y Sp
 
Gracias, lo eh resuelto de una manera muy extraña y


¡¡¡ ME GUSTARIA QUE ALGUIEN ME LO EXPLICARA !!!

buscando un poco en este foro, encontré algo similar y bueno, basandome en ello agregué lo siguiente en el sqldatareader que recupera los datos en la base para ser modificados:

Código:

If Not Page.IsPostBack Then
 ...
End If

De modo que quedó así:

Código:

If Not Page.IsPostBack Then
Dim ObjLector As SqlDataReader
                ObjLector = ObjAdmUsuarios.DetalleUsuario(CInt(Request.QueryString("E_ID")))
                If ObjLector.HasRows Then
                    Do While ObjLector.Read
                        EE_Nombre.Attributes("Value") = ObjLector("E_Nombre")

                        bla... bla ... bla...
                  Loop
ObjLector.Close()
                End If
End If

¿Pueden creerlo? :neurotico

De verdad, me gustaria mucho que alguien me lo explicara.

Muchas gracias!

slopez125 13/12/2006 09:59

Re: Problema Con Update Y Sp
 
De la forma como lo has seleccionado no es nada raro, esta propiedad de .net If(!IsPostBack){} permite que en un llamado a la misma pagina no se limpien los datos que has introducido en los campos de texto o ddl(Drop Down List), no te seleccionaba el ddl porque al hacer el request volvia y te cargaba la pagina y el ddl se iniciaba en la primera posicion, con el !IsPostBack te vuelve a cargar la pagina pero donde habias seleccionado el ddl


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.