Visual Basic.NET - La Clase queda vacía de un Form a otro

 
Vista:
Imágen de perfil de Guillermo
Val: 64
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por Guillermo (40 intervenciones) el 01/07/2020 09:21:05
Compañeros, necesito su ayuda otra vez.
El problema es ese: La Clase queda vacía de un Form a otro. Llega con "Nothing".

en el primer Form tengo esto:

1
2
3
Dim Auto As New Automoviles
Auto.Patente = txtPatente.Text
...
y así para las otras propiedades... ok?

'-----------------------------------------------------
luego, cierro ese Form y abro otro, y a la clase la llamo de esta manera:

1
2
Dim Auto As New Automoviles
reporte.SetParameterValue("identificador", Auto.Identificador) 'reporte es un Crystal Report
pero llega vacia, "Nothing".

y no sé.

Me ayudan por favor?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por melqui (242 intervenciones) el 01/07/2020 17:15:30
tienes que colocar como public y no como dim, y llamar el public desde el formulario origen,
note que estas llamando una new [significa nuevo] entonces no va funcionar.
use asi

formulario_1
1
pulic Auto As  Automoviles

formulario 2
1
formulario_1.Auto.Identificador

asi quedaria

una duda si deseas usar ese metodo que estas haciendo yo te surgiero un module asi te torna mas fácil

en tu module apenas declaras



1
public Identificador  as string

y en los 2 formularios apenas usas asi

1
reporte.SetParameterValue("identificador", Identificador)

bueno de todas formas espero que te ayude

abrazos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 01/07/2020 19:51:03
A ver Guillermo
Si cierras el formulario donde se asignas los valores a tu objeto automóvil, hasta allí llegó y ya murió al cerrar el formulario

Ahora si abres otro formulario y vuelves a declarar otra vez el objeto automóvil y ya no le asignas valores, entonces es lógico que no tenga nada.

Entonces, si tienes un formulario1 y un botón donde llamas a otro formulario(formulario2), donde tienes el reporte de crystal reports, entonces la manera correcta de pasar valores entre formularios en tu caso es haciendo uso de los constructores y en tu caso, en el formulario 2, debes crear un constructor con parámetros que reciba un parámetro de tipo automóviles, entonces al invocarlo al formulario 2, la cosa sería tan sencilla como esto:

Dim FrmReporte as new Formulario2(auto)
FrmReporte.show()

Como el formulario 2 ya tiene tu objeto auto, tranquilamente puedes hacer uso de la propiedad que necesita como parámetro tu reporte.

Esa es la manera correcta de trabajar, ya luego eso que te digan que módulos, públicos y cosas así, eso era para vb6, VB.NET, es un lenguaje orientado a objetos y por lo tanto como tal se debe usar.

Espero te haya despejado la duda.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Guillermo
Val: 64
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por Guillermo (40 intervenciones) el 01/07/2020 22:13:38
Muchas gracias a melqui y a Wilfredo por sus consejos.
Me sirvo mucho lo de Wilfredo. aunque también consideré lo de melqui.
Quiero aportar que debí declarar el constructor del formulario2 así
El constructor del form2, su parámetro debe ser Object

En Form1:
1
2
3
4
5
Dim Auto as New Automoviles
Dim form2 as new Formulario2(Auto)
.
.
.

En Form2:
1
2
3
4
5
6
7
8
9
'el constructor:
public class Formulario2
       Dim Auto as New Automoviles
       Public Sub New(a as Object)
 
             Auto = a
 
       End Sub
End Class

y así, todo perfecto.
Muchas gracias a los dos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 02/07/2020 00:19:19
Pues fijate que no tienes porqué declararlo con object, ya que tu sabes cual es el tipo y por lo tanto lo debes hacer del tipo específico en tu caso.

Tu constructor debió ser así:

public sub new (myAuto as Automoviles)


Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Guillermo
Val: 64
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

La Clase queda vacía de un Form a otro

Publicado por Guillermo (40 intervenciones) el 02/07/2020 00:21:13
Sí, tenias razón.
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar