¿Visual Studio con errores?

Iniciado por zonahurbana, 13 Julio 2015, 08:01 AM

0 Miembros y 1 Visitante están viendo este tema.

zonahurbana

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.


Aquí está el método listar que devuelve un DataTable


Dicho DataTable viene desde mi clase Conexión


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?
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Eleкtro

#1
Cita de: zonahurbana en 13 Julio 2015, 08:01 AM

¿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








zonahurbana

#2
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.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Eleкtro

#3
Cita de: zonahurbana en 13 Julio 2015, 14:59 PMNo 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 (vbnet) [Seleccionar]
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 (vbnet) [Seleccionar]
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








zonahurbana

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?
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

engel lex

Cita de: 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?

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Eleкtro

#6
Cita de: zonahurbana en 13 Julio 2015, 19:30 PMTal 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.




Cita de: zonahurbana en 13 Julio 2015, 19:30 PMLo 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 (vbnet) [Seleccionar]
Public Class testclass
End Class


Código (vbnet) [Seleccionar]
Public Class Form1

   Public testclass As testclass

   Private Sub method()
       Dim testclass As testclass
   End Sub

End Class


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

Saludos