Newsgroup: it.comp.lang.visual-basic
Titolo: Ordinare un recordset senza usare il metodo sort

Salve, io avrei un piccolo problema. Ho un recordset e lo dovrei ordinare 
secondo un algoritmo che non č l'ordine di un campo data.
Vi faccio un esempio
Ho un recordset con sette campi. I due campi che mi servono per ordinare si 
chiamano ID_AGG e ID_AGG_PREREQ. Ho i seguenti records:
1) ID_AGG: 251, ID_AGG_PREREQ: 134
2) ID_AGG: 134, ID_AGG_PREREQ: 11
3) ID_AGG: 12, ID_AGG_PREREQ: 256
4) ID_AGG: 11, ID_AGG_PREREQ: 12
5) ID_AGG: 23, ID_AGG_PREREQ: null
6) ID_AGG: 221, ID_AGG_PREREQ: null
7) ID_AGG: 256, ID_AGG_PREREQ: null
....
24) ID_AGG: 21, ID_AGG_PREREQ: null
Il criterio con cui dovrei ordinare il recordset č il seguente:
ID_AGG=251 ha come ID_AGG_PREREQ=134 per cui il record  1)) deve trovarsi 
dopo il record 2) con ID_AGG=134 che a sua volta deve essere prima del 
record con ID_AGG=11 e cosě via.
Spero di essermi spiegato.
In pratica vorrei sapere qual'č il metodo che devo utilizzare per modificare 
l'ordine dei records all'interno del recordset.
Grazie a tutti 

 l'ordine dei records all'interno del recordset.
Qualcuno diceva "se puoi pensarlo puoi farlo".
Se c'è una logica nel dire che 134 va prima di 251 anche prima di 11... (a
proposito, 11 viene prima o dopo 251?)
Cioè vuoi ottenere
11
251
134
o
251
11
134
?
In entrambi i casi non vedo una logica.
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 Grazie a tutti
BLAM BLAM BLAM se ti muovi così veloce non ti prendo!!!!
Non abbiamo capito assolutamente nulla!!!!!!!!
L'algoritmo lo sai...oppure non lo sai e l'esempio è per dirci..."Che
algoritmo di ordinamento è questo?"
MMMMMMMM
Guardandolo una logica c'è
ossia sembra un albero vediamo se capisco
<--> significa collegato
START
251 134
allora sarà così?
251 134 <-->134 11 <-->11 12 <--> 12 256 <-->256 null albero terminato!
Ho capito?

 Ho capito?
Anzi mi correggo...una lista del lisp...quelli sono nodi!!!!

 ha scritto nel messaggio 
news:crLDe.15677$hV3....@nntpserver.swip.net...



è vero tieniti il problema....e cerca di ripostarlo meglio!!!
PLONK

 nulla!!!
Forse perchè non c'è proprio NULLA da capire?
Ciao 

 nulla!!!
ghghgh!!!
invece con un semplice algoritmo ricorsivo si potrebbe fare ...pensa un po!
Il problema è che il giochino "non lo sai fare" per farmelo dire....stavolta
non attacca!
ti ho dato una dritta...c'è san Google...arrangiati!!!!

 Ma scusatemi! Se non capite nulla cosa rispondete a fare!!!!
ROTFL
Dio deve amare i matti... altrimenti non si spiega perchè ce ne siano tanti
in giro
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it


Nicole non mi sembra che la spiegazione che hai dato sia chiarissima.
Potrebbe sembrare una specie di "albero" ma e' davvero cosi'?
Se fosse un albero sarebbe
   23
  221
  256--> 12--> 11-->134-->251
per quanto ne so non credo che con un "sort" te la cavi.
Sotto la chiave di ricerca "btree" (o "binary tree" potresti trovare 
parecchia roba)
Su un rs (ADO) potresti provare con un doppio ordinamento su agg e 
prereq (quest'ultimo credo desc, non ricordo se i null li mette in testa 
o in coda) e poi, utilizzando delle find, cercarti i link, ma non e' 
certo un bel lavoro. Personalmente preferisco crearmi l'albero in 
memoria e poi "evaluarlo"
Piu' o meno e' la stessa cosa che ha scritto vodkaquaranta.
Procedendo con la strada dei link, di recordset ne farei due
1) ordinamento per agg e solo per i codici con null su prereq
2) i codici con prereq valorizzato, e qui l'ordinamento non e' 
importante visto che poi ci si deve andare con la find. Non credo che 
sia consigliabile fare n select in funzione del record di "base", se 
pero' i record "base" non sono una enormita' ci si potrebbe fare anche 
un tentativo. Cmq sia con le find che con la multiselect le performances 
sono molto scadenti.
--
a.cara

 Nicole wrote:
se l'autore del file avesse lavorato con lungimiranza....
ossia se assieme ai nodi dell'albero avesse memorizzato (SOLTANTO) un id
univoco al record
Con una collection...o una matrice....lavorando in memoria....e mostrando
solo quello che serve a video con
un SELECT * FROM nnnn WHERE IDrec=IDmatrice
io ho il sospetto che sia un esercizio dato da qualche prof per esercitare
gli studenti su liste e algoritmi di ordinamento!!!

 ha scritto nel messaggio 
news:GkPDe.31237$b93....@tornado.fastwebnet.it...


 Grazie
sarebbe interessante sapere cosa non c'è di "cortese" nelle risposte mie e
di Zanna.....
il tuo problema....è però di "forma mentis" (se ti dicevo mentale ti
offendevi sicuramente)...
Ossia...manco sai tu quello che vuoi fare!
Ti spiego:
modificare l'ordine dei recordset non vuol dire nulla è incompleta come
informazione!
COME  vuoi modificare? COME vuoi ordinare?
Per data, per nome ,per cognome etc etc etc
...tu hai fornito (al limite) un criterio sul come qualcuno correlerà in
seguito i dati (ossia ad albero)...nulla ci hai detto su come vuoi
modificare questa lista...sul come vuoi ordinarla!
Quello che tu hai fornito sono soltanto i riferimenti che un insieme di dati
ha in una lista!
Descrivono chi sta sopra chi sta sotto...dove comincia e dove finisce una
lista.
La qualità dei dati è altra cosa....
se decidi di ordinare per indirizzo ad esempio devi scannerizzare tutta la
lista trovare il record iniziale e aggiornare i 2 nodi per farli diventare
il primo....
Un algoritmo bubble sort o quick sort...ma in genere si fa su una lista
....sui puntatori...in c....è un esercizio classico!
Però ...se hai u caso pratico....ossia non sei una studentessa alle prese
con un compito di informatica che non ti riesce....
se hai un motore db ti conviene far lavorare lui!!
...si ordina con una select * from MiaTab ORDER BY Indirizzo ASC
i 2 campi non servono a nulla!!!
Se fanno parte di linee di produzione diverse....basta aggiungere un campo
IDlineaprod
e fare
Select * From Miatab WHERE IDlineaprod="Cavatappi" ORDER BY QtaVendute, Cod
articolo ASC (o DESC)
...ad esempio!!!
Però leggendo fra le tue righe (e accendendo la palla di cristallo sperando
di vedere nel tuo monitor) mi sorge un sospetto....tu non sai COME
modificare un campo di un recordset!
Altrimenti non ci forniresti solo i 2 campi  ID_agg e id_agg_prereq senza
dirci nulla sul come ordinare!
beh una strada è premere f1...compare la guida di VB....cerca ado field.....
Poi non ci dici nemmeno se usi ADO o DAO....che db usi etc etc.....VB ...5 6
net?
Oppure se lavori su un file di testo ....
Insomma sei pronta a sputare sentenze .....almeno cerca di non essere
controvento!!!
Bai bai baby!
:-)
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
Aderisci al M.A.I.  
http://www.villaceleste.it/html/icadioti/

> Per fortuna c'è qualche gentiluomo che risponde con cortesia.
A costo di beccarmi del non-gentiluomo:
la tecnica "uso un nick femminile così quella massa di allupati mi risponde subito" funziona [purtroppo], ma bisogna essere un po' furbi. Non è ad esempio il caso dire (come tu fai nel primo messaggio):
 > Spero di essermi spiegato
Così è davvero brutto...

 univoco al record
se i dati sono quelli la struttura e' corretta.
Se non vado errato e' la classica struttura di "distinta base" che in
questo caso si limita ad una ricorsivita' lineare.
Le matrici non te le consiglierei. Una struttura del genere
dovrebbe passare attraverso Redim che non e' esattamente sinonimo di 
leggerezza
--
a.cara


è passato un giorno.....
Casablanca è vicino......
1+1.......
;-)

 Grazie
se vogliamo proseguire questo 3d ti pregherei di rispondere dopo il quoting.
Perdonami ma non ho compreso.
Cosa ci devi fare con il recordset?
Devi visualizzare i dati o cosa?
L'ordine del recordset lo puoi avere
1) o per agg
2) o per prereq
3) o per agg+prereq
4) o per prereq+agg
5) anche alla come capita
nessuno di questi ordinamenti ti risolve il problema a meno di
a) Elaborare il record nel modo che ho precedentemente descritto
b) utilizzando matrici o collezioni (meglio) come suggerisce Wodka
c) riscrivere da qualche parte (tab temporanea?) aggiungendo un ID di 
ordinamento
d) rileggere il temporaneo secondo l'ID
Tutto cio' sempre se e' valida la struttura da me "immaginata"
--
a.cara


uff...... questa e' dietrologia e soprattutto mi sembra un gran bel 
disegno della media dei partecipanti a questo NG
0) Si chiama effettivamente "Nicole" (in un mondo interraziale dove non 
si capisce piu' nulla, Nicole potrebbe essere triorchide, con barbaccia 
nera e con i peli sul palmo delle mani)
1) Potrebbe non sapere come si fa a cambiare un indirizzo di posta
2) La sorella potrebbe "incazzarsi" oltre ogni dove se lo cambia
3) Potrebbe essere un purissimo "sfaticato"
4) Potrebbe essere gay ed usare il nome di battaglia
5) Chissa magari e' effettivamente un po' "malandrino"
6) Anche questa e' dietrologia
7) Sei un "non-gentiluomo" ;<)
Era comunque chiarissimo che era un "Lui".
--
a.cara

 Era comunque chiarissimo che era un "Lui"
appunto.... "era"......
poi il volo a casablanca..........

 Era comunque chiarissimo che era un "Lui".
Mai sentito un "lui" che si fa prendere dalla malinconia di una non 
completamente perduta cavalleria.
C'è qualcosa che non mi quadra, se non con l'applicazione del 4...
Ciao 

> Per fortuna c'č qualche gentiluomo che risponde con cortesia. Ti spiego 


 grosso.
Hai perfettamente ragione.
Anche gli errori nell'utilizzo della consecutio temporum sono equamente
distribuiti tra i generi.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ciao
cut
Sarebbe molto didattico (per te) se ci postassi il codice della tua
soluzione!
Così alla fine capiremmo cosa volevi fare!
Ma siccome sospetto che oltre ad essere "Uoma" tu sia anche "jovine"...sarai
molto presuntuosa e non lo farai!
Peccato perchè perdi una occasione....
cerca la prossima volta di lurkare (significa leggere i vecchi post) e
vedrai che c'è una sorta di "modo" per chiedere
essenzialmente si tratta di:
a) Fare la domanda
b) corredarla di codice se non è chiara
c) Attendere...e fornire info supplementari se richieste!
OH!
...ne avessi azzeccata una!
Vabbè tieniti la tua soluzione....dormiamo tutti bene lo stesso anche se non
sapremo mai cosa hai fatto!
<MALIGNO MODE ON>
Se lo hai fatto!
e se non lo stai dicendo per non passare da bischera/o
<MALIGNO MODE OFF>
Ciao e miao!
:-)
P.s.
Il fatto che tu sia donna non rileva!
Esistono pure le donne Lamer!
....toh eccone una!
:o)



Mi sono riletto tutto il thread e sinceramente, concordanza di genere
(..."spiegato"...) a parte ;-), il post iniziale a me è sembrato abbastanza
chiaro e per nulla presuntuoso, nonostante a qualcuno sia parso il contrario.
Cerco di non entrare quasi mai in discussioni relative al modo di comportarsi
dei frequentatori del NG, a me interessa solo il punto di vista tecnico.
Ma sinceramente stavolta non capisco il perché di tutta questa animosità da
parte degli altri che ti hanno risposto. Sarà stato il caldo, saranno state un
paio di rispostine un po' impulsive a Wodka (che potevi risparmiarti, alla tua
prima "uscita" sul NG)...
Il discorso era semplice: si cercava un modo di traversare un recordset seguendo
un criterio basato su coppie di ID precedente/successivo.
Come in una lista con concatenazione semplice.
Ora, siccome la cosa mi interessa, sono curioso di sapere la soluzione che hai
trovato.
Bye
Raf

 parte degli altri che ti hanno risposto.
Sarą uno dei miei soliti periodi "neri" perņ continuo a leggere domande 
superficiali e malposte che personalmente mi risultano incomprensibili e 
sinceramente mi sto rompendo di questo comportamento, anche perchč non sono 
io quello che ho bisogno.
Ciao 

 Ciao
Bye
Raf

 "superficiali e malposte"...
Questione di gusti :)
Ciao