elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:08  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  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 883 veces)
Lecram

Desconectado Desconectado

Mensajes: 15


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

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


Desconectado Desconectado

Mensajes: 1.226


Diviérte crackeando, que para eso estamos!


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

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 »

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


Desconectado Desconectado

Mensajes: 1.226


Diviérte crackeando, que para eso estamos!


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

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 »

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


Desconectado Desconectado

Mensajes: 1.226


Diviérte crackeando, que para eso estamos!


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

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
exploits para microsoft Access 2000
Bugs y Exploits
netbios07 0 1,193 Último mensaje 7 Mayo 2007, 18:41
por netbios07
Microsoft Office (access) en LInux
GNU/Linux
EvilGoblin 7 2,497 Último mensaje 12 Octubre 2008, 17:21
por EvilGoblin
What? Error incomprensible en Microsoft Access 2003? xD
Dudas Generales
Frikimaster 1 329 Último mensaje 16 Diciembre 2008, 23:37
por peib0l
Microsoft Access SnapView.ocx remote exploit (Solucionado)
Bugs y Exploits
EvilGoblin 3 3,822 Último mensaje 21 Enero 2009, 21:33
por berz3k
Convertir de Microsoft Access a OpenOffice Base
Software
Charman 0 2,198 Último mensaje 25 Marzo 2009, 11:03
por Charman
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines