Por la forma en que está no puedo probar el código pero te puedo decir que una función debe establecerse con el tipo: Function X() AS ....
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada) As Integer
Public Function mostrarvehiculos(obj As Object) As Int32
Cita de: djnilo en 18 Octubre 2016, 04:08 AMme marca error ( Result = Convert.ToInt32(OMostrar.mostrar(obj))
no se puede convertir a inter
Disculpa pero evidentemente el mensaje de error no dice "
no se puede convertir a inter" con esas palabras...
Sí tienes un problema sobre un mensaje de error muy específico entonces deberías
mostrar el mensaje de error completo tal y como se te muestra en la IDE, ¿que menos que hacer eso si buscas ayuda?.
El método
System.Convert.ToInt32() acepta muchos tipos de parámetros pero tampoco has especificado que tipo de valor devuelve la función
DaoInsertTicker.mostrar(), tampoco has mostrado el código de esa función, ni nos has dicho que valor le estás pasando a la función, solo has descrito por encima el propósito del código pero eso no es relevante con respecto al problema, no has proporcionado ninguna información sobre el problema, ni siquiera el mensaje de error completo... De verdad lo siento que escriba un párrafo entero solo para decir esto, pero me molesta bastante que se hagan las cosas así, por que no entiendo de que sirve invertir 10 o 15 minutos para formular una pregunta sobre programación si al terminar de escribir el post no se ha proporcionado ninguna información para poder ayudarte, así pierdes tiempo tu y también los demás, por que no somos adivinos...
De todas formas puedes corregir el fallo por ti mismo sin ayuda externa, o al menos localizarlo, simplemente antes de intentar llamar a la función
System.Convert.ToInt32() comprueba el valor que le vas a pasar, primero comprueba el valor de
obj y luego el valor que devuelve la función
DaoInsertTicker.mostrar() cuando le pasasas
obj, así de sencillo, ¡inténtalo!.
Por último, te recomiendo una solución global a muchos de los problemas que hay en el código que has mostrado y en la parte que no hayas mostrado (debido a malos hábitos de escritura de código VB.NET), te recomiendo establecer las siguientes sentencias
Option:
Option Strict On
Option Explicit On
Lo aconsejable es activarlo de forma permanente desde las opciones de la IDE, pero bueno, lo que puedes hacer es copiar y colocar esas dos lineas de código que te he mostrado, arriba del todo de la clase conflictiva y de las demás classes de tu proyecto, y entonces ve corrigiendo uno por uno los errores de compilación que Visual Studio te irá indicando, entre esos errores te indicará por ejemplo el mal hábito que ya explicó @okik, a una función se le debe asignar un tipo de retorno, de lo contrario devolverá el tipo por defecto,
Object, y esto no es nada bueno para conversiones de tipos como lo que intentas hacer.
Saludos!
Cita de: okik en 18 Octubre 2016, 12:09 PM
Por la forma en que está no puedo probar el código pero te puedo decir que una función debe establecerse con el tipo: Function X() AS ....
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada) As Integer
Public Function mostrarvehiculos(obj As Object) As Int32
muchas gracias por responder okik
pero me sigue mandando el error
Public Function mostrarvehiculos(obj As VregistroEntrada) As Integer
Dim Conn As New SqlConnection(conexion.Connectionstring)
Dim eEntradavehiculo As VregistroEntrada = Nothing
Dim Cmd As New SqlCommand
Try
Conn.Open()
Cmd.CommandText = "Select IdEntraVehiculo,Placa,FechaHoraEntrada,Codigo From EntradaVehiculo Where Codigo = @Codigo"
Cmd.CommandType = CommandType.Text
Cmd.Connection = Conn
Cmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = obj.Codigo
Dim DT As New SqlDataAdapter(Cmd)
Dim TABLA As New DataTable
DT.Fill(TABLA)
eEntradavehiculo = New VregistroEntrada
If TABLA.Rows.Count > 0 Then
Dim row As DataRow = TABLA.Rows(0)
eEntradavehiculo.Placa = If(CStr(row.IsNull(1)), "", row(1))
eEntradavehiculo.FechaHoraEntrada = If(row.IsNull(2), Nothing, row(2))
eEntradavehiculo.Codigo = CStr(row("Codigo"))
End If
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
If Conn.State = ConnectionState.Open Then
Conn.Close()
Conn.Dispose()
End If
End Try
Return eEntradavehiculo
End Function
en esta linea Return eEntradavehiculo me dice que no se puede convertir en integer
capa entidad
Public Class VregistroEntrada
Public Property IdTicker As Integer
Public Property Placa As String
Public Property FechaHoraEntrada As DateTime
Public Property Codigo As Integer
End Class
capa negocios Public Function Mostrar(objmostrar As VregistroEntrada) As DataRow
Dim OMostrar As New DaoInsertTicker
Return OMostrar.mostrar(objmostrar)
End Function
(http://i66.tinypic.com/35dc10j.jpg)
MOD: Imagene adaptada a las normas del foro.
Cita de: Ele?tro en 18 Octubre 2016, 16:26 PM
Disculpa pero evidentemente el mensaje de error no dice "no se puede convertir a inter" con esas palabras...
Sí tienes un problema sobre un mensaje de error muy específico entonces deberías mostrar el mensaje de error completo tal y como se te muestra en la IDE, ¿que menos que hacer eso si buscas ayuda?.
El método System.Convert.ToInt32() acepta muchos tipos de parámetros pero tampoco has especificado que tipo de valor devuelve la función DaoInsertTicker.mostrar(), tampoco has mostrado el código de esa función, ni nos has dicho que valor le estás pasando a la función, solo has descrito por encima el propósito del código pero eso no es relevante con respecto al problema, no has proporcionado ninguna información sobre el problema, ni siquiera el mensaje de error completo... De verdad lo siento que escriba un párrafo entero solo para decir esto, pero me molesta bastante que se hagan las cosas así, por que no entiendo de que sirve invertir 10 o 15 minutos para formular una pregunta sobre programación si al terminar de escribir el post no se ha proporcionado ninguna información para poder ayudarte, así pierdes tiempo tu y también los demás, por que no somos adivinos...
De todas formas puedes corregir el fallo por ti mismo sin ayuda externa, o al menos localizarlo, simplemente antes de intentar llamar a la función System.Convert.ToInt32() comprueba el valor que le vas a pasar, primero comprueba el valor de obj y luego el valor que devuelve la función DaoInsertTicker.mostrar() cuando le pasasas obj, así de sencillo, ¡inténtalo!.
Por último, te recomiendo una solución global a muchos de los problemas que hay en el código que has mostrado y en la parte que no hayas mostrado (debido a malos hábitos de escritura de código VB.NET), te recomiendo establecer las siguientes sentencias Option:
Option Strict On
Option Explicit On
Lo aconsejable es activarlo de forma permanente desde las opciones de la IDE, pero bueno, lo que puedes hacer es copiar y colocar esas dos lineas de código que te he mostrado, arriba del todo de la clase conflictiva y de las demás classes de tu proyecto, y entonces ve corrigiendo uno por uno los errores de compilación que Visual Studio te irá indicando, entre esos errores te indicará por ejemplo el mal hábito que ya explicó @okik, a una función se le debe asignar un tipo de retorno, de lo contrario devolverá el tipo por defecto, Object, y esto no es nada bueno para conversiones de tipos como lo que intentas hacer.
Saludos!
muchas gracias por responder elektro
(http://i66.tinypic.com/35dc10j.jpg)
capa negocios esta este codigo
Dim Conn As New SqlConnection(conexion.Connectionstring)
Dim eEntradavehiculo As VregistroEntrada = Nothing
Dim Cmd As New SqlCommand
Try
Conn.Open()
Cmd.CommandText = "Select IdEntraVehiculo,Placa,FechaHoraEntrada,Codigo From EntradaVehiculo Where Codigo = @Codigo"
Cmd.CommandType = CommandType.Text
Cmd.Connection = Conn
Cmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = obj.Codigo
Dim DT As New SqlDataAdapter(Cmd)
Dim TABLA As New DataTable
DT.Fill(TABLA)
eEntradavehiculo = New VregistroEntrada
If TABLA.Rows.Count > 0 Then
Dim row As DataRow = TABLA.Rows(0)
eEntradavehiculo.Placa = If(CStr(row.IsNull(1)), "", row(1))
eEntradavehiculo.FechaHoraEntrada = If(row.IsNull(2), Nothing, row(2))
eEntradavehiculo.Codigo = CStr(row("Codigo"))
End If
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
If Conn.State = ConnectionState.Open Then
Conn.Close()
Conn.Dispose()
End If
End Try
Return eEntradavehiculo
End Function
en esta linea me marca el error Return eEntradavehiculo
el integer lo que pasa es que son son datarow me imagino por eso manda ese error
codigo capa entidadPublic Class VregistroEntrada
Public Property IdTicker As Integer
Public Property Placa As String
Public Property FechaHoraEntrada As DateTime
Public Property Codigo As Integer
End Class
capa negocio
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada)
Dim OMostrar As New DaoInsertTicker
Dim Result As Integer = 0
Try
Result = Convert.ToInt32(OMostrar.mostrar(obj))
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
Return Result
End Function
MOD: Imagen adaptada a las normas del foro.