En Access 2007 no puedo ver tablas ejecutando VBa

Cuando lanzo una ejecución de VBa paso a paso, en Access 2007, no me permite ir a las tablas para ver su contenido y asegurarme así que las instrucciones van realizando lo que yo quiero.
¿Puede alguien decirme el motivo?
En la versión 2003 siempre he trabajado así y no tenía problemas, pero ahora me han obligado a cambiar y me encuentro ese problema.

2 respuestas

Respuesta
1
Te sugeriría que, para evitar eso, dividieras tu aplicación separando las tablas en otra bdd (que es como deberían diseñarse todas las aplicaciones). De esa forma puedes ejecutar el código paso a paso por un lado y ver los resultados de las tablas en otro Access.
El caso es que los datos compartidos ya están en bases de datos separadas.
El problema es cuando tengo que procesar la información y necesito ir generando tablas de trabajo o temporales.
Es en esas tablas temporales dónde necesito ir viendo el contenido para asegurarme que va bien el proceso, o bien para revisar el código si se ha detectado algún error.
Un saludo
Existe un truco para eso: crea una bdd temporal y coloca la tabla dentro de ella.
SELECT patatim, patatam INTO tablatemporal IN 'C:\unacarpeta\otracarpeta\bddTmp.bdd' FROM...
Obviamente primero deberás crear esa bdd temporal. Yo la creo con este código (le pongo como nombre el momento yyyymmddhhnnss así me aseguro de que sea única):
Public Function creaBDDAux()
' Esta función crea una base de datos temporal en un directorio llamado Tmp
' dependiente del directorio dónde se ejecute la aplicación
Dim dbsLoc As DAO.Database, wksLoc As DAO.Workspace
Dim strBaseDatos As String
Dim frmActFrm As Form
Set frmActFrm = Screen.ActiveForm
Set wksLoc = Workspaces(0)
Dim strPath As String
strPath = CurrentProject.Path & "\Tmp"
If Len(Dir(strPath, vbDirectory)) = 0 Then
MkDir strPath
End If
strBaseDatos = strPath & "\" & Format(Now(), "yyyymmddhhnnss") & ".mdb"
Set dbsLoc = wksLoc.CreateDatabase(strBaseDatos, dbLangSpanish)
If Not dbsLoc Is Nothing Then
dbsLoc.Close
Set dbsLoc = Nothing
End If
Set wksLoc = Nothing
frmActFrm!bddTmp = strBaseDatos
End Function
Observa que la función asigna, a un control del formulario que la ha llamado, el nombre de la bdd.
Cuando quieres poner información en la bdd temporal, simplemente cambias la parte e INTO .. IN para que refleje esa bdd. Una vez creada la tabla, la vinculas a tu bdd (DoCmd. TransferDatabase...) y ya la puedes utilizar como si fuera local.
Esta técnica permite varias cosas:
- Controlar los datos de la tabla de destino sin detener el código actual
- Evitar que la bdd crezca de forma innecesaria
Solo debes tener en cuenta eliminar la bdd una vez has dejado de trabajar con ella. Yo utilizo este código:
Public Function DeleteBDDAux()
' OJO: Referenciar Microsoft Scripting Runtime
Dim fsoObject As Scripting.FileSystemObject ' Object por si no funcionase
Set fsoObject = CreateObject("Scripting.FileSystemObject")
If Trim(Nz(Screen.ActiveForm.Controls("bddTmp"), "")) <> "" Then
If Len(Dir(Screen.ActiveForm.Controls("bddTmp"), vbArchive)) > 0 Then
fsoObject.DeleteFile Screen.ActiveForm.Controls("bddTmp")
End If
End If
End Function
A ver si te sirve
Xavi
Respuesta
-1
Disculpa pero soy pobre y de familia numerosa y yo trabajo con access 2002, el 2007 no lo conozco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas