Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Ordnamento non ordinato

    se faccio una query di selezione su un db, filtrando ed ordinando per
data, dovrebbe prendere tutti i record che corrispondono al criterio di
selezione e visualizzarli nell'ordine originale ?
    Se č cosě, non mi funziona. Potreste dirmi come risolvere ?
    Nel dettaglio:
    su un form ho messo due textbox, una flexgrid e un controllo data
collegato alla flexgrid.
    nelle due textbox inserisco due date
    una routine mi prende i due valori e fa una query di selezione dal
controllo data, selezionando tutti i record compresi nelle due date.
    teoricamente dovrebbe popolare la flexgrid e mostrare i dati nell'ordine
in cui appaiono nel database, ma purtroppo non č cosě.
    Potreste dirmi come ovviare al problema?
    4.612.874.509.128.534.921.843.259^1.635.416.534 a chi mi risponde
--
Qualsiasi cosa, non sono stato io
     R [ D / L ] + 1 
rdim...@tdi.it

 
Se sei arrivato a creare la query che fa la selezione in base alle date
basta aggiungere in coda alla query la clausola "ORDER BY
<nome_campo_su_cui_ordinare>"
in quanto la sola selezione cioe la parte WHERE non dice assolutamente
come ordinare e i record ti vengono comunque ritornati in ordine
'sparso'

 <nome_campo_su_cui_ordinare>"
    Lo faccio ed è proprio quando dico Order By <nome_campo_su_cui_ordinare>
che mi ordina per <nome_campo_su_cui_ordinare> ma mischia l'ordine dei
record presenti nel DB
    Esempio
    Situazione DB prima della Query
    Data        Valore
    12/7/99    a
    12/7/99    b
    13/8/99    c
    13/8/99    f
    14/8/99    d
    14/8/99    g
    15/9/99    e
    gli dico di prendere dal 13/8/99 al 15/8/99 ordinando per data
    e invece di darmi
    Data        Valore
    13/8/99    c
    13/8/99    f
    14/8/99    d
    14/8/99    g
    15/9/99    e
    mi restituisce una cosa del genere
    Data        Valore
    13/8/99    f
    13/8/99    c
    14/8/99    g
    14/8/99    d
    15/9/99    e
    ordinato per data, ma non nell'ordine originale.
        Spero di essere stato chiaro.
    Help ME
--
Qualsiasi cosa, non sono stato io
     R [ D / L ] + 1 
rdim...@tdi.it

 wrote in message
7s5h7n$kk6$1...@fe2.cs.interbusiness.it...

ORDER BY Data, Valore
bYe


Chiarissimo, forse e' a te che non e' chiaro il funzionamento dell'ORDER
BY...
Ragioniamo un attimo.
Se dici "ordinameli per data", e' logico che te li ordini per data...
Se li vuoi _anche_ ordinare per un altro (o altri) campo/i, allora devi
speficicarli nella clausola ORDER BY.
Es. "ordina per data E per valore:
     13/8/99    c
     13/8/99    f
     14/8/99    d
     14/8/99    g
     15/9/99    e
Te li ordina _prima_ per data, e quelli con la stessa data li ordina per
valore.
--
Roal Zanazzi
z...@iol.it

    Ancora una volta non sono riuscito a farmi capire.
    Il mio problema non è quello di ordinare per questo o per quel campo,
almeno questo lo so fare. Il problema è che voglio ordinare solo per data, e
man mano che la query "sceglie" i record per popolare la flexgrid, li deve
prendere nell'ordine originale del db, anche perchè i record sono sempre
ordinati nel DB, e più che un ordinamento, il mio è un vero e proprio zoom
su un pezzo del DB.
    Per fare ancora un esempio, posso proporre quello del Crystal Report
quando si crea un gruppo di record, c'è la possibilità di ordinare in modo
crescente, decrescente e nell'ordine « originale » ed è proprio questo orine
originale che serve a me.
    Spero di essere stato chiaro stavolta, e ripeto, le SQL le so usare non
dico benissimo, ma almeno finora sono riuscito a farci quello che volevo.
    HELP ME !
--
Qualsiasi cosa, non sono stato io


Se per ordine "originale" intendi dire "nello stesso ordine con cui sono
stati memorizzati i record", allora ti consiglio di aggiungere un campo date
alla tabella, e quando inserisci i dati, inserisci la data corrente (o se ti
serve, aggiungi anche l'ora).
Altrimenti c'è sempre qualche criterio di ordinamento, soprattutto se ci
sono campi chiave.
Ciao


come piccola aggiunta  c'e' da dire che non esiste un ordinameto
'originale' dei record all'interno del database ,cioe'  il gestore del
DB ( access , sql server , <quello_che_piu'_ti_piace> e' in genere
libero di riorganizzare l'ordine dei record all'interno delle tabelle,
sopratutto in presenza di cancellazioni o modifiche di record,l'unica
maniera per avere un ordinamento 'originale' e' quella  di inserire ,
come detto  da AlexMessoMalex un 'timestamp' o al limite un piu'
semplice campo con un numero progressivo

Esatto, forse č piů semplice un campo COD_ORDINAMENTO intero progressivo.
Cosě prima di inserire un record, fai una ricerca con una
SELECT MAX(COD_ORDINAMENTO) FROM TABELLA
lo incrementi di uno e lo scrivi nel campo COD_ORDINAMENTO nel nuovo record.
Ciao


    Ho inserito il campo ORDINAMENTO, ed ora va tutto come dico io, Grazie a
tutti.
e comunque


Prego, figurati.
Questo dimostra agli idioti che mi reputano un perditempo che a qualcosa
servo anch'io.
Ciao





E' il proxy che ogni tanto fa le bizze.
Scusate ancora.