2 ago 2011

Do While / Loop

Este código permite el acceso a una tabla (o consulta de selección) de forma secuencial de modo que pase por todos los registros para la realización de búsquedas, actualizaciones, etc.

El ejemplo siguiente accede a dos tablas en las que, comparando el campo NIF añade la fecha de nacimiento de la persona incluida en las tablas.

**********************************************************
Dim rs1, rs2 As DAO.Recordset

Set rs1 = CurrentDb.OpenRecordset("Personal")
Set rs2 = CurrentDb.OpenRecordset("FelizCumpleannos")

rs1.MoveFirst
Do While Not rs1.EOF()
     rs2.MoveFirst
     Do While Not rs2.EOF()
          If rs1!NIF = rs2!NIF Then
               rs2!FNac=rs1!FNac
               rs2.MoveLast
          End If
          rs2.MoveNext
     Loop
     rs1.MoveNext
Loop
rs1.Close
rs2.Close
**********************************************************


El siguiente ejemplo accede a dos tablas, pero esta vez para incluir un registro nuevo en la segunda tabla por cada registro existente en la primera tabla.

**********************************************************
Dim rs1, rs2 As DAO.Recordset

Set rs1 = CurrentDb.OpenRecordset("Personal")
Set rs2 = CurrentDb.OpenRecordset("FelizNavidad")

rs1.MoveFirst
Do While Not rs1.EOF()
     With rs2
          .Add
          !Nombre=rs1!Nombre
          !Apellidos=rs1!Apellidos
          !Direccion=rs1!Direccion
          !CP=rs1!CP
          !Municipio=rs1!Municipio
          !Provincia=rs1!Provincia
          .Update
     End With
     rs1.MoveNext
Loop
rs1.Close
rs2.Close
**********************************************************