Cambiar valor a una variable public con un boton [Solucionado]

Iniciado por ¡Micronet!, 2 Abril 2012, 19:13 PM

0 Miembros y 3 Visitantes están viendo este tema.

¡Micronet!

Lo que pretendo es usar el valor de una variable publica a otro formulario... lo que sucede esque la tengo declarada de la siguiente manera:

Lo que pretendo con el codigo es que cada vez que le de click a un boton "dependiendo del boton", me cambie el valor a Public idestado As Integer, la inicializo en 0, si le cambio valores (1,2,3,4) si me funciona pero en inicio la inicializo en 0, y cuando le de click en un boton de los declarados, quiero que cambie el valor de esa variable public.

Public Class Estado
  Public idestado As Integer=0

   Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
       Me.Hide()
       Inicio.Show()
   End Sub

   Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
       Me.Hide()
   End Sub

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       'ID:1'
       Me.idestado = 1
       Me.Hide()
       QuintanaRoo.Show()
   End Sub

   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       'ID:2'
       Me.idestado = 2
       Me.Hide()
       Tabasco.Show()
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       'ID:3'
       Me.idestado = 3
       Me.Hide()
       Campeche.Show()
   End Sub

   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       'ID:4'
       Me.idestado = 4
       Me.Hide()
       Yucatan.Show()
   End Sub


End Class


Todo eso para que me funcione en otro formulario, que utiliza esa variable y todo lo tengo declarado como, pues lo quiero usar en un combobox (como prueba de que si puedo cambiar el valor apartir de dar click en el mismo, pues lo pretendo usar para otros fines):

Imports MySql.Data.MySqlClient
Imports MySql.Data
Imports AppCenotes.Estado
Public Class Informacion
   Friend conexion As MySqlConnection
   Private Sub Informacion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim Aestado As Estado = New Estado
       'Creamos conexion'
       conexion = New MySqlConnection()
       conexion.ConnectionString = "server=" & "localhost" & ";" & "user id=" & "root" & ";" & "password=" & " " & ";" & "Database=" & "cenotes" & ";"

       'Creamos adaptador'
       Dim adapter As New MySqlDataAdapter("Select a.nombre from cenotes as a, localidades as b where b.ID_localidad=a.localidad AND b.ID_estado=" & Aestado.idestado, conexion)
       Dim dbDataset As DataSet = New DataSet()
       conexion.Open()

       'Utilizar el adaptador para llenar el dataset con una tabla'
       adapter.Fill(dbDataset, "nombre")
       conexion.Close()

       'Una vez desconectados, recccorremos la tabla del dataset'
       Dim tabla As DataTable
       tabla = dbDataset.Tables("nombre")

       Dim Fila As DataRow
       For Each Fila In tabla.Rows
           'Mostrar los datos mediante un objeto fila'
           Combo.Items.Add(Fila.Item("nombre"))
       Next
   End Sub
End Class

Ya busque en Google, como Cambiar valor a una variable public en (.net, visual basic, visual basic 2010, visual studio 2010)..... " de todas esas formas... una por una... y nada!" u.u!  espero que me puedan ayudar saludos :S!
:-(

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

$Edu$

Código (vb) [Seleccionar]
Dim Aestado As Estado = New Estado

La misma instruccion te lo dice.. New Estado.. es decir desde 0 otra vez, no se si me explico.. entonces la variable "idestado" sera 0 siempre. Si es que te he entendido bien...

Entonces lo que tienes que hacer es declarar la variable Public idestado as integer, fuera de las clases, fuera de todo y asi tendras acceso siempre sin problemas, aunque yo cambiaria todo, me organizaria mejor desde 0..

¡Micronet!

#2
Cita de: $Edu$ en  4 Abril 2012, 03:06 AM
Código (vb) [Seleccionar]
Dim Aestado As Estado = New Estado

La misma instruccion te lo dice.. New Estado.. es decir desde 0 otra vez, no se si me explico.. entonces la variable "idestado" sera 0 siempre. Si es que te he entendido bien...

Entonces lo que tienes que hacer es declarar la variable Public idestado as integer, fuera de las clases, fuera de todo y asi tendras acceso siempre sin problemas, aunque yo cambiaria todo, me organizaria mejor desde 0..

como haria eso :S intentando acoplarlo a mi codigo :S para que pueda usar esa variable en el otro formulario amigo :S???  :-(


porque si lo declaro...

    Public idestado As Integer=0

Public Class Estado

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Me.Hide()
        Inicio.Show()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Hide()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'ID:1'
        Me.idestado = 1   //me saldria error aqui...

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

$Edu$

No pongas "me.", pero me estoy confundiendo hasta yo porque debe ser algo facil lo que pides y no entiendo porque te has complicado, yo he tenido problemas de esos pero me he puesto a pensar un buen rato con lapiz y papel y sale.

edit: Claro, entendi.. pensa.. vos necesitas leer esa variable o solamente queres saber el valor.. porque no haces cada vez que abras un form algo asi:

frmNuevo.Show()
frmNuevo.VariableGlobal = Me.idestado

Entonces ya ni te preocupas por la variable idestado, sino que usas la VariableGlobal del nuevo form abierto.

Si no te queda podes dejar todo el proyecto aca, porque pueden existir miles de bugs luego si haces lo que te digo, todo depende de para que abris los forms y eso.

¡Micronet!

Cita de: $Edu$ en  4 Abril 2012, 05:45 AM
No pongas "me.", pero me estoy confundiendo hasta yo porque debe ser algo facil lo que pides y no entiendo porque te has complicado, yo he tenido problemas de esos pero me he puesto a pensar un buen rato con lapiz y papel y sale.

edit: Claro, entendi.. pensa.. vos necesitas leer esa variable o solamente queres saber el valor.. porque no haces cada vez que abras un form algo asi:

frmNuevo.Show()
frmNuevo.VariableGlobal = Me.idestado

Entonces ya ni te preocupas por la variable idestado, sino que usas la VariableGlobal del nuevo form abierto.

Si no te queda podes dejar todo el proyecto aca, porque pueden existir miles de bugs luego si haces lo que te digo, todo depende de para que abris los forms y eso.

Supongamos que tengo la variable en el Form1

"Variable X"

Si le doy click al boton #1.... esta variable tendra el valor X=1
Si le doy click al boton #2.... esta variable tendra el valor X=2
Si le doy click al boton #3.... esta variable tendra el valor X=3
Si le doy click al boton #4.... esta variable tendra el valor X=4

Depende del boton, el valor que quiera ponerle a la variable X


y todos esos botones me llevan al Form2... en donde dependiendo del boton la variable X ya habra tomado su valor... entonces esa variable la quiero usar en el Form2, con su respectivo valor...

me entendiste amigo :S?  :huh:

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

$Edu$

Y que paso con el codigo que te deje? no te sirvio? o luego en ese form2 cambias el valor de idestado? si es asi.. se complica mas la cosa y por eso te digo que me dejes el proyecto entero si queres o me aguantas a que llegue a casa y te deje un ejemplo.

¡Micronet!

Cita de: $Edu$ en  4 Abril 2012, 23:27 PM
Y que paso con el codigo que te deje? no te sirvio? o luego en ese form2 cambias el valor de idestado? si es asi.. se complica mas la cosa y por eso te digo que me dejes el proyecto entero si queres o me aguantas a que llegue a casa y te deje un ejemplo.

Esq no me funciono :S... y pues si no es mucha molestia acepto tu ejemplo :S "yo me espero". y muchas gracias (Y).

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

$Edu$

No he llegado a casa pero es simple lo que quieres hacer, te estas confundiendo o no te entiendo aun.. en el primer post dejaste que en cada boton le asignas un valor a idestado y abris un form:

Código (vb) [Seleccionar]

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'ID:3'
        Me.idestado = 3
        Me.Hide()
        Campeche.Show()
    End Sub


Por que no pones una variable de valor 3 en el form Campeche y listo? no usarias mas la variable idestado.


Lo otro que puede ser que quieras hacer segun lo que dices despues, es que esos forms que abres no importan, sino lo que importa es el que abris luego q decis q es el form2.. bueno.. ese form2 desde donde lo abris? sea de donde sea que lo abras, tienes que instanciar el form con: Dim form as Form2 = new Form2 y luego haces form.VariableGlobal = idestado '(o sino.. si hiciste lo primero que dije.. el valor del id y listo) y luego recien si haces form.Show()


Si no anda esto ultimo es porque tenes que usar esto:
http://foro.elhacker.net/net/ayuda_con_los_get_y_set_en_vbnet-t247992.0.html

Contame de todos modos cual podes si lo solucionas con una

¡Micronet!

Para que funcionara de este codigo:

Public Class Informacion
    Friend conexion As MySqlConnection
    Private Sub Informacion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Aestado As Estado = New Estado
        'Creamos conexion'
        conexion = New MySqlConnection()
        conexion.ConnectionString = "server=" & "localhost" & ";" & "user id=" & "root" & ";" & "password=" & " " & ";" & "Database=" & "cenotes" & ";"

        'Creamos adaptador'
        Dim adapter As New MySqlDataAdapter("Select a.nombre from cenotes as a, localidades as b where b.ID_localidad=a.localidad AND b.ID_estado=" & Aestado.idestado, conexion)
        Dim dbDataset As DataSet = New DataSet()
        conexion.Open()


le quite el         Dim Aestado As Estado = New Estado

y en la parte del adaptador

Dim adapter As New MySqlDataAdapter("Select a.nombre from cenotes as a, localidades as b where b.ID_localidad=a.localidad AND b.ID_estado=" & Aestado.idestado, conexion)

lo cambie para que quedara asi:

Dim adapter As New MySqlDataAdapter("Select a.nombre from cenotes as a, localidades as b where b.ID_localidad=a.localidad AND b.ID_estado=" & Estado.idestado, conexion)

Ayudado por .:IT:.


Gracias por tu recomendacion de todos modos $Edu$  ;D

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

$Edu$

Pero como declaraste la variable "idestado" al final? no habras modificado la clase Estado? su declaracion?  La verdad que estoy fuera de practica parece y me estoy olvidando cosas, tal vez me fio mucho de que vb.net es casi igual a C# y no es asi, ya que en C# si queres usar un form tenes que instanciarlo siempre y tu no lo instanciaste..

Contestame todas mis preguntas por favor que ahora soy yo el que no entiende xD, aunque por MP me pasaste el proyecto y se soluciona tan facil como te dije, pero ta, ahora quiero saber eso de si tenes que instanciar o no, con instanciar me refiero a poner "Dim FormEstado as Estado = New Estado"