Discussione:
creare una tabella via codice solo in memoria
(troppo vecchio per rispondere)
Fanciullo
2008-11-02 16:07:26 UTC
Permalink
Salve sono Fanciullo,
access97

uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO

Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")

come mai la tabella mi viene creata fisicamente nel database
anche se non uso il codice:

CurrentDb().TableDefs.Append tblSMraggr ??

Come posso fare in modo che la tabella venga creata
solo in memoria?

grazie
Fair87
2008-11-02 22:01:38 UTC
Permalink
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Per quanto ne so io, le tabelle non esistono 'solo' in menoria...essendo 'tabelle' vengono memorizzate come 'tabelle'.......
se vuoi un set di record in memoria per farci qualche cosa, o usi i recordset o le viste (leggi query temporanee). Il metodo CreateTableDef in effetti fa quello che tu gli chiedi.....ossia crea una tabella.....differente il metodo CreateQueryDef, dove puoi creare una query temporanea in memoria......ma valuta bene i costi-benefici
--
Questo articolo e` stato inviato dal sito web http://www.nonsolonews.it
Alessandro Baraldi
2008-11-03 02:44:53 UTC
Permalink
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
L'unico modo per fare una sorta di Tabella in memoria è usare ADO ed
un Recordset in memoria temporaneo... con DAO non è possibile.

Quì trovi un ottimo esempio di Giorgio:
http://www.riolab.org/viewrisorsa.asp?id=45

@Alex
Carlo Costarella
2008-11-03 06:37:45 UTC
Permalink
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Ti riferisci ad una specie di array bidimensionale?

Ciao, Carlo
Fanciullo
2008-11-03 12:44:14 UTC
Permalink
Post by Carlo Costarella
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Ti riferisci ad una specie di array bidimensionale?
Ciao, Carlo
e che cosa è un array bidimensionale? Scusami ma non capisco...
devo usare per forza una tabella che è ottenuta con una query di
creazione tabella.
Siccome la tabella la uso solo temporaneamente non volevo
che venisse memorizzata nel database. Questo è tutto.

Perché non uso un recordset sulla query?
Perché la query è incasinatissima... e il resto del codice DAO non funziona
poi. Mentre la tabella è lineare: contiene solo i campi creati e i loro
valori.

Ciao, Vito
Carlo Costarella
2008-11-03 13:36:53 UTC
Permalink
Post by Fanciullo
Post by Carlo Costarella
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Ti riferisci ad una specie di array bidimensionale?
Ciao, Carlo
e che cosa è un array bidimensionale? Scusami ma non capisco...
Riporto dalla guida:
In Visual Basic, è possibile dichiarare matrici che includono fino a 60
dimensioni. L'istruzione seguente dichiara, ad esempio, una matrice a due
dimensioni, ovvero 5 per 10.
Dim sngMulti(1 To 5, 1 To 10) As Single
Il primo argomento rappresenta le righe e il secondo le colonne.
Per elaborare le matrici multidimensionali, è possibile utilizzare
istruzioni For...Next nidificate. L'istruzione seguente riempie una matrice
a due dimensioni con valori Single.
Sub FillArrayMulti()
Dim intI As Integer, intJ As Integer
Dim sngMulti(1 To 5, 1 To 10) As Single

' Riempie la matrice di valori.
For intI = 1 To 5
For intJ = 1 To 10
sngMulti(intI, intJ) = intI * intJ
Debug.Print sngMulti(intI, intJ)
Next intJ
Next intI
End Sub
Post by Fanciullo
devo usare per forza una tabella che è ottenuta con una query di
creazione tabella.
Siccome la tabella la uso solo temporaneamente non volevo
che venisse memorizzata nel database. Questo è tutto.
La tabella memorizzata nel db può essere prima creata e poi cancellata!!!!
Post by Fanciullo
Ciao, Vito
Ciao, Carlo
Fanciullo
2008-11-03 17:04:17 UTC
Permalink
Post by Carlo Costarella
Post by Fanciullo
Post by Carlo Costarella
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Ti riferisci ad una specie di array bidimensionale?
Ciao, Carlo
e che cosa è un array bidimensionale? Scusami ma non capisco...
In Visual Basic, è possibile dichiarare matrici che includono fino a 60
dimensioni. L'istruzione seguente dichiara, ad esempio, una matrice a due
dimensioni, ovvero 5 per 10.
Dim sngMulti(1 To 5, 1 To 10) As Single
Il primo argomento rappresenta le righe e il secondo le colonne.
Per elaborare le matrici multidimensionali, è possibile utilizzare
istruzioni For...Next nidificate. L'istruzione seguente riempie una
matrice a due dimensioni con valori Single.
Sub FillArrayMulti()
Dim intI As Integer, intJ As Integer
Dim sngMulti(1 To 5, 1 To 10) As Single
' Riempie la matrice di valori.
For intI = 1 To 5
For intJ = 1 To 10
sngMulti(intI, intJ) = intI * intJ
Debug.Print sngMulti(intI, intJ)
Next intJ
Next intI
End Sub
Post by Fanciullo
devo usare per forza una tabella che è ottenuta con una query di
creazione tabella.
Siccome la tabella la uso solo temporaneamente non volevo
che venisse memorizzata nel database. Questo è tutto.
La tabella memorizzata nel db può essere prima creata e poi cancellata!!!!
Post by Fanciullo
Ciao, Vito
Ciao, Carlo
Cercherò di capire come funziona la routine che tu hai postato.
Visto che siamo in argomento, con un esempio pratico,
per cosa useresti una matrice a due dimensioni?

A proposito di cancellare la tabella...gisuto così al limite finito di
usarla
via codice la cancello
ma se lo faccio tante volte aumenta la
dimensione del database?

Ciao
Fair87
2008-11-03 22:50:49 UTC
Permalink
Post by Fanciullo
Post by Carlo Costarella
Post by Fanciullo
Post by Carlo Costarella
Post by Fanciullo
Salve sono Fanciullo,
access97
uso questo codice per creare una tabella dove poi
devo fare delle interrogazioni via DAO
Dim tblSMraggr As TableDef
Set tblSMraggr = CurrentDb().CreateTableDef("tblSMraggr")
come mai la tabella mi viene creata fisicamente nel database
CurrentDb().TableDefs.Append tblSMraggr ??
Come posso fare in modo che la tabella venga creata
solo in memoria?
grazie
Ti riferisci ad una specie di array bidimensionale?
Ciao, Carlo
e che cosa è un array bidimensionale? Scusami ma non capisco...
In Visual Basic, è possibile dichiarare matrici che includono fino a 60
dimensioni. L'istruzione seguente dichiara, ad esempio, una matrice a due
dimensioni, ovvero 5 per 10.
Dim sngMulti(1 To 5, 1 To 10) As Single
Il primo argomento rappresenta le righe e il secondo le colonne.
Per elaborare le matrici multidimensionali, è possibile utilizzare
istruzioni For...Next nidificate. L'istruzione seguente riempie una
matrice a due dimensioni con valori Single.
Sub FillArrayMulti()
Dim intI As Integer, intJ As Integer
Dim sngMulti(1 To 5, 1 To 10) As Single
' Riempie la matrice di valori.
For intI = 1 To 5
For intJ = 1 To 10
sngMulti(intI, intJ) = intI * intJ
Debug.Print sngMulti(intI, intJ)
Next intJ
Next intI
End Sub
Post by Fanciullo
devo usare per forza una tabella che è ottenuta con una query di
creazione tabella.
Siccome la tabella la uso solo temporaneamente non volevo
che venisse memorizzata nel database. Questo è tutto.
La tabella memorizzata nel db può essere prima creata e poi cancellata!!!!
Post by Fanciullo
Ciao, Vito
Ciao, Carlo
Cercherò di capire come funziona la routine che tu hai postato.
Visto che siamo in argomento, con un esempio pratico,
per cosa useresti una matrice a due dimensioni?
A proposito di cancellare la tabella...gisuto così al limite finito di
usarla
via codice la cancello
ma se lo faccio tante volte aumenta la
dimensione del database?
Ciao
Le matrici si possono usare per un'infinità di motivi!!! Ma x l'utilizzo che devi farne tu, va benissimo una tabella temporanea. 2 modi : o crei (anche con query di creazione tabella) e cancelli (docmd.deleteobject acTable, "TuaTabella") o, se ti serve + volte, la crei vuota e la riempi/svuoti con SQL. Il db si gonfia, ma se poi lo compatti alla ciusura, torna normale.....Le tabelle temporanee sono prassi comune (IMHO) in Access e non solo....
--
Questo articolo e` stato inviato dal sito web http://www.nonsolonews.it
Continua a leggere su narkive:
Loading...