elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Bucles y arrays en Microsoft Access (VBA)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bucles y arrays en Microsoft Access (VBA)  (Leído 7,404 veces)
Lecram

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Bucles y arrays en Microsoft Access (VBA)
« en: 27 Enero 2012, 11:05 am »

Buenas, estoy haciendo un pequeño módulo en access 2001 (xD!) el cual va atado a un formulario y a una tabla. Tengo 4 campos: DESDE, HASTA, DIES y MESOS y cuando asigno un valor a uno de estos campos del formulario, este tambien se asigna a la tabla. Todo bien hasta ahí, eso ya lo hace, pero necesito que el valor de los campos se asignen a todos los registros de la tabla, no solo a 1, por lo tanto necesito un bucle y alomejor un array, pero no tengo ni idea de VB y no me aclaro demasiado...

¿Podría echarme un cable alguien?

Este es mi código:

Function CambioValores()

'Definicion de variables
Dim base As DAO.Database
Dim tabla As DAO.Recordset
Dim DESDE As Date
Dim HASTA As Date
Dim DIES As Long
Dim MESOS As Integer
Dim LIMITE As Integer
Dim CONTADOR As Integer
CONTADOR = 0

Set base = CurrentDb 'Asignamos la Base de datos actual a la variable base
Set tabla = base.OpenRecordset("COPIANOMINA") 'Guardamos en la variable tabla toda la tabla COPIANOMINA
LIMITE = tabla.Fields.Count

Do While CONTADOR < LIMITE

    DESDE = tabla(2) 'Asignamos que DESDE hace referencia al campo 2 de tabla
    HASTA = tabla(3)
    DIES = tabla(4)
    MESOS = tabla(40)
    DESDE = Form_DESDEHASTA.DESDE 'Asignamos a la variable DESDE el valor del campo de nuestro formulario
    HASTA = Form_DESDEHASTA.HASTA
    DIES = Form_DESDEHASTA.DIES
    MESOS = Form_DESDEHASTA.MESOS
    Form_DESDEHASTA.DIES = DateDiff("d", HASTA, DESDE) 'Cojo el valor en dias entre las fechas HASTA y DESDE

    Form_DESDEHASTA.MESOS = Month(DESDE) 'Asigno a la variable MESOS el valor del mes contenido por DESDE

    If Form_DESDEHASTA.DIES < 0 Then
        Form_DESDEHASTA.DIES = Form_DESDEHASTA.DIES * (-1)
    End If

    CONTADOR = CONTADOR + 1
   
Loop

End Function


Como se ve... lo que no se es cómo cambiar de registro por cada iteración del bucle...

Un saludo.


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Bucles y arrays en Microsoft Access (VBA)
« Respuesta #1 en: 27 Enero 2012, 21:20 pm »

Sabias que un Recordset es un Objeto.. no?

Como objeto tiene propiedades y metodos.

Te recomiendo revisar la ayuda de DAO que viene con la MSDN del VS 6.

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Lecram

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Bucles y arrays en Microsoft Access (VBA)
« Respuesta #2 en: 30 Enero 2012, 10:45 am »

Se que Recordset es un objeto y que tabla es una instancia suya, tambien utilizo sus métodos en la variable LIMITE. Obviamente hice bastantes pruebas antes de postear aqui, pero sin resultado.

El método MoveNext en principio supongo que sirve para lo que quiero, pero cuando justo antes del final del bucle pongo tabla.MoveNext, me da un error diciéndome que "No hay ningún registro activo" y me pone el foco aqui: DESDE = tabla(2)

¿Puede decirme alguien por qué me sale este error?
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Bucles y arrays en Microsoft Access (VBA)
« Respuesta #3 en: 30 Enero 2012, 18:31 pm »

Usa un bucle como el siguiente:

Código:

tabla.MoveFirst
Do while not tabla.EOF
    [instrucciones]
     tabla.MoveNext
Loop

Aunque no es recomendado usar MoveFirst, en este caso te servirá...  :P

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Lecram

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Bucles y arrays en Microsoft Access (VBA)
« Respuesta #4 en: 31 Enero 2012, 11:47 am »

Gracias por tu respuesta.

Haciéndolo tal y como dices ya no me aparece el error, de todos modos los cambios siguen aplicándose sólo al primer registro de la tabla y no a todos... sigue sin cambiar de registro por cada iteración de bucle.
¿Cómo puedo hacer para que me vaya cambiándo?

Un saludo.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Bucles y arrays en Microsoft Access (VBA)
« Respuesta #5 en: 31 Enero 2012, 17:50 pm »

Debes abrir el Recordset como Dynaset y ademas guardar los cambios ANTES de cambiar de registro.

Te vuelvo a repetir: revisa la ayuda de DAO de la MSDN que viene con Visual Studio 6

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Bucles.
Programación Visual Basic
mdg 4 2,599 Último mensaje 28 Agosto 2007, 15:54 pm
por elmaro
Duda con arrays dentro de arrays « 1 2 »
PHP
Servia 11 7,238 Último mensaje 10 Marzo 2011, 09:04 am
por Servia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines