Newsgroup: it.comp.appl.access
Titolo: Popolare una tabella da una query

Un saluto a tutto il NG.
Scusate se posto una domanda che in realtà ne racchiude concettualmente più
di una, ma vorrei capire almeno dove sbaglio.
Ho una maschera  con una casella di controllo che assume determinati valori.
Ho poi una query che contiene una serie di campi, oltre a quello indicato
nella maschera.
Vorrei che tutti i record di questa query che soddisfano una determinata
condizione (che contengano cioè il valore indicato nella casella di
controllo) andassero a popolare un'altra tabella, posta come recordsource di
una sottomaschera della maschera stessa.
Adesso vi dico come ho ragionato così è probabilmente più semplice per voi
darmi una mano.
1. Ho impostato il recordset di origine dei dati, anche se non so come far
verificare la condizione (uso un comando in sql all'interno di
openrecordset?)
Set rs = db.OpenRecordset("query", dbOpenSnapshot)
2. Ho impostato il recordset di destinazione
Set fat = db.OpenRecordset("tabledestinazione", dbOpenTable)
3. Mi sono posizionato in testa al recordset di origine dei dati
rs.MoveFirst
4. Poi inizio ad assegnare i valori all'interno di un ciclo do.. loop
Do Until rs.EOF
fat.AddNew
fat.Fields("campodestinazione1") = rs.fiedls("campoorigine1")
fat.Fields("campodestinazione2") = rs.fiedls("campoorigine2")
fat.Fields("campodestinazione3") = rs.fiedls("campoorigine3")
.......
fat.Fields("campodestinazionen") = rs.fiedls("campooriginen")
fat.Update
rs.MoveNext
Loop
rs.Close
fat.Close
Qui il sistema mi va in errore ('Run-time 438': Object doesn't support this
property or method).
Qualcuno mi riesce a dare una mano???
Sarei grato anche di qualche 'dritta' sulla quale possa lavorare per
risolvere il problema.
Vi ringrazio per la collaborazione.
Goose

 .......
[cut]
se hai riportato in modo preciso il codice, la sintassi e' errata
"fields" e non "fiedls". Ma a parte questo. Per quale ragione fai la
scrittura su una tabella?
Quello che ti serve e' visualizzare i dati filtrati?
Per fare questo basta che apri l'intera tabella e poi sull'evento di
dopo aggiornamento del controllo che ti serve da criterio di selezione
applichi un filtro.Metodo applyfilter o gestione delle proprieta' filter
e filteron.
a.cara

 a.cara
Ti ringrazio per la pazienza.
Goose

 
ricapitoliamo:
1) controllo per impostazione criteri su form (immagino principale)
2) form con dati proveniente da query
3) subform con dati provenienti da tabella
come la vedo:
a) imposto il criterio su form 
b) tramite il criterio applico un filtro alla form principale
c) immagino che ci sia un tasto "adesso scarica su sottomaschera"
d) prendo i dati dal recordsetclone del form principale e per quelli che
interessano aggiorno il recordsetclone della sottomaschera
e) cosi', se il recordsetclone della sottomaschera proviene da una
tabella ed e' di tipo aggiornabile, deve andare
f) ovviamente non posso aggiornare i dati sul recordsetclone del form
principale
-- 
Alessandro Cara

 [cut]
E' una implementazione abbastanza frequente in un gestionale.
A mio avviso la cosa migliore e' una query di accodamento, sia lanciata come
stringa da codice o, se preferisci, memorizzata come query ed eseguita
all'occorrenza.
Mettersi li' a fare loop quando il dbengine e' stato progettato apposta per
fare queste operazioni mi pare superfluo.
Devi scrivere qualcosa del tipo
CurrentDB.Execute "INSERT INTO RigheFattura ( IDFattura, IDFornitore,
IDProdotto, Quantita, PrezzoPerUnita ) SELECT '" & Me!IDFattura & "' AS
Espr1, RigheDDT.IDFornitore, RigheDDT.IDProdotto, RigheDDT.Quantita,
Prodotti.PrezzoUnitario FROM Prodotti INNER JOIN RigheDDT ON
(Prodotti.IDFornitore = RigheDDT.IDFornitore) AND (Prodotti.IDProdotto =
RigheDDT.IDProdotto) WHERE (((RigheDDT.IDDDT) ='" & Me.IDDDT & "'));"
Per la cronaca, questa e' la query che uso io per fare l'operazione che
vorresti fare anche tu.
E' meno complicata di quanto sembra.
Se vuoi capirla meglio inseriscila nell'SQL di una query e vai in
visualizzazione struttura (ovviamente dopo avere cambiato i nomi di campo e
di tabella con quelli tuoi.
Sib

 Sib
Vi ringrazio per la collaborazione
Un saluto
Goose