Tabla Temporal

Mi pregunta es sencilla pero no se como hacerlo. Necesito crear una tabla temporal y saber como manejarla.

2 respuestas

Respuesta
1
No das muchos detalles sobre la pregunta, pero bueno, vamos a ver que tal va :
Aquí tienes un código de ejemplo en el que crea una base de datos Access ( no se si será el caso) y se le añade una tabla con sus correspondientes columnas ( columns. Append "NombreColumna", TipodelCampo
Una vez hecho esto se le añade un registro.
Dim catAccess as new ADOX.Catalog
Dim tblValExp as new ADOX.Table
Dim cnnAccess as new ADODB.Connection
Dim rstValExp as new ADODB.Recordset
catAccess.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\testbed\test1.mdb;Jet OLEDB:Engine Type=4;"
catAccess.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\testbed\test1.mdb"
With tblValExp
.Name = "tblValExp1"
. Columns. Append "Stock Name", adVarWChar, 40
. Columns. Append "Stock Symbol", adVarWChar, 6
. Columns. Append "Stock Price", adSingle
. Columns. Append "Est date", adVarWChar, 10
. Columns. Append "Est Year", adVarWChar, 6
. Columns. Append "Price High(0)", adSingle
. Columns. Append "Price High(1)", adSingle
. Columns. Append "Price High(2)", adSingle
. Columns. Append "Price High(3)", adSingle
. Columns. Append "Price High(4)", adSingle
. Columns. Append "Price High(5)", adSingle
End With
catAccess.Tables.Append tblValExp
set tblValExp = nothing
set catAccess = nothing
cnnAccess.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\testbed\test1.mdb;Persist Security Info=false"
rstValExp.Open "SELECT * FROM tblValExp1", cnnAccess, adOpenKeyset, adLockOptimistic
rstValExp.AddNew
rstValExp.Fields(0).Value = "Name"
rstValExp.Fields(1).Value = "Symbol"
rstValExp.Fields(2).Value = 1.5
rstValExp.Fields(3).Value = Format(Now(), "dd/mm/yyyy")
rstValExp.Fields(4).Value = "2000"
rstValExp.Fields(5).Value = 1.5
rstValExp.Fields(6).Value = 1.5
rstValExp.Fields(7).Value = 1.5
rstValExp.Fields(8).Value = 1.5
rstValExp.Fields(9).Value = 1.5
rstValExp.Fields(10).Value = 1.5
rstValExp.Update
rstValExp.MoveFirst
set rstValExp = nothing
set cnnAccess = nothing
Espero que este código te sea de utilidad. Si te queda alguna duda o deseas hacer una pregunta mes concreta sobre el tema no dudes en hacerla.
Magne
Muchas Gracias por la respuesta.
Perdón por no haber dado los datos que necesitabas. Te comento que trabajo sobre un motor SQL, pero igual me guardo el código que me pasaste porque me puede ser de gran utilidad para el futuro.
1)Tendrías el código para SQL.
2)Hay alguna manera de manejar datos igual que una tabla (leerlos de forma ordenada según cierto criterio 'x' y acceder mediante punteros a algún registro especifico) sin tener que crear una tabla en el motor de base de datos. Probé con una matriz pero la lectura es un poco lenta porque tengo que leer linea por linea para ver cual me sirve.
Nuevamente gracias.
Lo siento, pero hasta aquí te puedo ayudar. Nunca he trabajado con SQL (desde Visual Basic). He intentado buscar una respuesta satisfactoria, pero...
Lo único que he podido ver es que la conexión se hace de forma parecida, simplemente cambiando el provider al de SQL.
Puedes probar de hacer los executes con las instrucciones SQL de Create Table i demás...
No puedo garantizarte que funcione ya que no lo puedo probar.
Si encuentras la solución ya me la comentarás, que siempre se aprenden cosas nuevas.
Magne
Igualmente gracias por ocuparte.
Te cuento que me pasaron algunas respuestas y te envío una:
Existen dos tipos de tablas temporarias en Sql
La de usuario que se define de la siguiente manera
Las locales que se definen así #nombre tabla esta es vista solo por el usuarios que la crea y es eliminada cuando el usuarios cierra la sesión o conexión
Las globales que las veen todos los usuarios y se eliminan cuando todos los usuarios que la usen se desconexten.
Para crearlas usa procedimientos almacenados.
Así:
CREATE PROCEDURE [Crea_Tablas]
AS
CREATE TABLE #Tab_Operaciones
(Correlativo Real,
Año INT,
Periodo INT,
Maquina Char(10),
Boleta INT,
Val_Ope INT,
Efe_Vueltos INT,
Act_FecAud DATETIME,
Act_HorAud DATETIME,
Fecha_Ingreso DATETIME,
Act_NumAud INT,
Ruta INT)
CREATE INDEX IndTab_Operaciones0 ON #Tab_Operaciones (Correlativo)
para activar este procedimiento usa cobjetos command desde visual, asi.
Set Comando = New Command
With Comando
.ActiveConnection = B_Sql
.CommandText = "Crea_Tablas"
.CommandType = adCmdStoredProc
End With
Comando.Execute
Set Comando = Nothing
(Espero te sirva para un futuro)
Respuesta
1
Tienes que saber dos cosas:
1) Como ejecutar sentencias sql (para selects, create, etc.) desde VB.
2) Y como crear una tabla temporal en SQL (esto depende del motor).
Así que decime que motor (MS, MySQL, etc.) utilizas y que es lo que realmente no sabes.
Hola:
Gracias por la respuesta.
Te comento que ya se com ejecutar un query desde VB y que el motor de la Base de Datos es un SQL.
Nuevamente gracias.
El comando en SQL para crear una tabla temporal (en mi ejemplo llamada TemTable) es el sig:
create table ##TemTable (columnas...)
Espero te sirva de ayuda, y no te olvides de ponerle puntaje.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas