Usuario
DUDA... Haciendo una consulta y acceder a esa consulta desde cualquier form.

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.
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
-
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- Editado Leandro TuttiniMVP martes, 28 de abril de 2020 23:23
-
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+"'"
-
-
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
-
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 -
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.
-
-
-
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);
}
-
-
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
En el hijo ya recibo la variable, pero como hago que llegue la misma variable a mis demas forms al mismo tiempo?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);
}}
-
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 ...