Ordinare record per data di aggiunta

di il
12 risposte

Ordinare record per data di aggiunta

Esiste un modo per ordinare i record per data di aggiunta? Perchè io ho un campo riempito così: A[numero crescente] (A1, A2.....A224,..A335, ecc.) e lui in automatico lo mette in ordine alfabetico, solo che così considera i numeri come le lettere e quindi ottengo tipo: ....A224,A225,A226,A3,A31,A32,A33, ecc... che non è l'ordine in cui vengono aggiunti!

12 Risposte

  • Re: Ordinare record per data di aggiunta

    Il numero che aggiungi deve avere un numero di cifre fisso eventualmente con gli zeri che precedono. Esempio

    A00001

    Se vuoi ordinare per data devi avere un campo data nel db valorizzato con la data di inserimento.
  • Re: Ordinare record per data di aggiunta

    Ah ok, sennò ho letto a giro che forse potrei usare la funzione Left() ma io di vba non so molto...
  • Re: Ordinare record per data di aggiunta

    Come ti ha detto gia' oregon.

    Nella tua domanda chiedi se esiste un modo per ordinare per data di inserimento. La risposta e' si, a condizione pero che tu abbia un campo data_inserimento nel DB.
  • Re: Ordinare record per data di aggiunta

    gmaster ha scritto:


    Esiste un modo per ordinare i record per data di aggiunta? Perchè io ho un campo riempito così: A[numero crescente] (A1, A2.....A224,..A335, ecc.) e lui in automatico lo mette in ordine alfabetico, solo che così considera i numeri come le lettere e quindi ottengo tipo: ....A224,A225,A226,A3,A31,A32,A33, ecc... che non è l'ordine in cui vengono aggiunti!
    Puoi Ordinare con una Query sul NUMERO che compone il CODICE, estraendo in un campo CALCOLATO la sola parte NUMERICA, e convertendola in NUMERO appunto.
    
    SELECT *, VAL(MID$([NomeCampo];2,3) As ValProgr
    FROM Tabella
    ORDE BY  VAL(MID$([NomeCampo];2,3) As ValProgr
    Sempre io abbia capito la richiesta...
  • Re: Ordinare record per data di aggiunta

    A meno che per il codice non sia importante anche la lettera ...

    A100 viene prima di B1

    Altrimenti la lettera non ha senso ...
  • Re: Ordinare record per data di aggiunta

    oregon ha scritto:


    A meno che per il codice non sia importante anche la lettera ...

    A100 viene prima di B1

    Altrimenti la lettera non ha senso ...
    Quindi rilancio sul codice preparato da @Alex, aggiungendo anche come criterio di ordinamento il primo carattere
    SELECT *, MID$([NomeCampo];1,1) As ParteLettera, VAL(MID$([NomeCampo];2,3)) As ValProgr
    FROM Tabella
    ORDER BY MID$([NomeCampo];1,1) As ParteLettera, VAL(MID$([NomeCampo];2,3)) As ValProgr
  • Re: Ordinare record per data di aggiunta

    Va bene ma sarebbe preferibile avere il codice impostato con un numero fisso di cifre e scrivere semplicemente

    ORDER BY NomeCampo

    Ma se non ci complichiamo la vita non va bene ...
  • Re: Ordinare record per data di aggiunta

    Li potresti semplicemente indicizzare
  • Re: Ordinare record per data di aggiunta

    Piccola nota: la cosa funzionicchia con qualche migliaio di record.
    Se i record sono decine o centinaia di migliaia, o milioni ...

    Conviene sempre ordinare usando un campo indicizzato, dui cui viene mantenuto l'ordinamento proprio dall'indice. In questo modo l'ordinamento e' estremamente efficiente.

    Su un campo calcolato si rischia il full-scan, cioe' la scansione sequenziale dell'intera tabella
  • Re: Ordinare record per data di aggiunta

    Grazie a tutti ragazzi, per ora il codice funziona alla grande!!!
  • Re: Ordinare record per data di aggiunta

    gmaster ha scritto:


    Grazie a tutti ragazzi, per ora il codice funziona alla grande!!!
    Pur avendo risposto suggerendo la creazione di una query che rispondeva a quella che credo possa essere definita "un'esigenza immediata", tengo a precisare che condivido tutti gli altri suggerimenti volti a ripensare al contenuto del campo da ordinare o alla struttura della tabella con l'aggiunta di un campo "datainserimento" che possa essere utilizzato direttamente per l'ordinamento, senza la necessità di creare estrazioni di parti di campo sulle quali basare l'ordinamento.
    Altrimenti, citando Oregon, non solo ci si complica la vita ma si utilizza il db in modo errato (anche se funziona) a discapito, a lungo andare, delle prestazioni (e qui ho parafrasato migliorabile)
  • Re: Ordinare record per data di aggiunta

    E poi alcuni miei colleghi si meravigliano del perché alcune procedure, scritte da società/programmatori esterne/i, girano "lentamente" ...
Devi accedere o registrarti per scrivere nel forum
12 risposte