Actualizar tabla y compactar base al salir

Para actualizar una tabla existente (ARTÍCULOS), con otra nueva (NUEVOS), hago lo siguiente:
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM ARTICULOS"
DoCmd.RunSQL "INSERT INTO ARTICULOS SELECT * FROM NUEVOS"
DoCmd.RunSQL "DROP TABLE NUEVOS"
¿Cómo puedo comprobar la existencia de la tabla NUEVOS antes de eliminar todo el contendió de ARTÍCULOS?
¿Qué más controles puedo poner para asegurarme que no voy a perder información en caso de haber algún problema durante la actualización?
Y, si no es mucho pedir, ¿Cómo compactar la base de datos cada vez que se cierre la aplicación, o pulsando algún botón?
Muchas gracias por adelantado

1 Respuesta

Respuesta
1
Creo que estás usando Access97, te recomiendo que migres a Access 2000 o Access 2002, porque estas versiones autocompactan la base de datos cada vez que la cierran.
Suerte.
Exacto, estoy usando Access 97.
Intentaré conseguir el 2000, pero esto es una empresa y la licencia cuesta dinero :).
Pero no me has respondido a la primera pregunta. ¿Cómo controlo la existencia de una tabla antes de borrarla?
En cuanto a compactar en Access97, ¿existe algún código para ello?
Saludos
=======================
Sub prueba()
Dim Lista_Tablas As TableDef
Dim rst as RecordSet
'para cada tabla en la lista de tablas
For Each Lista_Tablas In CurrentDb.TableDefs
'preguntamos su nombre, si es "Nuevos"
If Lista_Tablas.Name = "Nuevos" Then
'miramos si hay registros
set rst=currentdb.openrecordset("Nuevos")
rst.movelast
'Si no los hay
if rst.recordcount=0 then
'cerramos y salimos de la rutina
rst.close
exit sub
'si hay registros en "Nuevos"
else
'borramos articulos e insertamos los nuevos valores
DoCmd.RunSQL "DELETE * FROM ARTICULOS"
DoCmd.RunSQL "INSERT INTO ARTICULOS SELECT * FROM NUEVOS"
DoCmd.RunSQL "DROP TABLE NUEVOS"
end if
Exit For
End If
Next
End Sub
======================
Espero que lo puedas adaptar. Es solo un ejemplo. Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas