Newsgroup: it.comp.appl.access
Titolo: Come si interviene su una query?

Salve a tutti.
Scusate il thread ma non sapevo come intitolarlo.
Il mio problema è il seguente:
Con una query ordino decrescenti i record (massimo una trentina) di una
tabella.
Dopo averli ordinati li devo disporre a gruppi di 4 in 4 in modo casuale,
prima di passarli a un report per la stampa.
Cioè i primi quattro record sono tra loro disordinati (ma rimangono i
maggiori quattro) e così via.
Immaginate per esempio che sia l'ordine di partenza di una gara in cui i
primi quattro classificati alle prove non partono nell'ordine ma vengono
mischiati tra loro, senza però essere oltrepassati dai secondi quattro, e
così via.
Se potessi trasferire i dati della query ad una array o a un recordset o che
so io, e poi intervenire da codice la cosa mi sembrerebbe facilina, ma non
so come si fa a prelevare il risultato di una query, manipolarlo e
rimetterlo a posto per poi passare la query (modificata) al report.
Spero di essere stato chiaro. Chi mi aiuta?
Ciao da Filippo


wrote:

potresti aggiungere un campo ordine nella tabella da dove crei la
query e valorizzandola da codice ti crei le basi per la creazioni
della query che ti serve...
Saluti.
Emanuele.

 ha scritto nel messaggio
news:vf454ugtp8ggrcenc...@4ax.com...

Ti ringrazio per la risposta.
Il punto è che non riesco a intervenire via codice sulla query (non so come
si fa).
Ho provato con Recordset (l'istruzione dovrebbe essere GetRow per caricare
in un'array bidimensionale variant tutti i record e i campi della query) ma
non ci riesco.
Se potessi trasferire il risultato della query in array su cui inntervenire
da codice sarebbe fatta.
La soluzione che mi proponi non mi è poi molto chiara: potresti spiegarti
meglio?
Grazie
Filippo

 wrote:
cerca qualche esempio su sitocomune... e vedi l'help
comunque...
dim db as database
dim rs as recordset, rs1 as recordset
set db=currentdb
set rs=db.openrecordset("Select * from tabella")
set rs1=db.openrecordset("Select * from tabelladestinazione")
do while not rs.eof then
	rs1.addnew
	rs1.[campo1]=rs![campo1]
	rs1.[campo2]=rs![campo2]
	rs1.update
	rs.movenext
loop
rs.close
rs1.close
set db=nothing
endif
Saluti.
Emanuele.

 ha scritto nel messaggio
news:d2j54usqiber7nnpp...@4ax.com...

Grazie, sei molto gentile perň.... ecco i problemi che ho incontrato:
1. Quando DIMensiono db as database mi esce un errore, come se database sia
un elemento sconosciuto
Credo di dover dire al VBA che il Type database esiste ma non so come. Forse
con: elementi, ADO etc?
2. Con il codice che mi segnali, se ho capito bene, io trasferisco il
recordset di una query in una tabella (tabelladestinazione) e poi?
Che ci faccio? Non sono punto e da capo? Cioč non lo so, ma se non dispongo
dei dati in una array o in alcune variabili come faccio a mischiarli
casualmente?
Se io avessi i risultati della query in una Array bidimensionale XYZ(record,
campo) o Variant farei cosě:
(ometto i vari DIM per gli identificatori OK?)
TotRecord=Ubound XYZ(1)                ' Per sapere quanti record ho
Contatore=4
Alto=4
Basso=1
For I = 1 to TotRecord
R = INT(RND*(Alto-Basso))+1   'Casuale da 1 a 4, poi da 5 a 8 etc
Swap XYZ(I), XYZ(R)
Contatore=Contatore-1
 If Contatore=0 then
 Alto=8
 Basso=5
 Contatore=4
 End if
Next I
(Piů o meno cosě. Adesso non sono certissimo del risultato, tra l'altro mi
pare che il VBA non abbia implementato il comando SWAP che scambia i valori
tra 2 variabili perň si puň ovviare con il deposito in una variabile
temporanea)
Perň il mio problema rimane lo stesso, come faccio a prendere i dati,
manipolarli col codice che ho scritto sopra e rischiaffarli nella query, in
modo da essere stampati dal Report cosě come li ho cambiati io?
Spero di essere stato chiaro.
Grazie dell'aiuto
Filippo


io ti ho dato il codice per accedere agli archivi poi puoi usare senza
problema un array da ordinare e poi lo registri sull'archivio.

Saluti.
Emanuele.