Curso Completo Base de datos

Botones Siguiente y Anterior en modulo de VB6.0

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Botones Siguiente y Anterior en modulo de VB6.0

    Buenas tardes señores.

    Recurro una vez mas a su gran experticia en la programacion en VB6.0

    Resulta que actualmente tengo un pequeño modulo el cual usa un combobox y un textbox. El Combobox carga campos que estan en una tabla en la base de datos que es de Access y al seleccionar alguno de los elementos inmediatamente se refleja en el TextBox el contenido de otro campo, todo esto funciona correctamente, el problema que tengo esque quiero implementar la misma funcion en dos botones uno que se llama Siguiente y otro que se llama Anterior.

    Agradecere muchisimo su ayuda.

    Les dejo el codigo fuente y una imagen del modulo:

    [ATTACH] 20 [/ATTACH]

    Codigo fuente utilizado para cargar los datos en el ComboBox:

    Private Sub Form_Load()

    Adodc1.RecordSource = "Select * FROM Ayuda order by Cod_Ayuda ASC"
    Adodc1.Refresh

    If Adodc1.Recordset.RecordCount = 0 Then

    MsgBox ("No hay datos almacenados")

    Exit Sub

    Else

    With Adodc1.Recordset
    If .BOF = False And .EOF = False Then

    .MoveFirst

    While Not .EOF

    Combo1.AddItem !Cod_Ayuda & " - " & !Nombre_Ayuda

    .MoveNext

    'Linea de codigo para que el primer elemento del combo aparezca seleccionado.
    Combo1.ListIndex = 0

    Wend
    End If
    End With
    End If

    Adodc1.Recordset.Close

    End Sub

    Codigo fuente utilizado para desplegar el contenido en el TextBox una vez seleccionado algun elemento del ComboBox:

    Private Sub Combo1_Click()

    Text1.Alignment = vbCenter

    If Combo1.Text = "" Then
    Exit Sub
    Else

    Adodc2.RecordSource = "Select * FROM Ayuda WHERE Cod_Ayuda = " & Val(Combo1.Text)
    Adodc2.Refresh

    With Adodc2.Recordset

    If .BOF = False And .EOF = False Then

    .MoveFirst

    While Not .EOF

    If !Cod_Ayuda = 1 Then

    Text1.Text = !Descripcion_Ayuda

    .MoveNext

    Else

    If !Cod_Ayuda = 2 Then

    Text1.Text = !Descripcion_Ayuda

    .MoveNext

    Else

    If !Cod_Ayuda = 3 Then

    Text1.Text = !Descripcion_Ayuda

    .MoveNext

    Else

    If !Cod_Ayuda = 4 Then

    Text1.Text = !Descripcion_Ayuda

    .MoveNext

    Else

    If !Cod_Ayuda = 5 Then

    Text1.Text = !Descripcion_Ayuda

    .MoveNext

    End If
    End If
    End If
    End If
    End If

    Wend

    End If

    End With

    Adodc2.Recordset.Close

    End If

    End Sub
    Archivos adjuntos
    Última edición por samiraxl; 02-09-2015, 10:00 PM.

  • #2
    Re: Botones Siguiente y Anterior en modulo de VB6.0

    Hola Samiraxl.
    He estado un rato tratando de leer tu código pero lo cierto es que ha resultado ser una experiencia complicadísima.
    Si lees las normas del foro, dicen bien claramente que el código que se publique ha de estar indentado y entre barras code, con lo que quedaría algo así:
    Código:
    'Codigo fuente utilizado para cargar los datos en el ComboBox:
    
    Private Sub Form_Load()
        
        Adodc1.RecordSource = "Select * FROM Ayuda order by Cod_Ayuda ASC"
        Adodc1.Refresh
        
        If Adodc1.Recordset.RecordCount = 0 Then
            MsgBox ("No hay datos almacenados")
            Exit Sub
        Else
            With Adodc1.Recordset
                If .BOF = False And .EOF = False Then
                    .MoveFirst
                    While Not .EOF
                        Combo1.AddItem !Cod_Ayuda & " - " & !Nombre_Ayuda
                        .MoveNext
                        'Linea de codigo para que el primer elemento del combo aparezca seleccionado.
                        Combo1.ListIndex = 0
                    Wend
                End If
            End With
        End If
        Adodc1.Recordset.Close
    End Sub
    
    'Codigo fuente utilizado para desplegar el contenido en el TextBox una vez seleccionado algun elemento del ComboBox:
    
    Private Sub Combo1_Click()
        Text1.Alignment = vbCenter
        If Combo1.Text = "" Then
            Exit Sub
        Else
            Adodc2.RecordSource = "Select * FROM Ayuda WHERE Cod_Ayuda = " & Val(Combo1.Text)
            Adodc2.Refresh
            With Adodc2.Recordset
                If .BOF = False And .EOF = False Then
                    .MoveFirst
                    While Not .EOF
                        If !Cod_Ayuda = 1 Then
                            Text1.Text = !Descripcion_Ayuda
                            .MoveNext
                        Else
                            If !Cod_Ayuda = 2 Then
                                Text1.Text = !Descripcion_Ayuda
                                .MoveNext
                            Else
                                If !Cod_Ayuda = 3 Then
                                    Text1.Text = !Descripcion_Ayuda
                                    .MoveNext
                                Else
                                    If !Cod_Ayuda = 4 Then
                                        Text1.Text = !Descripcion_Ayuda
                                        .MoveNext
                                    Else
                                        If !Cod_Ayuda = 5 Then
                                            Text1.Text = !Descripcion_Ayuda
                                            .MoveNext
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    Wend
                End If
            End With
            Adodc2.Recordset.Close
        End If
    End Sub
    Como verás, así es todo mucho más fácil.
    Te comento esto únicamente para que en el futuro pongas un poco más de atención, al tiempo que ayudarás a los demás a interpretar mejor tu código y, por lo tanto, seguramente que obtendrás más respuestas.
    Insisto en que no te lo tomes a mal. Mi idea es orientarte.
    Saludos.

    Comentario


    • #3
      Re: Botones Siguiente y Anterior en modulo de VB6.0

      Y tan lindo y prolijo que se ve el código cuando es debidamente identado como bien hizo Miguel. Muchas veces con solo tabular la respuesta salta sola, por otro lado tu codigo se puede factorizar mas.

      Código:
      ...
              With Adodc2.Recordset
                  If .BOF = False And .EOF = False Then
                      .MoveFirst
                      While Not .EOF
                         If !Cod_Ayuda >= 1 And !Cod_Ayuda <= 6 Then 
                              Text1.Text = !Descripcion_Ayuda
                              .MoveNext
                         End If.
                      Wend
                  End If
              End With
      ....
      Por lo demas no te puedo ayudar porque no uso Adodc. Saludos.
      --------------------------------
      Si eres agradecido, obtendrás más...

      YAcosta

      Comentario


      • #4
        Re: Botones Siguiente y Anterior en modulo de VB6.0

        Buenas noches.

        Hola Miguel, muchisimas gracias por tus consejos, acepto que cometi un error al postear de forma incorrecta el codigo fuente, creo que fue involuntario y en el futuro tendre mas cuidado.

        Hola YAcosta, gracias por tu ayuda tambien, solo tengo una duda: La porcion de codigo que me enviaste es un bloque independiente que puedo agregar en cada boton? O es un bloque de codigo que podria incluir dentro del codigo que pertenece al ComboBox? Es porque lo probe de forma independiente y no me funciono.

        Gracias.

        Comentario


        • #5
          Re: Botones Siguiente y Anterior en modulo de VB6.0

          He utilizado el codigo de YAcosta y lo estructure de esta forma pero no funciona:

          Código:
          Private Sub Command3_Click()
          
          Text1.Alignment = vbCenter
          
          If Combo1.Text = "" Then
              Exit Sub
          Else
          
          Adodc2.RecordSource = "Select * FROM Ayuda WHERE Cod_Ayuda = " & Val(Combo1.Text)
          Adodc2.Refresh
          
          With Adodc2.Recordset
          
              If .BOF = False And .EOF = False Then
                  .MoveFirst
                  While Not .EOF
                     If !Cod_Ayuda >= 1 And !Cod_Ayuda <= 6 Then
                          Text1.Text = !Descripcion_Ayuda
                          .MoveNext
                     End If
                  Wend
              End If
              
          End With
          
          Adodc2.Recordset.Close
          
          End If
          
          End Sub
          Adjunto tambien dos imagenes de como funciona el ComboBox al seleccionar alguno de sus elementos y como se refleja el texto en el TextBox para que quede un poco mas claro el funcionamiento, ya que es lo mismo que necesito para los botones Siguiente y Anterior:



          Archivos adjuntos

          Comentario


          • #6
            Re: Botones Siguiente y Anterior en modulo de VB6.0

            No no no amig@ samiraxl, no me entendiste. Al final de mi mensaje indique que no te podía ayudar porque no uso ese control, el Adodc que en este foro ya indicamos innumerables veces que no lo usen.

            El código que te publiqué es un extracto de tu mismo código pero factorizado (simplificado), no te estaba dando respuesta a tu inquietud, solo que gracias a la demostración de Miguel de como debes publicar es que salta a la vista eso que te propuse.

            Para que se entienda, sucede que en tu evaluación dentro del bloque With para el caso que !Cod_Ayuda sea 1, 2, 3, 4, 5 o 6 siempre haces lo mismo:
            Asignas a Text1.Text el valor de !Descripcion_Ayuda y luego haces .MoveNext, como no vi necesidad de escribir tanto código para un mismo resultado es que te propuse la simplificación.

            Espero no haber confundido. Saludos
            --------------------------------
            Si eres agradecido, obtendrás más...

            YAcosta

            Comentario


            • #7
              Re: Botones Siguiente y Anterior en modulo de VB6.0

              Buen dia YACosta, muchas gracias por tu aclaracion al respecto y fijate que prove tu fragmento de codigo y funciona excelente, tienes razon, no era necesario tanto codigo, al parecer tu logica es mejor que la mia, definitivamente jajaja.

              Solo queria pedirte tu ayuda con lo que anteriormente te solicite, si no es mediante el control ADODC, conoces alguna otra forma? Te agradeceria mucho que pudieras ayudarme.

              Saludos.

              Comentario


              • #8
                Re: Botones Siguiente y Anterior en modulo de VB6.0

                Buen dia queridos amigos.

                Podria por favor alguno de ustedes ayudarme?

                Gracias.

                Comentario


                • #9
                  Re: Botones Siguiente y Anterior en modulo de VB6.0

                  Originalmente escrito por samiraxl Ver mensaje
                  Buen dia YACosta, muchas gracias por tu aclaracion al respecto y fijate que prove tu fragmento de codigo y funciona excelente, tienes razon, no era necesario tanto codigo, al parecer tu logica es mejor que la mia, definitivamente jajaja.

                  Solo queria pedirte tu ayuda con lo que anteriormente te solicite, si no es mediante el control ADODC, conoces alguna otra forma? Te agradeceria mucho que pudieras ayudarme.

                  Saludos.
                  Supongo que te refieras a una ayuda sobre otra forma de conexionarte con la base de datos; la respuesta es ésta: Debes utilizar CÓDIGO DIRECTO con ADO. Sería muy prolijo darte aquí una respuesta más explícita, porque es imposible tratar todo el tema en un post; pero te paso un adjunto que puede resultarte de interés.
                  Archivos adjuntos
                  José María Movilla Cuadrado
                  ______________________
                  Normas del foro
                  www.foro.vb-mundo.com
                  www.vb-mundo.com

                  Comentario


                  • #10
                    Re: Botones Siguiente y Anterior en modulo de VB6.0

                    Muchas gracias Jose Maria, lo revisare y te comento despues.

                    Saludos.

                    Comentario


                    • #11
                      Re: Botones Siguiente y Anterior en modulo de VB6.0

                      Hola Jose Maria, logre entender el cofigo que me mandaste y ahora tengo claro como hacer la conexion por medio de codigo puro.

                      Pero lo que necesito es ayuda para lograr hacer por medio de los botonos Siguiente y Anterior lo que el hace el ComboBox en las imaganes del pequeño modulo que tengo en mi sistema.

                      Te agradeceria mucho si pudieras ayudarme.

                      Saludos.

                      Este es el codigo de busqueda en el ComboBox:

                      Código:
                      Private Sub Combo1_Click()
                      
                      Text1.Alignment = vbCenter
                      
                      If Combo1.Text = "" Then
                          Exit Sub
                      Else
                      
                      Adodc2.RecordSource = "Select * FROM Ayuda WHERE Cod_Ayuda = " & Val(Combo1.Text)
                      Adodc2.Refresh
                      
                      With Adodc2.Recordset
                             
                      If .BOF = False And .EOF = False Then
                              
                              .MoveFirst
                              
                              While Not .EOF
                                 
                                 If !Cod_Ayuda >= 1 And !Cod_Ayuda <= 6 Then
                                      
                                       Text1.Text = !Descripcion_Ayuda
                                      
                                      .MoveNext
                                 
                                 End If
                              Wend
                      End If
                             
                      End With
                      
                      Adodc2.Recordset.Close
                      
                      End If
                      
                      End Sub

                      Comentario


                      • #12
                        Re: Botones Siguiente y Anterior en modulo de VB6.0

                        Sigues con el ADODC.

                        Navegar con un botón Siguiente y Anterior se refiere (al menos eso es lo que entiendo quieres hacer) a avanzar o retroceder en un recordset y visualizar dicho registro en tus controles. Para ello tendrías que tener declarado tu recordset en las declaraciones del formulario para que tenga alcance. De esa forma en los botones usas el MoveNext y el MovePreview con las validaciones respectivas.

                        Sobre usar code puro quiza te pueda ayudar estos post que escribi hace un tiempo: Conectar VB6 con Base de datos. | VB6Firebird

                        Saludos
                        --------------------------------
                        Si eres agradecido, obtendrás más...

                        YAcosta

                        Comentario


                        • #13
                          Re: Botones Siguiente y Anterior en modulo de VB6.0

                          Hola YAcosta.

                          Efectivamente, eso es lo que necesito hacer.

                          Comentario


                          • #14
                            Re: Botones Siguiente y Anterior en modulo de VB6.0

                            Buen dia estimados amigos.

                            Espero que algiuen pueda ayudarme a traves de algun otro metido con lo que necesito hacer.

                            saludos cordiales.

                            Comentario


                            • #15
                              Re: Botones Siguiente y Anterior en modulo de VB6.0

                              Hola samiraxl, no sé si entendí bien, pero tal vez te sea de ayuda:

                              Código:
                              Private Sub cmdAnterior_Click()
                                  Dim i As Integer
                                  i = Me.Combo1.ListIndex
                                  If i > 0 Then
                                      Me.Combo1.ListIndex = i - 1
                                  End If
                              End Sub
                              
                              Private Sub cmdSiguiente_Click()
                                  Dim i As Integer
                                  i = Me.Combo1.ListIndex
                                  If i < Me.Combo1.ListCount - 1 Then
                                      Me.Combo1.ListIndex = i + 1
                                  End If
                              End Sub
                              Por otra parte, sería bueno que puedas estudiar el material que los colegas te dieron antes, será muy beneficioso para ti.
                              Saludos.

                              Comentario

                              Trabajando...
                              X