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

variable cambia inesperadamente

Estas en el tema de variable cambia inesperadamente en el foro de .NET en Foros del Web. wenass, mi problema es el siguiente, relleno un formulario(asp.net, vb.net) con datos de una base de datos y al guardarlos con el evnto .click (ambos ...
  #1 (permalink)  
Antiguo 17/03/2005, 06:41
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 20 años
Puntos: 0
variable cambia inesperadamente

wenass,
mi problema es el siguiente, relleno un formulario(asp.net, vb.net) con datos de una base de datos y al guardarlos con el evnto .click (ambos metodos en el mismo formulario)la variable que almacena el codigo id del registro cambia a cero (cuando su valor es uno)

Este es el codigo:

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Web
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports System.Data.SqlClient
Public Class AdQuienSom
Inherits System.Web.UI.Page
Dim oglobal As New Global
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Tbximagen As System.Web.UI.WebControls.TextBox
Protected WithEvents LbMens As System.Web.UI.WebControls.Label
Dim registro As Int32 'DECLARACION DE LA VARIABLE
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
If Not Page.IsPostBack Then
RellenaCampos()
End If
End Sub
Public Sub RellenaCampos()
oglobal.DsInfo.Info.Clear() ' Borra los datos existentes en el dataset

Dim qsomo As DataSetSG.InfoRow
oglobal.Adapter_DsInfo.SelectCommand.CommandText = "SELECT * FROM Info"
oglobal.Adapter_DsInfo.Fill(oglobal.DsInfo.Info)
qsomo = oglobal.DsInfo.Info.Rows(0)

'Asiganamos los valores a los Textbox
TbxTitu.Text = qsomo.INtitulo.ToString
TbxDescr.Text = qsomo.INdetalle.ToString
'Tbximagen.Text = qsomo.INcodigo.ToString

registro = Convert.ToInt32(qsomo.INcodigo.ToString()) 'ASIGNACION DEL VALOR LbMens.Text = registro ' AKI VALE 1 End Sub
Public Sub BtnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
LbMens.Text = Me.registro.ToString 'EN ESTE PUNTO LA VARIABLE REGISTRO CAMBIA DE 1 A 0 :(

Dim Actualizar As String
Actualizar = "UPDATE Info SET INtipo = 'entidad',INtitulo = '" + TbxTitu.Text + "'," & _
" INdetalle = '" + TbxDescr.Text + "',INimagen = '" + Tbximagen.Text + "', INfichero = 'vacio' WHERE INcodigo =" + registro.ToString
Dim mensaje = "La Oferta de Empleo se ha sido introducido correctamente."

oglobal.SqlDirect.CommandText = Actualizar
Try
oglobal.ConxGrupoSurNet.Open()
oglobal.SqlDirect.ExecuteNonQuery()
oglobal.ConxGrupoSurNet.Close()
'LbMens.Text = oglobal.SqlDirect.CommandText.ToString()
'registro.ToString()
'RellenaCampos()
Catch ex As SqlTypes.SqlTypeException
LbMens.Text = ex.ToString
Catch otros As Exception
LbMens.Text = otros.ToString
End Try

End Sub
End Class

Última edición por kemahangre; 17/03/2005 a las 06:44
  #2 (permalink)  
Antiguo 17/03/2005, 06:46
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Creo que tendrias que asignar a registro nuevamente el valor, o sea,
registro = Convert.ToInt32(qsomo.INcodigo.ToString())
aunque mas facil seria que tomes el valor de lblmens.text que ya tenias...
  #3 (permalink)  
Antiguo 17/03/2005, 09:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Por lo que estoy viendo no te trae valor porque tu variable registro solo toma el valor la primera vez (PostBack) pero cuando haces click obviamente se regresa a cero.. por ésta condicion que tienes..

Cita:
If Not Page.IsPostBack Then
RellenaCampos()
End If
Ya que en RellenaCampos le asignas el valor, pero al hacer click ya no volvera a pasar por ahi y por lo tanto tu valor se pierde..

Lo que puedes hacer es algo así:

Cita:
ViewState("mivalor") = Convert.ToInt32(qsomo.INcodigo.ToString())
Para mantenerlo en state para cuando se haga el postback no pierde el valor.. y para recuperarlo...


Cita:
Public Sub BtnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
LbMens.Text = Ctype(ViewState("mivalor"), String)
Dim Actualizar As String
...
..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 17/03/2005, 18:00
 
Fecha de Ingreso: junio-2004
Ubicación: San Fernando -LaIsla-
Mensajes: 25
Antigüedad: 20 años
Puntos: 0
Muchas gracias amigos, todo solucionado !!!
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 07:03.