Con ayuda lo pude solucionar. La solución fue que en lugar de que me devuelva un listado me devuelva la entidad. Aquí las modificaciones:
Código vb:
Ver originalImports MySql.Data.MySqlClient
Imports System.Data.SqlTypes
Imports ENTIDAD
Public Class VehiculoAD
Private conn As New MySqlConnection 'SqlConnection
Private conn1 As New MySqlConnection 'SqlConnection
Private comando As New MySqlCommand 'SqlCommand
#Region "Cadena de conexion"
Public Sub New()
Dim Objconexion As New ConexionAD
conn = Objconexion.abrir
comando.Connection = conn
End Sub
#End Region
#Region "Función Filtra_Vehi_PorId"
Public Function Filtra_Vehi_PorId(ByVal ObjVehiculoEN As VehiculoEN) As VehiculoEN
Dim reader As MySqlDataReader
Try
comando.CommandType = CommandType.StoredProcedure
comando.CommandText = "Filtra_Vehi_PorId"
Dim _idenviado As New MySqlParameter("idenviado", MySqlDbType.Int32)
_idenviado.Value = ObjVehiculoEN.idv
_idenviado.Direction = ParameterDirection.Input
comando.Parameters.Add(_idenviado)
reader = comando.ExecuteReader
Dim vehiculo As New VehiculoEN
While reader.Read
vehiculo.idv = LTrim(RTrim(Convert.ToInt32(reader(0))))
vehiculo.numplaca = LTrim(RTrim(Convert.ToString(reader(1))))
Dim ObjMotor = New MotorEN((reader(2)))
vehiculo.idmotor = ObjMotor.serie
Dim ObjMarca = New MarcaEN((reader(3)))
vehiculo.idmarca = ObjMarca.nommarca
vehiculo.idestado = LTrim(RTrim(Convert.ToString(reader(4))))
vehiculo.kmcompra = LTrim(RTrim(Convert.ToDecimal(reader(5))))
vehiculo.kmactual = LTrim(RTrim(Convert.ToDecimal(reader(6))))
End While
Return list
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
Finally
conn.Close()
conn.ClearAllPools()
conn = Nothing
End Try
End Function
#End Region
La capa Entidad no la incluyo porque ya se sabe.
Ahora la capa Lógica de negocio "VehiculoLN"
Código vb:
Ver originalImports ENTIDAD
Imports ACCESO_DATOS
Public Class VehiculoLN
Private ObjVehiculoAD As VehiculoAD
Public Sub New()
ObjVehiculoAD = New VehiculoAD
End Sub
#Region "Establecer conexion con la función Filtra_Vehi_PorId"
Public Function Filtra_Vehi_PorId(ByVal ObjVehiculoEN As VehiculoEN) As VehiculoEN
Return ObjVehiculoAD.Filtra_Vehi_PorId(ObjVehiculoEN)
End Function
#End Region
Ahora la capa presentación "ListaVehíSalidasEntradas": Bueno primero cargo un pequeño listado en un datagridview donde incluyo los fk de las tablas reelacionadas los cuales oculto en las columnas; luego al seleccionar un registro me envia un id esto hace que el procedimiento me filtre el registro y me muestre los datos que requiero.
Formulario "ListaVehiSalEntVehi"
Código vb:
Ver originalImports ENTIDAD
Imports LOGICA_NEGOCIO
Imports System.IO
Imports System.Drawing
Imports Helpers
Public Class FrmListaSalEntVehi
Private ObjRegistro_Reco_VehiEN As Registro_Reco_VehiEN
Private ObjRegistro_Reco_VehiLN As Registro_Reco_VehiLN
Sub FormatoDgv()
Me.DgvListaRecorVehi.DefaultCellStyle.NullValue = "no entry"
With Me.DgvListaRecorVehi
.Columns(1).Visible = False
.Columns(2).Visible = False
.Columns(7).DefaultCellStyle.Format = "t"
.Columns(9).DefaultCellStyle.Format = "t"
End With
End Sub
#Region "Modificador de acceso para cargar el listado"
Public Sub CargarListaRecorVehi()
Try
ObjRegistro_Reco_VehiEN = New Registro_Reco_VehiEN
ObjRegistro_Reco_VehiLN = New Registro_Reco_VehiLN
DgvListaRecorVehi.AutoGenerateColumns = False
FormatoDgv()
DgvListaRecorVehi.DataSource = ObjRegistro_Reco_VehiLN.Lista_Recor_Vehi()
LblTotalRegistros.Text = "Total de registros" + " " + CStr(DgvListaRecorVehi.Rows.Count)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
End Try
End Sub
#End Region
Private Sub FrmListaSalEntVehi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CargarListaRecorVehi()
End Sub
Private Sub BtnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnModificar.Click
If (CStr(DgvListaRecorVehi.Rows.Count) <= 0) Then
MsgBox("Al menos Debes de registrar una salida de vehículo para poder registrar llegada", MsgBoxStyle.Information, "Mensaje")
Exit Sub
End If
If (TxtCapturaId.Text = "") Then
MsgBox("Seleccione 1 registro para registrar llegada del vehículo", MsgBoxStyle.Information, "Mensaje")
Exit Sub
End If
Dim FormRegEntVehi As FrmRegEntVehi
FormRegEntVehi = New FrmRegEntVehi(Me)
FormRegEntVehi.ShowDialog()
FormRegEntVehi = Nothing
End Sub
Private Sub DgvListaRecorVehi_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DgvListaRecorVehi.CellClick
If (Convert.ToInt32(DgvListaRecorVehi.Rows.Count) >= 1) Then
For Each d As DataGridViewRow In Me.DgvListaRecorVehi.SelectedRows
TxtCapturaId.Text = d.Cells(0).Value
Next
End If
End Sub
Luego en un formulario Modal capturo el id como les comente líneas más arriba para que mi procedimiento me filtre lo que requiero mostrar todo bien filtra el procedimiento funca hasta en la capa AccesoDatos en las variables me muestra los datos que el procedimiento filtra. Ahora lo que no puedo hacer hasta el momento es que esos datos me muestre en cada textbox. Aquí esta el código:
Código vb:
Ver originalImports ENTIDAD
Imports LOGICA_NEGOCIO
Imports System.IO
Imports System.Drawing
Imports Helpers
Public Class FrmRegEntVehi
Dim FormListaSalEntVehi As FrmListaSalEntVehi
Public Sub New(ByVal _FormListaSalEntVehi As FrmListaSalEntVehi)
' The Me.InitializeComponent call is required for Windows Forms designer support.
FormListaSalEntVehi = _FormListaSalEntVehi
Me.InitializeComponent()
'
' TODO : Add constructor code after InitializeComponents
''
End Sub
Private ObjRegistro_Reco_VehiEN As Registro_Reco_VehiEN
Private ObjRegistro_Reco_VehiLN As Registro_Reco_VehiLN
Private ObjVehiculoEN As VehiculoEN
Private ObjVehiculoLN As VehiculoLN
Private ObjPolizaEN As PolizaEN
Private ObjPolizaLN As PolizaLN
Private x As Integer
Private Sub FrmRegEntVehi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
x = FormListaSalEntVehi.TxtCapturaId.Text
LblFechaSys.Text = Date.Today
LblHora.Text = Date.Now.ToLongTimeString
For Each d As DataGridViewRow In FormListaSalEntVehi.DgvListaRecorVehi.SelectedRows
'TxtCodigo.Text = d.Cells(0).Value
TxtIdV.Text = d.Cells(1).Value
Next
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
LblHora.Text = Date.Now.ToLongTimeString
End Sub
'Estoy codificando en el textchange del textbox donde capturo el id del vehiculo pero no logro hacer que cada text se enlace a cada campo
Private Sub TxtIdV_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtIdV.TextChanged
Try
ObjVehiculoEN = New VehiculoEN
ObjVehiculoLN = New VehiculoLN
ObjVehiculoEN.idv = LTrim(RTrim(TxtIdV.Text))
Dim datos As VehiculoEN= ObjVehiculoLN.Filtra_Vehi_PorId(ObjVehiculoEN)
Dim i as Integer=0
i=datos(0).idv
TxtNumPlaca.Text = datos(1).numplaca
TxtIdMotor.Text = datos(2).idmotor
TxtMarca.Text = datos(3).idmarca
TxtEstado.Text = datos(4).idestado
TxtKmCompra.Text = datos(5).kmcompra
TxtkmInicial.Text = datos(6).kmactual
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
End Try
End Sub