none
boton anterio, primero, siguiente y ultimo en asp con acceso a datos RRS feed

  • Pregunta

  • Buen día,

    tengo una pantalla con 5 texbox y cuatro botones para navegar por los registros, en asp con visual basic, mi problema es que para los botones siguiente y anterior no me funciona, deseo saber como puedo identificar en que registro del dataset se encuentra el registro para poder asignar el siguiente o el anterior.

    el codigo que tengo es el siguiente:


    tion

     

    Explicit On

     

    Imports

     

    System.Data

    Imports

     

    System.Data.OleDb

    Partial

     

    Class _Default

     

    Inherits System.Web.UI.Page

     

    Private objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\datosaspnet\clientes.mdb")

     

    Private i As Integer

     

    Private da As New OleDbDataAdapter("SELECT * FROM tClientes;", objConn)

     

    Private ds As DataSet = New DataSet()

     

    Private dt As DataTable

     

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    da.Fill(ds,

    "tClientes")

    carga()

    objConn.Close()

     

    End Sub

     

    Sub carga()

    TextBox1.Text = ds.Tables(

    "tClientes").Rows(i).Item("ID")

    TextBox2.Text = ds.Tables(

    "tClientes").Rows(i).Item("Nombre")

    TextBox3.Text = ds.Tables(

    "tClientes").Rows(i).Item("Apellido")

    TextBox4.Text = ds.Tables(

    "tClientes").Rows(i).Item("Pais")

    TextBox5.Text = ds.Tables(

    "tClientes").Rows(i).Item("Ciudad")

     

    End Sub

     

    Protected Sub cmdpri_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdpri.Click

    objConn.Open()

    i = 0

    carga()

    objConn.Close()

     

    End Sub

     

    Protected Sub cmdAnt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAnt.Click

    objConn.Open()

     

    If i <> 0 Then

    i -= 1

     

    End If

    carga()

    objConn.Close()

     

    End Sub

     

    Protected Sub cmdSig_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSig.Click

    objConn.Open()

    i += 1

    carga()

    objConn.Close()

     

    End Sub

     

    Protected Sub cmdUlt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUlt.Click

    objConn.Open()

    i = ds.Tables(

    "tClientes").Rows.Count - 1

    carga()

    objConn.Close()

     

    End Sub

    End

     

    Class

    martes, 16 de marzo de 2010 14:52

Respuestas

  • Gracias a todos por la colaboración, el tema es que en asp las variables se manejan diferente, y para que al refrezcar la pantalla no me inicialice la variable nuevamente, se puede guardar en un viewstate para utilizarlo nuevamente, por tanto el codigo en los botones siguiente y anterior quedo asi, envio todo el codigo esta al final:

    Option Explicit On
    
    
    Imports System.Data
    Imports System.Data.OleDb
    
    Partial Class _Default
        Inherits System.Web.UI.Page
        Private objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\datosaspnet\clientes.mdb")
        Private i As Integer
    
        Private da As New OleDbDataAdapter("SELECT * FROM tClientes;", objConn)
        Private ds As DataSet = New DataSet()
        Private dt As DataTable
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            da.Fill(ds, "tClientes")
            i = 0
            carga()
            objConn.Close()
    
        End Sub
        Sub carga()
            i = ViewState("ia")
            Dim row As DataRow = ds.Tables("tClientes").Rows(i)
    
            TextBox1.Text = CStr(row("ID"))
            TextBox2.Text = CStr(row("Nombre"))
            TextBox3.Text = CStr(row("Apellido"))
            TextBox4.Text = CStr(row("Pais"))
            TextBox5.Text = CStr(row("Ciudad"))
        End Sub
    
        Protected Sub cmdpri_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdpri.Click
            objConn.Open()
            i = 0
            ViewState("ia") = i
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdAnt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAnt.Click
            objConn.Open()
            If i <> 0 Then
                i -= 1
                ViewState("ia") = i
            End If
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdSig_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSig.Click
            objConn.Open()
            If i < ds.Tables("tClientes").Rows.Count - 1 Then
                i += 1
                ViewState("ia") = i
                carga()
            End If
            objConn.Close()
        End Sub
    
        Protected Sub cmdUlt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUlt.Click
            objConn.Open()
            i = ds.Tables("tClientes").Rows.Count - 1
            ViewState("ia") = i
            carga()
            objConn.Close()
        End Sub
    End Class
    • Marcado como respuesta renzo palacios martes, 16 de marzo de 2010 22:35
    martes, 16 de marzo de 2010 22:32

Todas las respuestas

  • hola

    algo que podrias ahcer es editar el post y pegar el codigo con algo de mas identacion, asi se peude analziar mejor

    mas alla de esto, no noto ningun problema en el codigo, se podria optimizar un poco, pero no veo problemas

    por ahi podrias usar algo como esto

    Sub carga()

        Dim row As DataRow = ds.Tables("tClientes").Rows(i)

        TextBox1.Text = CStr(row("ID"))
        TextBox2.Text = CStr(row("Nombre"))
        TextBox3.Text = CStr(row("Apellido"))
        TextBox4.Text = CStr(row("Pais"))
        TextBox5.Text = CStr(row("Ciudad"))

    End Sub


    Nota, como solo cargas una tabla, porque en lugar de un dataset, no suas un datatable, es mas facil de usar cuando la tabla es solo una


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 16 de marzo de 2010 16:32
  • Saludo en este link te presenta las dos forma 





    nota:si esta informacion te fue util marcala como correcta.
    martes, 16 de marzo de 2010 18:06
  • Leandro,

    Gracias por tu colaboración, lo que sucede es que al parecer cada ves que le tecleo el boton de siguiente la variable i esta quedando en 0 y no se porque, mi codigo identado es el siguiente con la modificación de tu colaboración pero hace lo mismo:

    Option Explicit On
    
    
    Imports System.Data
    Imports System.Data.OleDb
    
    Partial Class _Default
        Inherits System.Web.UI.Page
        Private objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\datosaspnet\clientes.mdb")
        Public i As Integer
        Private da As New OleDbDataAdapter("SELECT * FROM tClientes;", objConn)
        Private ds As DataSet = New DataSet()
        Private dt As DataTable
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            da.Fill(ds, "tClientes")
            carga()
            objConn.Close()
        End Sub
        Sub carga()
            Dim row As DataRow = ds.Tables("tClientes").Rows(i)
    
            TextBox1.Text = CStr(row("ID"))
            TextBox2.Text = CStr(row("Nombre"))
            TextBox3.Text = CStr(row("Apellido"))
            TextBox4.Text = CStr(row("Pais"))
            TextBox5.Text = CStr(row("Ciudad"))
        End Sub
    
        Protected Sub cmdpri_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdpri.Click
            objConn.Open()
            i = 0
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdAnt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAnt.Click
            objConn.Open()
            If i <> 0 Then
                i -= 1
            End If
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdSig_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSig.Click
            objConn.Open()
            i += 1
            carga()
            objConn.Close()
        End Sub
    
        Protected Sub cmdUlt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUlt.Click
            objConn.Open()
            i = ds.Tables("tClientes").Rows.Count - 1
            carga()
            objConn.Close()
        End Sub
    End Class
    

     

     

    martes, 16 de marzo de 2010 21:11
  • Emanuel,

    Gracias por tu colaboración, pero esto funciona con winform no con asp.
    • Marcado como respuesta renzo palacios martes, 16 de marzo de 2010 22:27
    • Desmarcado como respuesta renzo palacios martes, 16 de marzo de 2010 22:27
    martes, 16 de marzo de 2010 21:12
  • Gracias a todos por la colaboración, el tema es que en asp las variables se manejan diferente, y para que al refrezcar la pantalla no me inicialice la variable nuevamente, se puede guardar en un viewstate para utilizarlo nuevamente, por tanto el codigo en los botones siguiente y anterior quedo asi, envio todo el codigo esta al final:

    Option Explicit On
    
    
    Imports System.Data
    Imports System.Data.OleDb
    
    Partial Class _Default
        Inherits System.Web.UI.Page
        Private objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\datosaspnet\clientes.mdb")
        Private i As Integer
    
        Private da As New OleDbDataAdapter("SELECT * FROM tClientes;", objConn)
        Private ds As DataSet = New DataSet()
        Private dt As DataTable
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            da.Fill(ds, "tClientes")
            i = 0
            carga()
            objConn.Close()
    
        End Sub
        Sub carga()
            i = ViewState("ia")
            Dim row As DataRow = ds.Tables("tClientes").Rows(i)
    
            TextBox1.Text = CStr(row("ID"))
            TextBox2.Text = CStr(row("Nombre"))
            TextBox3.Text = CStr(row("Apellido"))
            TextBox4.Text = CStr(row("Pais"))
            TextBox5.Text = CStr(row("Ciudad"))
        End Sub
    
        Protected Sub cmdpri_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdpri.Click
            objConn.Open()
            i = 0
            ViewState("ia") = i
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdAnt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdAnt.Click
            objConn.Open()
            If i <> 0 Then
                i -= 1
                ViewState("ia") = i
            End If
            carga()
            objConn.Close()
        End Sub
        Protected Sub cmdSig_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSig.Click
            objConn.Open()
            If i < ds.Tables("tClientes").Rows.Count - 1 Then
                i += 1
                ViewState("ia") = i
                carga()
            End If
            objConn.Close()
        End Sub
    
        Protected Sub cmdUlt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUlt.Click
            objConn.Open()
            i = ds.Tables("tClientes").Rows.Count - 1
            ViewState("ia") = i
            carga()
            objConn.Close()
        End Sub
    End Class
    • Marcado como respuesta renzo palacios martes, 16 de marzo de 2010 22:35
    martes, 16 de marzo de 2010 22:32