Mostrando entradas con la etiqueta Consulta. Mostrar todas las entradas
Mostrando entradas con la etiqueta Consulta. Mostrar todas las entradas

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
**********************************************************

Existencia de tablas, consultas, ...

El siguiente código VBA es para realizar la comprobación de existencia de una tabla, consulta o cualquier otro objeto para trabajar con él con posterioridad. Es decir, saber de antemano si existe, por ejemplo, una tabla antes de realizar un acceso a la misma y que se produzca un error en caso de no existir.
Sólo quedaría incluir el nombre de la tabla entre las comillas situadas entre paréntesis.

**********************************************************
Dim tb As DAO.TableDef


On Error Resume Next

Set tb = CurrentDb.TableDefs("")
tbExists = Err.Number = 0
If tbExists Then
     MsgBox "Existe"
Else
     MsgBox "No existe"
End If
**********************************************************