[Solucionado] ¿Como saber la posición de determinado registro VB.NET + MySql?

Iniciado por estebanvr, 27 Marzo 2011, 01:23 AM

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

estebanvr

Hola, resulta que estoy elaborando cierto programa, y quiero implementar la funcion de que cuando el usuario navegue los registros de la BD por medio de textboxs , aparezca debajo algo como asi:

ejemplo:
2 de 10

donde 2 es el registro que el usuario tiene posicionado y 10 el total de registros de la tabla, el numero 2 se incrementara conforme el usuario pulse el boton de adelantar,

Mi problema radica en saber como obtener la posición del registro seleccionado,
Espero me puedan ayudar ya sea con en codigo o una consulta sql

Me ayudaría un montón si no se tuviera que implementar con datarows

Gracias por su Tiempo

seba123neo

Hola, la verdad nunca necesite hacerlo, ya que siempre es mejor hacerlo con una grilla, que te muestra todos los registros, pero si necesitas hacerlo asi pues la verdad no tengo idea, se que se puede usar CurrencyManager para manejar la posicion de un datatable y posicionarlo donde quieras o obtener la posicion donde estas parado, con la propiedad llamada "Position", con un contador que vaya aumentando esa posicion o disminuyendo.

busca sobre eso, si queres te paso un ejemplo, pero buscalo.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

.mokk.

Yo al igual nunca lo he ocupado, ya que comunmente utilizo en cada tabla ID, de autoincremento y asi identificar la posicion y ya con contar las filas que hay en tal tabla obtengo posicion y total de filas.

estebanvr

Gracias por tomarse el tiempo para responder, y si, ya había investigado sobre currency manager, e incluso tenia ejemplos, pero investigando un poco mas me encontré con una consulta:

Código (mysql) [Seleccionar]

select id_empleado, (select count(*) from empleado where id_empleado < '1-9999-9999' ) + 1 as Indice
from empleado
where id_empleado = '1-9999-9999'


Esta Consulta lo que me da es el numero actual de x registro, y sé que existe una funcion en sql server (ROW_NUMBER) que en mysql nó, pero esta a mi parecer es mas genérica.Y la pude implementar de la siguiente manera:

Código (vbnet) [Seleccionar]

  Friend Function Obtener_Numero_Fila_Actual(ByVal Llave_Primaria As String, ByVal Nombre_Tabla As String, ByVal Valor_Llave As String) As Integer
        Dim ds As New DataSet
        Dim sqlinstruccion As String = "select (select COUNT(*) from " & Nombre_Tabla & " where " & Llave_Primaria & " < '" & Valor_Llave & "') + 1 as indice " & _
                                        "from " & Nombre_Tabla & " " & _
                                        "where " & Llave_Primaria & " = '" & Valor_Llave & "' "
        Llenar_Ds(ds, sqlinstruccion)
        Obtener_Numero_Fila_Actual = Convert.ToInt32(ds.Tables(0).Rows(0)(0).ToString())
    End Function

Friend Function Obtener_Total_Filas(ByVal Nombre_Tabla As String) As Integer
        Dim ds As New DataSet
        Dim sqlinstruccion As String = "select COUNT(*) from " & Nombre_Tabla & ""

        Llenar_Ds(ds, sqlinstruccion)

        Obtener_Total_Filas = Convert.ToInt32(ds.Tables(0).Rows(0)(0).ToString())
    End Function



Para asi llegar a esto:
Código (vbnet) [Seleccionar]

lblposicion.Text = Obtener_Numero_Fila_Actual("id_empleado", "empleado", txtid_empleado.Text).ToString() & " de " & Obtener_Total_Filas("empleado").ToString()



Y ahora si me logre este efecto: 1 de 10

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ChavalChavito

en el procedure (prc) ingresas la variable d cadena d los textbox q vas leyendo(todo esto en el evento dl mouse) y vas haciendo los select filtrado x la variable