Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 12-dic-2006, 12:40   #1 (permalink)
RugalMKing está en el buen camino
 
Fecha de Ingreso: octubre-2004
Mensajes: 49
Exclamación 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 está desconectado   Responder Citando
Antiguo 12-dic-2006, 13:27   #2 (permalink)
RugalMKing está en el buen camino
 
Fecha de Ingreso: octubre-2004
Mensajes: 49
Pregunta 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?

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

Muchas gracias!
RugalMKing está desconectado   Responder Citando
Antiguo 13-dic-2006, 08:59   #3 (permalink)
slopez125 ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2005
Mensajes: 1
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
slopez125 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:06.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93