Hola amigos, quisiera que me ayuden con la siguiente duda. Como podría hacer para crear una tabla de datos temporal, sin necesidad de grabarla en la base de datos, solo en la memoria del computador. Tengo una aplicación que trabaja con excel, en algunos casos excel se queda activado en la memoria y al tratar de abrir otro archivo se cuelga excel y no abre, tengo que presionar ctrl alt del para terminar excel y volver a abrir el archivo.
Gracias anticipadamente por sus respuestas. www.warinet.com.pe
No existen tablas en memoria(sin que residan en el disco duro). Lo que hay son arreglos Private sCategorias(10) o Private sCategorias(10,5) También puedes crear tipos de datos definidos por el usuario y luego manejarlos como un arreglo, usando la clausula Type Necesariamente debes declarar tu tipo de dato y luego tu variable en un módulo global para que pueda ser reconocido en el proyecto. 'En un módulo llamado Module1.bas Public Type gCategoria Codigo As Integer Descripcion As String Tipo As Integer End Type Public gCatX(10) As gCategoria 'En cualquier formulario asignas o lees su contenido Private Sub Form_Load() gCatX(1).Codigo = 100 gCatX(1).Descripcion = "Automóviles" gCatX(1).Tipo = 12 gCatX(2).Codigo = 231 gCatX(2).Descripcion = "Papelería" gCatX(2).Tipo = 94 End Sub Una forma de manejar una tabla temporal es crear una base de datos solo con definiciones de tablas temporales y crearla y eliminarla al ejecutar el programa. Por ejemplo: Creas una tabla(digamos que en Access) que se llame BaseTemporal.mdb y que se encuentra en tu directorio raíz de tu sistema. En ella se encuentran las tablas temporales Temporal01 y Temporal02. En el proceso donde abres tu base de datos(o hacer uno para abrirla) colocar el siguiente código: 'Copiaremos la base temporal a otra Base (para que la original este disponible para cuantas sesiones en red se inicien para el sistema) con otro nombre en el directorio \BdTemporal 'Calcula número temporal. Randomize Do sSesión = Int(99999 * Rnd + 1) 'Elige un número entre 1 y 99999 sTempDestino = App.Path & "\BdTemporal\Tem" & Format(sSesión, "00000") & ".mdb" sYaExiste = Dir(sTempDestino) If sYaExiste = "" Then 'Si ya existe una base de datos con ese número, calcula otro. Exit Do End If Loop 'Crea temporal con el consecutivo calculado. On Error GoTo TemporalSalir sTempOrigen = glCurDir & "\BaseTemporal.mdb" sTempDestino = glCurDir & "\BdTemporal\Tem" & Format(sSesión, "00000") & ".mdb" sSwError = False FileCopy sTempOrigen, sTempDestino If sSwError Then End End If glTEM = sTempDestino 'Guarda el path de la base de datos temporal. 'Abre base temporal. Set BdTem = OpenDatabase(glTEM) 'glTEM podría ser "c:\MiSistema\BdTemporal\Tem20581.mdb" If sSwError Then End End If Set rsTbTemporal01 = BdTem.OpenRecordset("Temporal01", dbOpenTable) With rsTbTemporal01 .Index = "PrimaryKey" .LockEdits = False End With Set rsTbTemporal02 = BdTem.OpenRecordset("Temporal02", dbOpenTable) With rsTbTemporal02 .Index = "PrimaryKey" .LockEdits = False End With Al finalizar el usuario la ejecución del sistema, cierras las tablas y la base. RsTbTemporal01. Close RsTbTemporal02. Close BdTem. Close Eliminas la base de datos para que no se acumulen y puesto que es temporal, ya no es necesaria. Kill glTEM Si tienes alguna duda dímelo