Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Ordinamento records nella maschera

  1. #1
    mailman_1969 non  in linea Scolaretto
    Buonasera,
    in una maschera di inserimento dati vorrei che dopo ogni salvataggio di nuovi records, il primo della lista sia l'ultimo record inserito.
    Ho scritto queste tre righe di codice nella sub del tasto salva:
    Private Sub cmdfrmOLsalva_Click()
    On Error GoTo Err_cmdfrmOLsalva_Click
        
        DoCmd.RunCommand acCmdSaveRecord
        Me.OrderByOn = False
        Me.OrderBy = "IDtabOLid DESC"
        Me.OrderByOn = True
        
    Exit_cmdfrmOLsalva_Click:
        Exit Sub
    
    Err_cmdfrmOLsalva_Click:
        MsgBox Err.Description
        Resume Exit_cmdfrmOLsalva_Click
    
    End Sub
    
    Dove IDtabOLid e' il campo contatore. Il sistema funziona, ma vorrei sapere se e' il modo corretto di agire o se si puo' fare in altro modo (visto che mi e' stato detto in altro post "...anche se funziona non e' detto che sia fatto bene..." .
    Grazie in anticipo

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Se lo imposti nella maschera fisso non devi fare nulla.
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    mailman_1969 non  in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Se lo imposti nella maschera fisso non devi fare nulla.
    In che senso "lo imposti nella maschera fisso"? Intendi nelle proprieta' della maschera?

  4. #4
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Si ovvio dove altro...?
    ℹ️ Leggi di pi su @Alex ...

  5. #5
    mailman_1969 non  in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Si ovvio dove altro...?
    Buongiorno Alex,
    questa mattina ho verificato quanto da Te suggerito, la form aveva gia' impostato l'ordinamento per il campo contatore (IDtabOLid DESC):


    ma dopo ogni inserimento il nuovo record finisce in fondo alla lista .
    Mentre io vorrei che fosse cosi' dopo il salvataggio:
    Sbaglio qualcosa?
    Ultima modifica di mailman_1969; 26-03-2021 09:33 

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Prova allora a fare semplicemente un Me.Requery.
    ℹ️ Leggi di pi su @Alex ...

  7. #7
    mailman_1969 non  in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Prova allora a fare semplicemente un Me.Requery.
    Ok, funziona.
    Per mia conoscenza personale, perche' occorre fare un requery se la maschera e' appoggiata direttamente alla tabella e non a una query?

  8. #8
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Il Requery serve per far rileggere alla Maschera tutti i dati, siano essi da Tabella che da Query, altrimenti, come hai visto l'inserimento non subisce il processo di Ordinamento, o di filtro se ci fosse, che viene eseguito solo 1 volta all'esecuzione dell'estrazione dati.

    Tuttavia, bene capire che i dati della Tabella sono si collegati alla maschera, ma se ad esempio venisse inserito un record via Codice, la maschera non lo visualizzerebbe, questo perch non presente un processo di RILETTURA dei dati continua, solo alcune funzioni generano la rilettura completa.
    Ad esempio l'uso di ORDERBYON oppure FILTERON sono tra questi, nel tuo caso infatti sarebbe bastato anche un
    Me.OrderByON=True
    
    Tuttavia in questo caso meglio il Requery in quanto genera un'azione in meno... e l'OrderBy viene applicato di default, altrimenti verrebbe generato il Requery e poi l'OrderBy...!
    ℹ️ Leggi di pi su @Alex ...

  9. #9
    mailman_1969 non  in linea Scolaretto
    Ok, grazie

  10. #10
    mailman_1969 non  in linea Scolaretto
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Prova allora a fare semplicemente un Me.Requery.
    Problema: avendo messo il Requery nella sub del comando salva, quando devo modificare un record che non e' l'ultimo inserito, al salvataggio, la maschera fa ovviamente il riordino e si porta sull'ultimo record, mentre, io avrei bisogno di non spostare il focus dal record corrente.
    Se condizionassi il requery solo se il record corrente e' l'ultimo inserito, potrebbe essere una soluzione valida?

    Ho provato questa soluzione e funziona...
    Private Sub cmdfrmOLsalva_Click()
    On Error GoTo Err_cmdfrmOLsalva_Click
    
    Dim indice As Integer
    
        DoCmd.RunCommand acCmdSaveRecord
        
        indice = Nz(DMax("IDtabOLid", "TabOreLavorate"), 0)
        If indice > frmOLIDtabOLid.Value Then GoTo Exit_cmdfrmOLsalva_Click
        
    Me.Requery
            
    Exit_cmdfrmOLsalva_Click:
        Exit Sub
    
    Err_cmdfrmOLsalva_Click:
        MsgBox Err.Description
        Resume Exit_cmdfrmOLsalva_Click
        
    End Sub
    
    Si potrebbe fare in altro modo?
    Ultima modifica di mailman_1969; 26-03-2021 16:53 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 3
    Ultimo Post: 04-07-2016, 16:50
  2. Collegamenti records di una maschera a tebelle
    Da simonetta nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 14-11-2014, 16:29
  3. maschera continua con dati da piu records
    Da frugo nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 25-10-2014, 05:23
  4. Access: Query con pi records nella stessa data
    Da Elimar nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 07-08-2009, 16:55
  5. [Access] Filtro e ordinamento records
    Da Serafino nel forum Microsoft Access
    Risposte: 12
    Ultimo Post: 16-09-2007, 11:24