Usar procedimiento de form2 a form1

En una biblioteca de clases llamada dlloperaciones dentro de ella una clase llamada personal. Vb tengo un procedimiento (consultar)
El procedimiento es así
Public Sub consultar_personal(ByVal d1 As String, ByVal t2 As TextBox, ByVal t3 As TextBox, ByVal t4 As TextBox, ByVal t5 As TextBox, ByVal pic As PictureBox)
...
end sub
Ahora requiero utilizarlo en los formularios entonces
import dlloperaciones. Personal
en el form 1 no me haces problema porque la utilizo de la siguiente manera
consultar_personal(TextBox1.Text, TextBox2, TextBox3, TextBox4, TextBox5, PictureBox1)
Pero lo que requiero es que si me encuentro en el form2 y realizo la consulta desde ahí me indica un error
código = DataGridView1. Item(0, DataGridView1. CurrentCell. RowIndex).Value
Form1.Show()
Me.Close()
Form1.TextBox1.Text = código
x.Consultar_personal(Form1.TextBox1.Text, Form1. TextBox2, Form1. TextBox3, Form1. TextBox4, Form1. TextBox5, Form1. PictureBox1) ---------este es el problema
el error me indica lo siguiente
referencia a objecto no establecida como instancia de un objecto
sugerencias
utilice la palabra clave new para crear una instancia de objecto
lo que quiero realizar es lo siguiente en el form2 tengo la lista de registro en un datagridview
selecciono cualquiera y al seleccionar el registro me consulta cada dato en los textbox del form1
pero no se porque razón no puedo realizar mi consulta de form2 a form1 con mi procedimiento consultar

1 Respuesta

Respuesta
1

El tema no va en la creación de la variable objeto, va por los objetos que le mandas.

¿Cómo tomas tu los valores de otro formularios, si en el otro (Form2) no existe tal referencia?

Lo que deberías hacer, es crear variables de tipo Púiblico en el Form2 para que sean llenadas cuando abres el Form2 desde el Form1, y de esa manera lo envías por parámetro a las variables.

Si tienes dudas me lo haces saber.

entonces como debería de acero disculpa la ignorancia

En el formulario 2 haces esto

Public Variable1 As Integer

Y eso como tantas variables tengas y del tipo que tu quieras, para fin del ejemplo puse Integer.

En el formulario 1 haces:

Dim f As New Formulario2
f.Variable1 = 20
f.Show()

F sería la variable objeto de tipo Formulario, al ver sus opciones, encontrarás la variable pública para instanciarla.

Obviamente la variable pública puede ser del tipo que quieras, en tu casa hasta objeto.

veras no encuentro la forma de poder realizarlo

¿Y qué te falta?

hola gracias por contestar me he quedado estancado en esta parte , veras he visto muchos ejemplos de pasar variables entre form pero no he visto como mi caso como para poder guiarme y poder utilizar el procedimiento
en el form 2 solo tengo un datagridview con los registros, al hacer click en cualquiera deseo que los datos pasen al form 1 que están las cajas de texto
en el form 2 tengo lo siguiente
import dlloperaciones.personal
dim x as new dlloperaciones.personal
y utilizo el procedimiento así
código = DataGridView1.Item(0, DataGridView1.CurrentCell.RowIndex).Value
Form1.Show()
Me.Close()
Form1.TextBox1.Text = código

x.consultar_personal(Form1.TextBox1.Text, Form1.TextBox2, Form1.TextBox3, Form1.TextBox4, Form1.TextBox5, Form1.PictureBox1) ---------esta linea es el problema

el error me indica lo siguiente (solo cuando lo ejecuto)
referencia a objecto no establecida como instancia de un objecto sugerencias
utilice la palabra clave new para crear una instancia de objecto

estoy en la deriva ayuda please

Pero eso ya te lo he explicado y ya me lo habías preguntado.

Primero no deberías pasar por parámetro un objeto (el TextBox) si no su Text.

Segundo, para hacer una consulta de un registro bastaría solo con un campo indentificatorio único, como el ID o algo en particular.

Tercero, te di la forma de instanciar variables en el Form2 de manera que al abrir (creándola previamente) el formulario, instancies las variables del Form2 que necesitas para llamar a consultar_personal desde el Form2.

Entonces, teniendo en cuenta esto que hablamos, y ya sabiendo el problema que tenemos, por que no lo pones en práctica tal y como te lo expliqué.

¿Tienes problemas para hacer lo que yo te expliqué?, dime en que parte no entiendes o no puedes para subsanar eso.

bueno intentando pude resolver el problema solo colocando como public mi variable que llamo a la clase en el form1 y en form 2 para uitlizarlo era así

form1.x.consultar(...

gracias por la< ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas