Newsgroup: it.comp.appl.access
Titolo: creazione automatica tabelle

Utilizzo access 2003. Ho una tabella in cui nel campo "ragione
sociale" lo stesso soggetto compare in più record, associato a dati di
volta in volta diversi negli altri campi. Vorrei creare
automaticamente una tabella per ciascuno dei soggetti che compaiono
nel campo "ragione sociale" della tabella di partenza. Le tabelle così
generate dovranno contenere tutti i record che nella tabella di
partenza contenevano lo stesso nominativo nel campo "ragione sociale".
Come posso fare?
Grazie


Dim rsSoggetti As RecordSet
' Determina i valori distinti del campo Ragione sociale
Set rsSoggetti=Currentdb.OpenRecordSet("SELECT [Ragione sociale] FROM
TuaTabella GROUP BY [Ragione sociale]")
rsSoggetti.MoveFirst
DoCmd.SetWarnings False
' Scorre le ragioni sociali distinte individuate
Do While rsSoggetti.EOF = False
  ' Inserisce i record relativi a ciascuna ragione sociale in una
  'tabella che ha come nome il valore della ragione sociale stessa 
  Docmd.RunSQL "SELECT TuaTabella.* INTO [" & rsSoggetti![Ragione
sociale]  & "] WHERE [Ragione sociale]='" & rsSoggetti![Ragione
sociale] & "'"
  rsSoggetti.MoveNext
Loop 
DoCmd.SetWarnings True
Vincenzo Turturro 
Certificato Eucip Core Level 
ITA 0000-002299 del 14/05/2007 
--------------------------------------------- 
il sito comune di it.comp.appl.access: 
http://www.sitocomune.com
 
--------------------------------------------- 
risorse Access: 
http://www.accessgroup.it
 
--------------------------------------------- 
Il sito comune di it.comp.as400 
http://www.faq400.com
 
---------------------------------------------

On 9 Ago, 09:13, V...@Work.it (VT @ Work) wrote:

Intanto grazie per la risposta. Devo confessare di essere un utente
base e quindi chiedo: questo set di istruzioni dove lo devo inserire?
Grazie

On Thu, 09 Aug 2007 03:46:04 -0700, 
blackb...@yahoo.it
 wrote:
 (...) 
Allora il codce diventa:
Function CreaTabelle()
Dim rsSoggetti As RecordSet
' Determina i valori distinti del campo Ragione sociale
Set rsSoggetti=Currentdb.OpenRecordSet("SELECT [Ragione sociale] FROM
TuaTabella GROUP BY [Ragione sociale]")
rsSoggetti.MoveFirst
DoCmd.SetWarnings False
' Scorre le ragioni sociali distinte individuate
Do While rsSoggetti.EOF = False
  ' Inserisce i record relativi a ciascuna ragione sociale in una
  'tabella che ha come nome il valore della ragione sociale stessa
  Docmd.RunSQL "SELECT TuaTabella.* INTO [" & rsSoggetti![Ragione
 sociale]  & "] WHERE [Ragione sociale]='" & rsSoggetti![Ragione
 sociale] & "'"
 rsSoggetti.MoveNext
 Loop
 DoCmd.SetWarnings True
End Function
Quanto sopra lo incolli in un modulo che salverai con un nome a tuo
piacere, ma diverso da CreaTabelle.
Infine crea una macro dove selezionerai l'azione EseguiCodice
specificando come funzione CreaTabelle
Eseguendo la macro verranno create le tabelle.
Ovviamente, il tutto salvo errori ed omissioni: il codice l'ho scritto
al volo senza provarlo minimamente ...


On 9 Ago, 13:49, V...@Work.it (VT @ Work) wrote:

Fatto, ma mi dà errore di sintassi nel modulo. In particolare,
eseguendo il debug, dopo FROM mi segnala "previsto: separatore di
elenco oppure )"

elenco oppure )"
Prova a racchiudere il nome della tabella fra parentesi quadre:
Set rsSoggetti=Currentdb.OpenRecordSet("SELECT [Ragione sociale] FROM
[TuaTabella] GROUP BY [Ragione sociale]")
Vincenzo Turturro


Un momento: mica avrai copiato il codice così come viene formattato nel lettore di news, vero ?
Ovvero: nel mio post precedente, l'istruzione deve stare tutta su una sola riga !



ops ... eliminati gli "a capo". Adesso, però, alla riga
Docmd.RunSQL "SELECT TuaTabella.* INTO [" & rsSoggetti![Ragione
sociale]  & "] WHERE [Ragione sociale]='" & rsSoggetti![Ragione
sociale] & "'"
il debug mi dà: errore di run-time '3067' l'input per la query deve
contenere almeno una tabella o una query

 wrote:

Prova con
Docmd.RunSQL "SELECT [TuaTabella].* INTO [" & rsSoggetti![Ragione
sociale]  & "] WHERE [Ragione sociale]='" & rsSoggetti![Ragione
sociale] & "'"
dove a TuaTabella devi sostituire il nome della tabella che contiene i dati da smistare nelle tabelle di ciascun
cliente.
Tutto su una sola riga ;-)


 - Mostra testo tra virgolette -
si, quello lo avevo fatto, nel modulo la riga di comando contiene i
nomi giusti di campo e tabella, su una sola riga, però mi dà
ugualmente quell'errore ...

On Thu, 09 Aug 2007 23:33:44 -0700, 
blackb...@yahoo.it
 wrote:
 (...) 
Argh !
Prova a creare una nuova query, ignora la richiesta delel tabelle, fai
click sul pulsante SQL in alto a sinista, quindi incolla l'istruzione
seguente:
SELECT [TuaTabella].* INTO Pippo WHERE [Ragione sociale]='Metti qui
una ragione sociale esistente'
Poi fai click sul punto esclamativo della toolbar.
Dovrebbe creare ua tabella Pippo con i record di TuaTabella
corrispondenti alla ragione sociale che avrai scelto.
Se non funzionasse, ora come ora non so cos'altro suggerirti !
