• Lunes 23 de Diciembre de 2024, 18:06

Autor Tema:  Obtener Un Datarow En Particular...  (Leído 1257 veces)

DarkSlash

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Obtener Un Datarow En Particular...
« en: Jueves 14 de Febrero de 2008, 20:03 »
0
El tema es así:
1) Tengo un string "nombre" con el nombre de un usuario
2) Necesito encontrar en la tabla el registro que coincida que tenga en el campo "nombre" dicho string.
3) La clave primaria de la  tabla es "id" y es un integer.

(para cada nombre hay un solo registro, no puede haber más de uno)

Yo lo hacía así:
Código: Text
  1. Return dtTipos.Rows.Find(nombre)
  2.  

Eso funcionaba cuando "nombre" era la clave primaria. Ahora que es "id" no funciona.

Otra cosa para hacer es algo del tipo:
Código: Text
  1.         dvUsuarios = New DataView
  2.         dvUsuarios.Table = dtUsuarios
  3.         dvUsuarios.RowFilter = ("nombre = '" & nombre & "'")
  4.         Return dvUsuarios
  5.  
Pero eso devuelve un DataView (de un solo registro) y NO un datarow!!

Ah! un detalle! Estoy trabajando con ADO.NET y bajo el paradigma MVC, por lo que no quiero hacer una consulta del tipo "Select from usuarios * where nombre = cadena".

¿Alguien tiene alguna idea?

DarkSlash

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Obtener Un Datarow En Particular...
« Respuesta #1 en: Jueves 14 de Febrero de 2008, 21:13 »
0
bueno... con paciencia y con saliva el elefante... digo! con paciencia y probando encontré la solución... al menos, una de ellas:

Código: Text
  1.     Public Function seleccionarUsuario(ByVal nombre As String) As DataRow
  2.         Dim drUsuario As DataRow
  3.         dvUsuarios = New DataView
  4.         dvUsuarios.Table = dtUsuarios
  5.         dvUsuarios.RowFilter = ("nombre = '" & nombre & "'")
  6.         drUsuario = dvUsuarios.Table.Rows.Item(0)
  7.         Return drUsuario
  8.         dvUsuarios = Nothing
  9.     End Function
  10.  

lo posteo por si alguien tenía la misma duda que yo o para que otro encuentra una solución mejor :)