Como referirme a una columna de una tabla de access en VBA

Soy nuevo en VBA y conseguí hacer esto en excel:

Do While ActiveCell.Value <> ""
  If ActiveCell = 0 Then
    ActiveCell.EntireRow.Delete
    ActiveCell.Offset(-1, 0).Select
  End If
  ActiveCell.Offset(1, 0).Select
Loop

Quiero hacer algo similar para una tabla de access. Es decir, usar un Do While ActiveCell.Value <> "" pero no para eliminar el registro (la fila) sino para actualizar un campo dependiendo de cierta condición.

1 Respuesta

Respuesta
2

En Access debes usar

docmd.runsql"update tablaX set campoB=....where criterio. Por ejemplo

Docmd.runsql"update clientes set cliente=""pepe"" where país="Alemania""

O sea, actualiza el campo cliente de la tabla Clientes a Pepe en aquellos registros cuyo país sea Alemania"

En caso de eliminar

docmd.runsql"delete * from clientes where cliente=""Javier"""

O sea, borra todos aquellos registros de la tabla cliente cuyo cliente se llame Javier.

Muchas gracias por su respuesta pero era un poco más complicado que eso:

Debía evaluar el campo Auxiliar del registro 1 y dependiendo de lo que dijera se actualizaría el registro 2. Luego lo mismo para el registro 3 pero dependiendo del registro 2.

Para solucionarlo tuve que recurrir a (una consulta de unión, una consulta de creación de tabla y dos consultas de actualización) x2 (pares e impares).

Dejo por sentado que no sé la estructura de tu tabla, ni el criterio que usas para determinar lo del auxiliar. Pero te pongo un ejemplo de lo que yo haría.

Como puedes ver en la imagen tengo varios cuadros de texto de NombreContacto vacíos. En el botón le pongo

DoCmd.GoToRecord , , acFirst
DoCmd.SetWarnings False
Dim i As Integer
For i = 1 To Form.Recordset.RecordCount
If Not IsNull([NombreContacto]) And IsNull(DLookup("nombrecontacto", "clientes", "Idloquesea=(" & Me.IdLoquesea & ")+1")) Then
DoCmd.RunSQL "update clientes set Nombrecontacto=""pepe"" where idloquesea=(" & Me.IdLoquesea & ") + 1"
End If
DoCmd.GoToRecord , , acNext
Next
DoCmd. GoToRecord,, acFirst

Me explico. Vete al primer registro.

No muestre avisos

Que vaya recorriendo todos los registros del formulario y en aquellos registros en que:

Si nombre contacto del registro actual no es nulo, pero si el siguiente que en el vacío ponga Pepe. Así hasta el final y que vuelva al primer registro. Y me queda

Como puedes ver, en los vacíos me ha puesto Pepe, los demás no los ha tocado.

Te digo esto porque no es necesario hacer tantas consultas, simplemente jugando con los valores y los criterios. En tu caso poniendo el criterio del auxiliar 1, y que te busque o no te busque en determinados registros, etc.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas