Tabla de datos temporal

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

1 Respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas