none
DUDA... Haciendo una consulta y acceder a esa consulta desde cualquier form. RRS feed

  • Pregunta

  • Como puedo llamar el valor de una consulta de un windows form y llamar el valor obtenido en los forms que yo quiero.

    Actualmente hago esto pero no funciona.

    Esta es el form padre:

    En populateplanta lleno en un combobox la consulta me regresa id_Planta y planta nombre una vez realizado paso el valor de selected item a una variable de tipo string y la llamo en form hijo

    hasta aqui todo bien

    Form hijo:

    Si activo el messagebox recibo el id de la planta.

    osea un numero x

    Pero si llamo a la variable string ValPla en un metodo que contiene una consulta, me dice que la variable ValPla es null

    Ya intente usarla como string  o int pero me sigue apareciendo null y en el message box puedo ver el numero que recibe el cual funciona pero llamando la variable en un metodo que consuslta me dice que esta vacia.

    martes, 28 de abril de 2020 20:48

Todas las respuestas

  • Hola BlackCode

    Estaba por responder y ni había visto que eras vos ... qué bueno que reapareciste! 

    Te respondí el mail, ... como 4 veces ... lo que pasó es que ese buzón no lo miro casi nunca, y vos me escribiste, y lo vi creo que como 3 o 4 semanas después, y te respondí, pero parece que no lo revisaste más ese buzón después ... hoy y mañana lo voy a ver mi buzón de gmail a ver si  me respondes

    Lo de esta pregunta no entiendo bien, pero parece que lo que queres es acceder en un Form Hijo a los datos miembros del Form Padre, entonces lo que tenes que hacer es 

    1) Al instanciar el form Hijo le pasas this a ShowDialog(), this es la referencia al Form Padre que lo crea

    FormHijo form = new FormHijo();

    form.ShowDialog(this);

    2) En el Form Hijo, creas la referencia al Form Padre, en cualquier método

    FormPadre owner = (FormPadre)this.Owner;

    3) Luego con la variable owner accedes a cualquier miembro público del Form Padre

    owner.variable = 50:

    string str = owner.Nombre();


    Saludos

    Pablo

    • Propuesto como respuesta Tigre Pablito miércoles, 20 de mayo de 2020 23:41
    martes, 28 de abril de 2020 22:57
  • hola

    >>Pero si llamo a la variable string ValPla en un metodo que contiene una consulta, me dice que la variable ValPla es null

    en cual metodo? porque puede darse el caso que aun no se tenga el valor cuando el form se instancia

    Ademas en cambio() donde haces el Show() o ShowDialog() del form? no veo que ese form lo estes visualizando

    Accede a ValPla desde el evento Form_Load para estar seguro que sera accesible cuando se muestre el form

    >>en el message box puedo ver el numero que recibe

    porque en recibe() pones el InitializeComponent(), eso no esta bien sino se trata del contructor del form

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 28 de abril de 2020 23:22
  • Hola pablito, lo que pasa es que no tengo configurado mi correo y en ese correo tengo un muchos correos sin leer y por eso no he respondido jaja.


    Mira empecemos de nuevo.


    Tengo un metodo que hace una consulta  la base de datos mediente un select

    metodoo del select

    Hasta aca todo bien ahora

    FormPadre

    public void Combobox();

    {

     DataTable dt = new DataTable();

                string query = "Select * from Planta";
                SqlCommand cmd = new SqlCommand(query, con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);

                comboBox1.ValueMember = "idPlanta";
                comboBox1.DisplayMember = "PLANTA";
                comboBox1.DataSource = dt;

    }


    en otro metodo del mismo FormPadre  guardo el valor del id Del objeto que seleccione 

    GuardaEnvia()

    {

     string txt = comboBox1.SelectedValue.ToString();

    }


    Como puedo hacer para llamar el valor txt en un form hijo ?


    no quiero visualizar el form por que no es mi idea, mi idea es que al principio si el valor es 1 que se guarde y lo cambie y el valor seleccionado es 2 que se almacene para poder realizar una consulta en una base de datos esta es mi consulta.


    digamos que este es mi consulta en donde quiero poner el valor que llamo de formPadre a cualquier otro form select * from equipo where idPlanta = '"+ValQueRecibodeOtroForm+"'"




    miércoles, 29 de abril de 2020 14:27
  • Hola, acabo de responder un poco mas claro lo que busco espero me entiendas mejor.
    miércoles, 29 de abril de 2020 14:28
  • Hola

    Para acceder a un miembro público del Form padre en el Form hijo, tenes que hacer como te dije, te repito:

    1 que nada) 

    Guardas el valor que queres ver en el Form hijo en un miembro de clase público

    1) Cuando creas el Form hijo, le pasas this a ShowDialog(), que es una referencia al Form padre

    FormHijo form = new FormHijo();

    form.ShowDialog(this);   // acá le pasas la referencia al Form padre

    2) En el Form hijo, en cualquier método, creas la referencia al Form padre

    FormPadre owner = (FormPadre)this.Owner;

    3) Accedes al miembro público del Form padre, así:

    owner.Variable = 50;

    string str = owner.nombre();

    O sea la variable owner contiene la referencia al Form padre

    Saludos

    • Propuesto como respuesta Tigre Pablito miércoles, 20 de mayo de 2020 23:41
    miércoles, 29 de abril de 2020 23:47
  • hola

    Si necesitas pasa run valor desde el FormPadre al hijo hay varias formas, una es usando el constructor o podria ser por medio de propiedades

    igual no entendi que seria eso de no visualizarlo, se supone que el valor se lo pasas al otro form cuando vas a verlo, sino no le pasas nada

    public class FormHijo : Form{ public string Prop1 {get;set;} //resto codigo

    public void FormHijo_Load(...){

    //aqui usas la propiedad para armar la consulta

    } }



    en el FormPadre

    public class FormPadre : Form{
    
       //resto codigo
    
        public void button1_Click(...){
    
             FormHijo f = new FormHijo();
             f.Prop1 = comboBox1.SelectedValue.ToString();
             f.Show(); //aqui se supone que visualizas el form hijo
    
        }
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 29 de abril de 2020 23:57
  • Hola pablito y leandro miran e intentato de todo y sigo sin poder ya obtengo el valor que quiero pero no lo puedo llamar en el formulario que necesito, intente de muchas formas:

    En el formPadre tengo

    public int idPlanta;

    public void mandaValor(){

     string query4 = "Consulta";
                    SqlCommand cmd4 = new SqlCommand(query4, con);
                    idPlanta = Convert.ToInt32(cmd4.ExecuteScalar());

     frmHIJO HIJO= new  frmHIJO();
                    HIJO.label18.Text = idPlanta;

    }

    y no me manda nada sale 0, No le pongo HIJO.show Por que el formPadre es un contenedor con menuStrip, cuando doy clic en el item del menuStrip que llama frmHijo Se visualiza el form hijo y se deberia de pasar el valor del metodo mandaValor al form Hijo pero solo consigo 0.

    ---------------------------------------------------------------------------

    Intente de otra manera.

    Llamando en el form hijo la variable idPlanta y pasandola al label18.text de esta manera

    frmPadre padre = new frmPadre();

    label18.text = Convert.ToString(padre.idPlanta);    y no consigo pasar el valor

    ---------------------------------------------------------------------------------------------

    tambien intente de esta otra forma en el frmHijo hacer esto:

    public int idPlanta {get;set;}

    public int IdPlanta

    {

    get {return idPlanta;}

    set {idPlanta = value;}

    }

    en el formPadre paso el valor a hijo asi

     string query4 = "Consulta";
                    SqlCommand cmd4 = new SqlCommand(query4, con);
                    

                    frmHIJO HIJO= new  frmHIJO();
                    HIJO.IdPlanta = Convert.ToInt32(cmd4.ExecuteScalar());

    Pero como podria hacer para que label18.text obtenga el valor del IdPlanta?

    intent pasarlo asi:

    label18.text = IdPlanta;

    pero tampoco pasa nada.

    el label18 no me interesa ya que una vez que consiga obtener el valor lo llamare en un public int para usarlo en una consulta sql para realizar un filtro por planta .

    Espero a ver sido claro, gracias de antemano.

    viernes, 8 de mayo de 2020 1:51
  • Hola pablito no podido lograr pasar el valor y hasta ahora me di por vencido, le respondi a leandro con todo lo que he intentado, espero puedas ayudarme.
    viernes, 8 de mayo de 2020 1:53
  • ....
    viernes, 8 de mayo de 2020 2:12
  • Mira Leando esta es mi interfaz


    Este seria el form Padre, dentro del gran cuadro rojo mando a llamar otros forms que ellos serian los hijos


    //al momento en el que sea abre se realiza una consulta el cual es esta
    
    public metodo()
    {
      string query4 = "SELECT USUARIOS.idPlanta from USUARIOS inner join Planta on Planta.idPlanta = USUARIOS.idPlanta where  idNumCont='" + IdUsuario + "'";
                    SqlCommand cmd4 = new SqlCommand(query4, con);
                    pla = Convert.ToInt32(cmd4.ExecuteScalar());
    
    FRM_PPMSINT PPMSINT = new FRM_PPMSINT(pla);
                    PPMSINT.label18.Text=Convert.ToString(pla);
                    PPMSINT.Show();
    
    }
    en esta parte del codigo debajo de la misma consulta mando al hijo el valor que consulto en la label18
    
                    

    ----------------------------------------

    este es el form hijo FRM_PPMSINT


    en el label 18 quiero obtener el numero// Para despues quitarlo y guardarlo en una variable del tipo int y usar dentro de una consulta

    este es el codigo que uso para trer el valor en este form:

    private int? pla = null; public FRM_PPMSINT() { InitializeComponent(); IdUserVar = Convert.ToString(UserId); LabelAverage(); AverageOverall(); } public FRM_PPMSINT(int pla): this() { this.pla = pla; } Class1 ClassUAPS = new Class1(); private void FRM_PPMSVW_Load(object sender, EventArgs e) { ClassUAPS.CatUAPS(comboBox1); ClassUAPS.MonthPerOverallInt(dataGridView2); if (pla.HasValue) // label18.Text =Convert.ToString(pla);

    }







    viernes, 8 de mayo de 2020 20:13
  • Hola BlackCode

    Por qué no intentas haciendo como yo te dije? Lee mis 2 respuestas, y fijate si no te funciona ... 

    Si no funciona, después seguimos intentando

    domingo, 10 de mayo de 2020 17:20
  • Hola pablito, pues al final surfeando en internet encontre la solucion, pero ahora me gustaria pasar esa misma variable al mismo tiempo en todos los forms:


    aqui mando del form padre al hijo

    public void manda(){

    string query4 = "SELECT USUARIOS.idPlanta from USUARIOS inner join Planta on Planta.idPlanta = USUARIOS.idPlanta where idNumCont='" + IdUsuario + "'"; SqlCommand cmd4 = new SqlCommand(query4, con); pla = Convert.ToInt32(cmd4.ExecuteScalar()); // pla2 = Convert.ToInt32(cmd4.ExecuteScalar()); FRM_PPMSINT PPMSINT = new FRM_PPMSINT(pla);

    }

    Form hijo //recibo la variable

     public partial class FRM_PPMSINT : Form
        {

    private int? pla = null;// Complemento para llamar el valor y que se inicie nulo
            public FRM_PPMSINT(int pla): this()//Necesario para llamar un valor de otro form
            {
                this.pla = pla;
            }

    private void FRM_PPMSINT_Load(object sender, EventArgs e)
            {
               
                if (pla.HasValue)
                    idPlanta=Convert.ToString(pla);
                MessageBox.Show(idPlanta);

            }

    }

    En el hijo ya recibo la variable, pero como hago que llegue la misma variable a mis demas forms al mismo tiempo?


    martes, 12 de mayo de 2020 17:45
  • Hola BlackCode

    Lo que necesitas es poder leer o escribir en un dato del Form padre desde el Form hijo? Si es así, por qué no lees un poquito (ja ja) mis respuestas y tratas de implementarlo? 

    Me parece que lo que estás haciendo es cualquier verdura ...

    Si no es eso, o sea que tenes que acceder a datos del Form padre desde el Form hijo, entonces explicame bien que es ...

    jueves, 14 de mayo de 2020 0:48