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?
Cita de: zonahurbana en 13 Julio 2015, 08:01 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
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.
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:
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:
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
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?
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
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:
Public Class testclass
End Class
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