Newsgroup: it.comp.lang.visual-basic
Titolo: Dati ordinati di una query

Buongiorno a tutti,
desideravo porvi un questito al quale non riesco a dare risposta.
Ho un db access che interrogo da vb6, e attraverso una query estraggo
alcuni record che carico su una listview.
Uno di questi campi contiene caratteri alfanumerici quindi mi ritrovo un 
codice che pressappoco nei record appare così:
LLS 54/09
LLS 55/09
LLS 56/09
MLS 12/09
LLS 01/10
ETC in ordine sequenziale con criterio Sigla Numero / anno di rif.
Se nella query, chiedo di ordinare per codice, come immaginate, l'ultimo
e cioè LLS 01/10, verrà posizionato prima di tutti, quando in realtà
dovrebbe stare all'ultimo. Dato che non sono una cima, ho pensato che si 
dovrebbe separare in piccoli blocchi la stringa e effettuare un criterio 
di ordinamento personalizzato.
Non immagino minimamente come. Vi sarei grata se mi deste un aiuto.
Grazie
Yara

 Yara
Non è mai  bello vedere come vi "garba" incasinarvi eh!
Allora...non c'ho capito molto!
Il campo fa parte di un record no?
L'errore è stato mischiare 2 campi che logicamente dovrebbero stare
separati in uno:
Il codice e l'anno di riferimento
Fatti una mini sub in vb6....che:
Esegue una query di selezione di tutti i record su access
legge tutti i record
Quando legge un record....parcheggia tutti i valori in opportune
variabili TRANNE questo incriminato....
si spera che tu abbia uno spazio davvero o un simbolo che separa i 2
campi....
USA SPLIT per dividerli
a questo punto hai una serie di variabili che riportano i valori del
record letto da access con 2 campi al posto di uno
bene...scrivili in una tabella di servizio su access.
Ripeti per tutti i records
Alla fine avrai una tabella che deriva da quella originaria ma che al
posto di un campo CODincasinato avrà: CodProdotto e AnnoRif
Da qui in poi puoi farti tutte le query che vuoi compresa quella, che
forse ho capito vuoi fare,
Codici ordinati per anno di riferimento... sia ascendente che
discendente
L'errore ...se ho capito quello che vuoi fare...è un errata analisi
del DB!
Sta a monte l'errore non nell'implementazione!
Ciao!

 Ciao!
buhuhu....siiigh...io l'ho detto che volevo fare la 
ragioniera...buuhuhuhu....
Eh eh ...a parte ogni scherzo, grazie per il supporto e l'analisi.
Prover� quanto mi hai spiegato, (cosa mica semplice semplice) anche se
io da brava defi (CIENTE) aveo pensato, e se creiamo un algoritmo che 
con split separi il contenuto del campo? Ovviamente poi creiamo nella 
tabella due nuovi campi (NUMERICI) rif e anno...fai il lavoraccio na 
volta...
ma tolto il dente... te metti na protesi...eh!
;-)
Grazie di cuore
Y


zac
Ed io che t'ho detto?????
T'ho descritto l'algoritmo...vuoi pure lo pseudo codice?
LOOP UNTIL RECORDSTABELLAORIGINARIA EOF
 LEGGI RECORD
   SPLIT CAMPO
       COSTRUISCI NUOVO RECORD
            MEMORIZZALO IN UNA NUOVA TABELLA
END LOOP

 wrote:> Il 16/02/2011 15:21, Wodka40[Google] ha scritto:
HO PRESO UNA TABELLA DI ACCESS
ID	NOME	CODICE	                    ALTRO
1	PIPPO	ASDF1322 2000	            mah
2	PLUTO	AD2525 2000	            boh
3	PAPERINO	RSDF356 2010	    boh
4	PLUTO	RESW35 2010	            nnnn
5	PIPPO	TYFTF35 2009	            dedhedh
poi ho preso una query ed ho "giocato" con INSTR e MID$
e una volta selezionato quello che mi pare l'ho trasformata in query
di creazione tabella...risultato...da incollare come SQL in una query
SELECT Tabella1.NOME, Tabella1.ALTRO, Tabella1.CODICE, Mid$([CODICE],
1,InStr(1,[CODICE]," ")-1) AS NEWCOD, Mid$([CODICE],InStr(1,[CODICE],"
")+1) AS NEWANNO INTO NuovaTabella
FROM Tabella1;
RISULTATO...una nuova tabella chiamata NuovaTabella con dentro
NOME	ALTRO	CODICE	             NEWCOD	NEWANNO
PIPPO	 mah	        ASDF1322 2000	     ASDF1322	2000
PLUTO	 boh	        AD2525 2000	     AD2525	2000
PAPERINO boh	        RSDF356 2010	     RSDF356	2010
PLUTO	 nnnn        RESW35 2010	     RESW35	2010
PIPPO	 dedhedh	TYFTF35 2009	     TYFTF35	2009
ecco fatto!
:)

 wrote:
zac
Se usi un altro DB probabilmente va cambiato il nome delle funzioni
(ma mica è detto MID ed INSTR sono istruzioni di uso
frequentissimo...quasi standard!) ma il concetto è il medesimo: il
lavoro lo faccio fare al motore del database ...non a vb!!!


Accidenti Wodka!. No, non permetto questo. Io ti ringrazio, mi avevi già 
dato una ideona e io tra l'altro avevo compreso e come vedi, ti avevo 
detto che intraprendevo questa strada, ma non volevo chiedere tatnto!!
Apprezzo molto la disponibilità sperando a mia volta di poter essere 
d'aiuto a qualcuno, che so, magari spiegando come si stirano i colletti 
delle camicie!! Ooops...non è il ng giusto...ma chissà...!
Grazie davvero ;-)