Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creazione tabella da recordset (da VBA)

538 views
Skip to first unread message

vuLCan Karayan

unread,
Mar 21, 2005, 10:35:57 AM3/21/05
to
Ciao a tutti.
Ecco il mio problema :

Creo un recordset
Dim rs as DAO.Recordset
set rs=CurrentDb.OpenRecordset("SELECT * FROM rs WHERE [Campo2]=X")

E' possibile creare una tabella con questi dati e cancellarla?

Tnx

VT @ home

unread,
Mar 21, 2005, 11:02:02 AM3/21/05
to
Il Mon, 21 Mar 2005 15:35:57 GMT, "vuLCan Karayan" <nos...@nospam.it>
ha scritto:
>(.....)

L'istruzione set che hai riportato ha poco senso infatti, se ci pensi
bene, rs alla fine č definito in termini di se stesso
Forse vuoi, da codice:
1) creare una tabella temporanea
2) utilizzarla accedendovi con DAO
3) cancellarla quando non ti serve piů.

1) Docmd.RunSQL "SELECT * INTO TabellaTemporanea FROM TuaTabella WHERE
Campo2='X' "
2) Set rs=Currentdb.OpenRecordset("TabellaTemporanea")
3a) currentdb.tabledefs("TabellaTemporanea").delete
3b) currentdb.tabledefs.refresh

Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

VT @ home

unread,
Mar 21, 2005, 11:06:42 AM3/21/05
to
Il Mon, 21 Mar 2005 15:35:57 GMT, "vuLCan Karayan" <nos...@nospam.it>
ha scritto:
>(.....)
>set rs=CurrentDb.OpenRecordset("SELECT * FROM rs WHERE [Campo2]=X")
>

Dimenticavo: la sintassi è sbagliata.
Infatti al momento di eseguire l'istruzione, la variabile rs che
compare nella SELECT non può essere risolta e non potrebbe esserlo
anche se fosse definita non in termini di se stessa.

vuLCan Karayan

unread,
Mar 21, 2005, 11:10:26 AM3/21/05
to
> L'istruzione set che hai riportato ha poco senso infatti, se ci pensi
> bene, rs alla fine č definito in termini di se stesso
> Forse vuoi, da codice:
> 1) creare una tabella temporanea
> 2) utilizzarla accedendovi con DAO
> 3) cancellarla quando non ti serve piů.
>
> 1) Docmd.RunSQL "SELECT * INTO TabellaTemporanea FROM TuaTabella WHERE
> Campo2='X' "
> 2) Set rs=Currentdb.OpenRecordset("TabellaTemporanea")
> 3a) currentdb.tabledefs("TabellaTemporanea").delete
> 3b) currentdb.tabledefs.refresh
>
> Vincenzo Turturro

Grazie per la tua risposta Vincenzo.
Perfetto.

Un'ultimissima cosa...
I nomi dei campi nella nuova tabella che tu chiami TabellaTemporanea
arrivano dalla tabella TuaTabella, no?
Voglio dire, a livello strutturale in questo modo creo una nuova tabella con
i nomio dei campi di quella esistente?

Ancora mille grazie.

vuLCan Karayan

unread,
Mar 21, 2005, 11:50:25 AM3/21/05
to
> Forse vuoi, da codice:
> 1) creare una tabella temporanea
> 2) utilizzarla accedendovi con DAO
> 3) cancellarla quando non ti serve più.

>
> 1) Docmd.RunSQL "SELECT * INTO TabellaTemporanea FROM TuaTabella WHERE
> Campo2='X' "
> 2) Set rs=Currentdb.OpenRecordset("TabellaTemporanea")
> 3a) currentdb.tabledefs("TabellaTemporanea").delete
> 3b) currentdb.tabledefs.refresh

Grazie Vincenzo.
Un'altra domanda...
Immaginiamo la tabella TuaTabella così strutturata:
Campo A
Campo B
Campo C

Ecco un esempio:
Docmd.RunSQL "SELECT CampoA; Campo C INTO TabellaTemporanea FROM TuaTabella
WHERE CampoB='X' "

Dovrei avere la tabella TabellaTemporanea con questa struttura, vero?
Campo A
Campo C

Immaginiamo che la TabellaTemporanea abbia una decina di record...
Possi effettuare delle somme, dei calcoli senza usare le maschere?
Che so, sommare tutti i campi C, contare ecc?
Uso sempre DSum, DCount?

Tnx


VT @ home

unread,
Mar 21, 2005, 4:19:10 PM3/21/05
to
Il Mon, 21 Mar 2005 16:50:25 GMT, "vuLCan Karayan" <nos...@nospam.it>
ha scritto:
>(.....)

>Immaginiamo la tabella TuaTabella cosě strutturata:


>Campo A
>Campo B
>Campo C
>
>Ecco un esempio:
>Docmd.RunSQL "SELECT CampoA; Campo C INTO TabellaTemporanea FROM TuaTabella
>WHERE CampoB='X' "
>
>Dovrei avere la tabella TabellaTemporanea con questa struttura, vero?
>Campo A
>Campo C

>Immaginiamo che la TabellaTemporanea abbia una decina di record...
>Possi effettuare delle somme, dei calcoli senza usare le maschere?
>Che so, sommare tutti i campi C, contare ecc?

>Uso sempre DSum, DCount?

Dipende dall'uso che vuoi farne.
All'interno del codice puoi usare le funzioni che hai menzionato.
Se intendi usare SQL, devi utilizzare le cosiddette funzioni di
aggregazione SUM(), COUNT(), AVG() ecc. il cui utilizzo č documentato
nell'help di Access.

A questo punto sorge spontanea una domanda:se devi compiere operazioni
sui valori di alcuni campi di tutti i record della tabella temporanea,
perchč non esegui le medesime operazioni sui record della tabella di
orgine opportunamente filtrati ?
Dsum("CampoA";"TuaTabella";"CAMPOB='X'") č del tutto equivalente a
crare TabellaTemporanea con i record di TuaTabella dove CampoB='X' e
quindi calcolare Dsum("CampoA","TabellaTemporanea")

VT @ home

unread,
Mar 21, 2005, 4:12:49 PM3/21/05
to
Il Mon, 21 Mar 2005 16:10:26 GMT, "vuLCan Karayan" <nos...@nospam.it>
ha scritto:
>(.....)

>Un'ultimissima cosa...


>I nomi dei campi nella nuova tabella che tu chiami TabellaTemporanea
>arrivano dalla tabella TuaTabella, no?
>Voglio dire, a livello strutturale in questo modo creo una nuova tabella con
>i nomio dei campi di quella esistente?

Sě.

0 new messages