Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: zonahurbana en 13 Julio 2015, 08:01 am



Título: ¿Visual Studio con errores?
Publicado por: zonahurbana en 13 Julio 2015, 08:01 am
La verdad es que estoy obteniendo un error que no tiene sentido alguno.

VS me indica que no es posible convertir un DataRow en un DataTable... cuando en realidad no sé de dónde obtiene la idea de "DataRow" si nunca he usado dicha clase.
(http://i62.tinypic.com/2wr3hco.png)

Aquí está el método listar que devuelve un DataTable
(http://i60.tinypic.com/fuavl2.png)

Dicho DataTable viene desde mi clase Conexión
(http://i59.tinypic.com/qn0a5z.png)

He limpiado la solución y vuelto a generar, pero nada.
El programa no se puede ejecutar porque salta dicho error de compilación.

¿A qué podría deberse? ¿Es un fallo del VS?


Título: Re: ¿Visual Studio con errores?
Publicado por: Eleкtro en 13 Julio 2015, 11:22 am
(http://i62.tinypic.com/2wr3hco.png)

¿A qué podría deberse?

No es ningún error de Visual Studio.

ListarPorSector es un objeto de tipo Datatable, pero al utilizar un índice en la colección ( DataTable(índice) ) lo que estás devolviendo/referenciando es un DataRow.

Solución: Elimina el índice, o declara un DataRow en lugar de un DataTable.

Saludos


Título: Re: ¿Visual Studio con errores?
Publicado por: zonahurbana en 13 Julio 2015, 14:59 pm
No puedo creer que haya olvidado añadir el parámetro correspondiente al método (y que VB haya asumido tal valor como un índice).

En otro lenguaje para acceder al primer elemento se hubiese necesitado escribir algo como lo siguiente: Clase.metodoEstatico()[0]

Muchas gracias.


Título: Re: ¿Visual Studio con errores?
Publicado por: Eleкtro en 13 Julio 2015, 16:20 pm
No puedo creer que haya olvidado añadir el parámetro correspondiente al método (y que VB haya asumido tal valor como un índice).

La función ListarPorSector no recive ningún parámetro, por ende se asume que la agrupación de parámetros que utilizas () pertenece al objeto devuelto, y no a la firma de la función, pero vamos, que igualmente puedes hacer lo que mencionas de manera opcional si te resulta más familiar:

Código
  1. Dim dr As DataRow = funcion()(0)

Sin embargo, mi recomendación es que utilices siempre que puedas los parámetros nombrados o pass-by-name (named parameters) para evitar confusiones la próxima vez:

Código
  1. Dim dr As DataRow = funcion(index:=0)

PD:
A diferencia de esos otros lenguajes que te refieres, yo lo considero una mejora en VB.Net, por que evita confusiones al escribir agrupaciones de parámetros vacías en ciertas circunstancias, ¿para que obligar a escribirlas, si están vacias?, son inservibles y confusas, parte de código innecesario para la depuración del mismo, se que cuesta olvidar las costumbres, pero piensalo bien xD: ¿realmente es algo positivo a lo que te obligaba la sintaxis de "X" lenguaje?.

Saludos


Título: Re: ¿Visual Studio con errores?
Publicado por: zonahurbana en 13 Julio 2015, 19:30 pm
Gracias nuevamente.
Desconocía la característica sobre usar parámetros con nombres.

Lo que sí me parece un poco exagerado de VB es que si tengo una clase Ubicacion no puedo usar el nombre de variable ubicacion.

Tal vez vuelva a publicar si me surge algún error que no sea error a mi parecer :silbar:
Su firma sugiere el uso de GeSHi... ¿está mal si uso imágenes con resaltado de sintaxis?


Título: Re: ¿Visual Studio con errores?
Publicado por: engel lex en 13 Julio 2015, 19:45 pm
Gracias nuevamente.
Desconocía la característica sobre usar parámetros con nombres.

Lo que sí me parece un poco exagerado de VB es que si tengo una clase Ubicacion no puedo usar el nombre de variable ubicacion.

Tal vez vuelva a publicar si me surge algún error que no sea error a mi parecer :silbar:
Su firma sugiere el uso de GeSHi... ¿está mal si uso imágenes con resaltado de sintaxis?

no, mientras se lea bien, se vale :P

aunque si es un código que los otros podrían copiar para testear y comprobar, si, GeSHi por comodidad


Título: Re: ¿Visual Studio con errores?
Publicado por: Eleкtro en 13 Julio 2015, 20:06 pm
Tal vez vuelva a publicar si me surge algún error que no sea error a mi parecer :silbar:
Su firma sugiere el uso de GeSHi... ¿está mal si uso imágenes con resaltado de sintaxis?

Lo que te ha comentado el compañero @Engel.

Al utilizar imágenes te privas de una posible ayuda, ya que en códigos de varias lineas nadie va a poder hacer un copy/paste de una imagen para poder testear tú código.

Personalmente prefiero que publiques el código por escrito, pero es algo de libre elección.



Lo que sí me parece un poco exagerado de VB es que si tengo una clase Ubicacion no puedo usar el nombre de variable ubicacion.

Si que puedes hacerlo:

Código
  1. Public Class testclass
  2. End Class

Código
  1. Public Class Form1
  2.  
  3.    Public testclass As testclass
  4.  
  5.    Private Sub method()
  6.        Dim testclass As testclass
  7.    End Sub
  8.  
  9. End Class

¿Por qué dices no poder?, muestra el código.

Saludos