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 de xavi -ae soft-
1
1
xavi -ae soft-, 20años de experiencia en programacion Access a razon de 10 horas...
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