Riordino di una lista di dati in una Combo

di il
12 risposte

Riordino di una lista di dati in una Combo

Per errori di inserimento commessi, voglio ritornare ad un DB diviso precedentemente archiviato.
Riempio una lista di una Combo (Tipo origine dati: Elenco Valori) con i file DB mediante il comando DIR (uno per uno).
I dati della lista sono tanti e ordinati temporalmente alla rovescia e per raggiungere il più recente devo scorrerla tutta.
Vorrei, prima del dropdown poter riordinare la lista al contrario.
Ho provato a smanettare senza risultati.
Posso ricevere una dritta sul procedimento più giusto?

grazie
antonio cuomo

12 Risposte

  • Re: Riordino di una lista di dati in una Combo

    Usi un metodo sbagliato... Elenco Valori... non va bene in quanto NON è manipolabile.
    Riempi una Tabella(dedicata) con i valori che servono quindi basa la tua Combo sulla Query in cui definisci il criterio di Ordinamento...
    Si possono anche usare Recordset ADo in memoria non associati... ma è meno agevole se non hai una sufficiente dimestichezza.

    Altrimenti devi riempire un Array, e poi riordinarlo in base al criterio con BoubbleSort, e poi ciclarlo per riempire da zero la Combo... vedi tu.
  • Re: Riordino di una lista di dati in una Combo

    "Elenco valori" sicuramente non va bene.
    Se ho capito bene tu vuoi che la casella combinata possa avere la possibilità di mostrare l'elenco valori in vari modi: giusto?
    In alcuni miei progetti ho predisposto più query che puntano sul campo ID principale, poi con l'aiuto di un "menu contestuale" decido quale lista valori preferisco.
  • Re: Riordino di una lista di dati in una Combo

    Grazie ad entrambi. Mi cimenterò prima con l'array ed infine con la tabella.
    Mi faccio risentire.
    bye
  • Re: Riordino di una lista di dati in una Combo

    Quando avrai voglia magari sono interessato a comprendere il motivo di questa scelta tecnica... curiosa.
  • Re: Riordino di una lista di dati in una Combo

    Ho capito: mi stai dicendo che quella strada è comunque tortuosa e mi consigli di usare una tabella.
    Ti sembrerà strano, ma creare una tabella da VB, magari anche virtuale come credo di aver sentito dire, per me che sono un vecchio programmatore in linguaggio basic, mi spaventa un pò perché sono cose che non ho mai fatto.
    Per esempio, di sicuro dovrò azzerarla tutte le volte che la utilizzerò, mi occuperà spazio sull'Hard Disk, non ho mai usato un comando per il sort dei record e non so cos'altro mi aspetta.
    Ma ci proverò, specialmente se hai qualche accorgimento da darmi che mi può segnare la via.

    ciao
    antonio
  • Re: Riordino di una lista di dati in una Combo

    La tabella non devi crearla da VBA TU falla fissa per alimentare le combo è così che si deve fare.
    Cancellarla tutte le volte... da vedere se serve... ma è 1 riga di codice.
    Il sort SQL non posso credere tu non lo abbia mai fatto... ORDER BY...
  • Re: Riordino di una lista di dati in una Combo

    Si Alex, non si possono trascurare i tuoi consigli. Ho svolto così il mio compito:
    Private Sub CasellaCombinata117_GotFocus()
    Dim nextfile As String
    nextfile = Dir(Cartella_Ricerca & "*_be*.mdb")
    If Len(Trim(nextfile)) = "" Then Exit Sub
    Dim rsL As DAO.Recordset
    Set DB = CurrentDb
    DB.Execute "CREATE TABLE Lista_Dir (File STRING);" ' più tardi la lascio in stand by per altri fini eventuali
    Set rsL = DB.OpenRecordset("Lista_Dir", dbOpenDynaset) 'Apre tabella direttori
    Do While nextfile <> "" ' copio la lista dei file dalla direttory in tabella
    rsL.AddNew
    rsL!file = nextfile
    rsL.Update
    nextfile = Dir
    Loop
    rsL.Close
    Me!CasellaCombinata117.Dropdown
    ' la combo ha come Origine riga SELECT Lista_Dir.File FROM Lista_Dir ORDER BY Lista_Dir.File DESC;
    ' e come Tipo origine riga la tabella/query
    ' uscendo dal controllo cancello la tabella
    End Sub

    grazie Alex
    antonio cuomo
  • Re: Riordino di una lista di dati in una Combo

    Perché vuoi creare una tabella tutte le volte... prova a pensarci ...
  • Re: Riordino di una lista di dati in una Combo

    Mi stai dicendo di azzerarla semplicemente e ripopolarla o magari di copiarne la struttura in un'altra vuota?
    corretto?
    Ricordo che in dBase III c'era il comando "zap" per eliminare tutti i record, ma era la preistoria.
  • Re: Riordino di una lista di dati in una Combo

    Non riesco a seguire i dettagli e la logica del VBA proposto da antocuomo, ma credo di concordare con la sostanza di @Alex. Una tabella, anche se di "poco valore" sta là con i suoi dati, tu te ne servi per la tua casella combinata (magari la ordini come preferisci) e finisce lì il discorso...spero di non essere andato fuori tema...
  • Re: Riordino di una lista di dati in una Combo

    antocuomo ha scritto:


    Mi stai dicendo di azzerarla semplicemente e ripopolarla o magari di copiarne la struttura in un'altra vuota?
    corretto?
    Ricordo che in dBase III c'era il comando "zap" per eliminare tutti i record, ma era la preistoria.
    Parti dal fatto che se non studi le basi farai fatica facendo oltretutto strade assurde...
    Crea la tabella è la popoli con i dati ... accertati che veramete serva vuotarla...
    Se serve:
    
    Dbengine(0)(0).Execute "DELETE * FROM NomeTabella"
  • Re: Riordino di una lista di dati in una Combo

    Si, mi conviene vuotarla e lo faccio ad ogni accesso alla routine.
    Questo mi garantisce di avere sempre dati attendibili in quanto si tratta di una direttory con accesso da più direzioni.
    La procedura ora mi funziona e con le dritte ricevute.
    Per quanto riguarda lo studio, tu dici una cosa santa, ma questo mi costringerebbe ad un approfondimento sistematico su un'ampia scala.
    Io non svolgo attività di programmazione professionale, ma dilettantistica e occasionale legata ad un mio SW che tra l'altro è divenuto piano piano un oggetto di cui non se ne può fare a meno per la nostra associazione.
    Approfittando della vostra disponibilità e tua in particolare, anche se mi piace moltissimo questo mondo, devo andare avanti così: arrancando e facendo due passi avanti ed uno indietro come nel tango.
    Un abbraccio.
    Ciao a tutti
    antonio cuomo
Devi accedere o registrarti per scrivere nel forum
12 risposte