Averiguar la Posicion en un Dataset

22/06/2005 - 20:05 por Fabian | Informe spam
Hola, a todos,

quiero saber en que fila esta un codigo en un dataset, como puedo obtener
este dato sin tener que recorrerr toda la tabla

dim xi as integer
for xi = 0 to ds.table("mitabla").row.count - 1
if ds.table("mitabla").row(xi).item("c_codigo") = "12345" then
xnumero = xi
endif
next

Me parece una barrabasada

Gracias Fabian

Preguntas similare

Leer las respuestas

#6 Tristan
27/06/2005 - 16:56 | Informe spam
Si, la verdad es que tienes toda la razón.

Como realmente nunca había utilizado el Find del DataView, siempre había
dado por hecho, que devolvía la fila como el Find de DataRowCollection, en
lugar del índice.

Pues gracias, por que viene bien saberlo. Nunca lo he necesitado, pero
estaba convencido de que la única forma de obtener el índice era recorrer el
datatable (o el defaultview :-) ).

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#7 Fabian
28/06/2005 - 17:48 | Informe spam
Gracias a todos por sus respuesta, y no importa la demora , siempre son
utiles las respuesta, realmente me vino bien los comentarios y ejemplos,

Ya me pongo a modificar el Codigo,

Gracias Fabian



"Juan Pedro Gonzalez" escribió en el mensaje
news:
Hola Fabian,

Ante todo, perdona por la tardanza en mi repsuesta.

Lo primero es que no puedes buascar en el DataSet un indice para la fila


del
DataGrid... Como ya sabras el DataGrid lo puedes reaordenar haciendo click
en la columna, y esta accion alterara los indices del DataGrid pero no los
indices de la fila del DataSet! Mucho ojo con esto ya que en tu bucle


"For"
podrias obtener indices erroneos. Para obtener el mismo orden que en el
DataGrid debemos emplear la propiedad "DefaultView" que es a la que enlaza
el DataGrid. Por ejemplo:

Dim Contador As Integer = 0
Dim xNumero As Integer = -1

For Each oFila As System.Data.DataRowView In
Me.ds.table("mitabla").DefaultView
If oFila.Item("c_codigo").ToString = "12345" Then
xNumero = Contador
Exit For
End If
Contador += 1
Next

Otra posibilidad es emplear la funcion "Find". El unico problema es que


para
que funcione debes emplear tambien la funcion "Sort" sobre la columna que


te
interese (Seguramente empleara algun sistema de busqueda rápida en arrays,
para la cual el array debe estar ordenado). Cuando digo "El problema" es
porque si tu usuario ha elegido ordenar por otra columna le vas a alterar


el
orden en el que se estan mostrando los datos. Si te interesa el código
sería:

Me.ds.Table("mitabla").DefaultView.Sort = "c_codigo"
Dim xnumero As Integer = Me.ds.Table("mitabla").DefaultView.Find("12345")

If xnumero > -1 Then
Me.miDataGrid.Select(xnumero)
End If

Saludos,

Juan Pedro González



"Fabian" escribió en el mensaje
news:
> Juan, te cuento que es lo que me pasa, la idea es poder comparar los


datos
> que me ingresan en un textbox, con los que tengo en una grilla, y si me
> coinciden avisar que el dato existe, y dejar posicionado en la grilla el
> codigo que ingresaron, y para eso utilizo
> datagrid1.currentrowindex = ????
>
> Gracias Fabian
>
>
> "Juan Pedro Gonzalez" escribió en el mensaje
> news:#
> > Hola Fabian,
> >
> > No entiendo muy bien para que quieres saber el indice de la fila... Si
> > quieres buscar un codigo bastaria con hacer un:
> >
> > ds.table("mitabla").Select("c_codigo345")
> >
> > y te devolvera un array del tipo DataRow que contendra todas las
> > coindicencias, es decir, todas las filas donde c_codigo sea igual a
12345.
> >
> > No se si esto te servira de algo.
> >
> > Un saludo,
> >
> > Juan Pedro González
> >
> >
> > "Fabian" escribió en el mensaje
> > news:
> > > Hola, a todos,
> > >
> > > quiero saber en que fila esta un codigo en un dataset, como puedo
> obtener
> > > este dato sin tener que recorrerr toda la tabla
> > >
> > > dim xi as integer
> > > for xi = 0 to ds.table("mitabla").row.count - 1
> > > if ds.table("mitabla").row(xi).item("c_codigo") = "12345" then
> > > xnumero = xi
> > > endif
> > > next
> > >
> > > Me parece una barrabasada
> > >
> > > Gracias Fabian
> > >
> > >
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida