none
Guardar datos en un DataGridView de un formulario distinto (VB.NET) RRS feed

  • Pregunta

  • Hola, necesito ayuda para guardar los datos en un datagridview. Tengo una funcion que itera datos y al final de la funcion intene colocar el comando para guardar los datos pero anteponiendo el form (Form2.DataGridView1.Rows.Add()) pero da error. El programa da varias vuelts asi que los resultados se van sobrescribiendo, y antes de que se sobre escriban es donde necesito colocar el comando, asi que me seria de mucha ayuda si me dijieran que comando debe ser o hay que hacer algo antes de usar el comando que yo usé. Gracias por la ayuda.
    sábado, 17 de noviembre de 2018 22:03

Respuestas

  • NO puede ser, algo falla. Estabas diciendo que tenías un Form2 con un datagridview para recoger unos datos, y que después desde otro sitio querías leer esos datos ya introducidos usando Form2.DataGridView1.Rows.Add() (que no funcionaba). Si tenías un Form2 que había recogido unos datos, ese Form2 has tenido que abrirlo en algún momento, para que puedas meterle los datos. Tiene que existir en tu código algo que lo abra, de lo contrario nunca habrías podido verlo en pantalla para meterle esos datos.

    Si no existe, y estás partiendo de cero, la instrucción es precisamente la que te puse:

    Dim f2 as New Form2() : f2.ShowDialog()

    Si pones ShowDialog(), se abre y bloquea al que lo abrió. Si pones Show(), no se bloquea y se pueden usar los dos a la vez.

    Pero cuidado, no escribas eso además de lo que ya tienes, si lo haces se abrirán en pantalla dos copias del formulario.

    En cuanto a lo de "creí que VB.NET era el lenguaje": no es "el" lenguaje; es "un" lenguaje. Se pueden usar muchos lenguajes en Visual Studio, por lo que si pones una pregunta en el foro de Visual Studio que no incluye ningún fragmento de código y no dices nada acerca del lenguaje, no se puede concluir cuál de los lenguajes es el que estás usando.

    • Propuesto como respuesta Pablo RubioModerator lunes, 19 de noviembre de 2018 16:05
    • Marcado como respuesta Curinao lunes, 19 de noviembre de 2018 16:36
    lunes, 19 de noviembre de 2018 7:27

Todas las respuestas

  • Casi seguro que donde has puesto Form2.DataGridView1.Rows.Add(), Form2 es el nombre de la clase del formulario. Eso no sirve, tienes que poner el nombre de la variable donde tengas la instancia a la que quieres enviar los datos.

    Por ejemplo, si cuando presentaste el Form2 lo abriste así:

    Form2 frm = new Form2(); frm.Show();

    Entonces la instancia es frm (no Form2). Así que siguiendo ese ejemplo tendrías que escribir frm.DataGridView1.Rows.Add().

    Recuerda que la clase se puede instanciar varias veces dando lugar a varias copias del formulario. Asegúrate de que no construyes una nueva instancia y le mandas a esa instancia los datos, que entonces no se verían en pantalla. Cerciórate de que usas la misma instancia que abriste originalmente.

    sábado, 17 de noviembre de 2018 22:20
  • Hola gracias por responder, olvide mencionar que soy nuevo en visual, y no tentiendo la linea que pusiste ni se donde debo colocarla, 

    Form2 frm = new Form2(); frm.Show();

    me la podrias explicar por favor, y cuando puse (Form2.DataGridView1.Rows.Add()) Form2 es el nombre del form en el que intento enviar los datos, supongo que es lo mismo que nombre de la clase.


    • Editado Curinao sábado, 17 de noviembre de 2018 22:28
    sábado, 17 de noviembre de 2018 22:27
  • Bueno, si eres nuevo en Visual Basic es normal que no entiendas esa línea porque no es Visual Basic sino C#. Debes decir el lenguaje en el que trabajas al formular tu pregunta, salvo cuando preguntes en el foro de Visual Basic. Pero en el foro de Visual Studio, dado que Visual Studio soporta varios lenguajes, es necesario que digas en qué lenguaje trabajas, o de lo contrario quienes te respondan presumirán que eres lo suficientemente experto como para reconocer cualquier lenguaje y te responderán en el que más les guste.

    En cuanto a lo de "ni se donde debo colocarla": No, esa línea no debes colocarla. Lo que tienes que hacer es buscar en tu programa el sitio donde ya tienes colocada una línea similar o equivalente a esa, y fijarte qué es lo que tienes puesto en tu código. Busca dónde tienes el código que abre el Form2, y muéstranos cómo lo estás abriendo. Debe haber una llamada a New Form2 y después una llamada a Show o ShowModal.

    domingo, 18 de noviembre de 2018 7:04
  • No tengo ninguna linea en cuanto al form en el que quiero guardar los datos, por eso pregunto que es lo que debo poner, habia visto que se debia poner dim F2 as new form o algo asi, y luego poner show creo que era, pero tengo entendido que si pongo show se abre el form, pero yo no quiero que se abra hasta que se aprete un boton, osea que se guarden los datos de las iteraciones y en un private sub aparte poner un boton el cual abra esa ventana con los datos, y perdon por no especificar el lenguaje, creí que VB.NET era el lenguaje.
    lunes, 19 de noviembre de 2018 1:38
  • NO puede ser, algo falla. Estabas diciendo que tenías un Form2 con un datagridview para recoger unos datos, y que después desde otro sitio querías leer esos datos ya introducidos usando Form2.DataGridView1.Rows.Add() (que no funcionaba). Si tenías un Form2 que había recogido unos datos, ese Form2 has tenido que abrirlo en algún momento, para que puedas meterle los datos. Tiene que existir en tu código algo que lo abra, de lo contrario nunca habrías podido verlo en pantalla para meterle esos datos.

    Si no existe, y estás partiendo de cero, la instrucción es precisamente la que te puse:

    Dim f2 as New Form2() : f2.ShowDialog()

    Si pones ShowDialog(), se abre y bloquea al que lo abrió. Si pones Show(), no se bloquea y se pueden usar los dos a la vez.

    Pero cuidado, no escribas eso además de lo que ya tienes, si lo haces se abrirán en pantalla dos copias del formulario.

    En cuanto a lo de "creí que VB.NET era el lenguaje": no es "el" lenguaje; es "un" lenguaje. Se pueden usar muchos lenguajes en Visual Studio, por lo que si pones una pregunta en el foro de Visual Studio que no incluye ningún fragmento de código y no dices nada acerca del lenguaje, no se puede concluir cuál de los lenguajes es el que estás usando.

    • Propuesto como respuesta Pablo RubioModerator lunes, 19 de noviembre de 2018 16:05
    • Marcado como respuesta Curinao lunes, 19 de noviembre de 2018 16:36
    lunes, 19 de noviembre de 2018 7:27