[Risolto] Valore predefinito ultimo record in maschera su campo Data

di il
17 risposte

17 Risposte - Pagina 2

  • Re: [Risolto] Valore predefinito ultimo record in maschera su campo Data

    CONCLUSIONI:

    Il valore predefinito in maschera della data dell'ultimo record della tabella, lo posso impostare in due modi:

    1.  Dalla finestra delle proprietà del controllo, impostando il valore predefinito con funzione aggregatrice DMAX , ponendo la condizione WHERE Dlast sul campo PK con num progressiva:
    =DMAX("Data";"DATI";"N°Operazione=" & DLAST("N°Operazione";"DATI"))

          esattamente come indicava Alex. Sbagliavo credendo di aver risolto sostituendo =DMAX("Data";"DATI") con =DLast("Data";"DATI"): aveva funzionato all'inizio, ma poi continuava a ripropormi la stessa data anche inserendone una nuova in ultimo record.

        2.  Attraverso codice,  creando il recordset, e concatenadone  il valore con I doppiapici con l'ausilio del carattere ascii chr(34), in modo che il valore (data) risulti nel DefaultValue delle prorietà del controllo racchiuso tra doppie virgolette, come si fa per inserire valori costanti:

        If Me.NewRecord Then
         Dim rs As dao.Recordset
         Set rs = DBEngine(0)(0).OpenRecordset("SELECT TOP 1 Data From DATI ORDER BY [N°Operazione] DESC", dbReadOnly, dbOpenDynaset)
           If Not rs.EOF Then Me.Data.DefaultValue = "=" & Chr(34) & rs.Fields("Data").Value & Chr(34)
         rs.Close
         Set rs = Nothing
     End If

    Il codice mi funziona sia su evento corrente, sia su caricamento della maschera (almeno per ora).

    Ringrazio tutti per la partecipazione con suggerimenti e osservazioni. Alex in modo particolare per la esauriente soluzione illustrata in ogni sfaccettatura.

    Alla prossima. Ciao

    edit 04/11/2024: Mi correggo: Funziona perfettamente solo su Sub Form_Current(), nel senso che quando lancio nuova registrazione su nuova data, anche senza aver chiuso la maschera, mi riprone l'ultima modificata, man mano che aggiungo record.

    Viceversa, se evento load, continua a ripropormi il valora di apertura; se aggiungo una nuova data, non le prende in considerazione.

  • Re: [Risolto] Valore predefinito ultimo record in maschera su campo Data

    Importante è che hai risolto…

    Solo per chiarire.

    Dmax è una funzione preconfezionata (nel senso che l'ha scritta l'impiegato di bill) che altro non fa che andare a pescare il valore massimo di quel campo di quella tabella.

    Nulla vieta di crearsi una funzione e darla in pasto al posto di dmax, io prediligo crearmi le funzioni se devono fare qualcosa di differente o integrativo.

    Se tu all'apertura setti una variabile, che io per errore ho chiamato defaultdata dovevo chiamare paperino, e la setti ad oggi (dmax potrebbe essere dell'anno scorso)  e al valore di default metti = paperino che è di tipo datetime in modo da non perderti in formattazioni varie (come disse il mio gran maestro, se manipoli date usa variabili di tipo data, se manipoli numeri usa variabili di tipo numerico ecc…)

    Appena cambi la data, al post record, setti paperino al valore della data che stai inserendo.

    Risultato:

    Avvii il form inserimento e setti la variabile (se sei in modifica paperino=data record corrente altrimenti oggi)

    Se stai inserendo alla data oggi meno tre giorni, cambi una sola volta la data ad oggi meno tre giorni, al salvataggio dati e nuovo paperino=oggimenotregiorni

    Defaultvalue=paperino (questo non lo tocchi piu)

    Continui a lavorare con l'ultima data che HAI digitato anche se pincopallo da remoto inserisce record a go go!

    Puoi refreshare, andare a prendere un caffè ma la data sarà srmpre l'ultima digitata e calcolata in una frazione di frazione di secondo senza interrogare il database (e dovuti rallentamento o aggiornamenti dati).

    Forse adesso sono stato più chiaro.

    Al posto di dmax(camo, tabella) dbengine dlast ecc… hai usato solo paperino col comando paperino=controllo.data e lavori direttamente con le date.

    Ma solo perché la funzione di Bill Gates (o dell'impiegato) non ha previsto la tua richiesta.

    Poi, per carità, alla fine con un enunciato sql, la doppia funzione di access, risolvi. Se le funzioni si pagassero io avrei speso di meno (in effetti non ricorro a terzi se posso evitarlo: sono appassionato di fai-da-te).

    P.s. se scrivi la data, selezioni la data e fai ctrl+c e ai successivi record ctrl+v fai prima…

    Appena serve una sql complessa espandiamo la ram?

  • Re: [Risolto] Valore predefinito ultimo record in maschera su campo Data

    02/11/2024 - @Alex ha scritto:


    Secondo me non hai provato quello che ho detto.

    Prova e facci sapere se quanto osservi è reale.

    In realtà mi sono espresso male io, o, per meglio dire, ho inteso chiamare una variabile di tipo data col nome defaultdata inducendo a credere di parlare del parametro default del controllo.

    La prova l'ha fatta l'interessato con esito deludente, non perché il suggerimento fosse errato ma perché era errata l'esposizione del quesito. La data non dipende ne dall'ultimo inserimento ne dal penultimo. Supponendo di inserire corrispettivi mancanti, per ritardo trasmissione dati o qualsivoglia ragione, deve inserire ad una certa data che non può essere estrapolata da sql o last o max. Si accorge che al 5/7/24 non ha inserito i corrispettivi di tre casse del punto vendita x ma è arrivato al 3/11/24. Di default continua con la proposta del 4/11/24, modifica la data al 5/7/24, e verrà proposta, presa da una variabile, finché non cambia data, passando, ad esempio al 9/10/24 e così via.

Devi accedere o registrarti per scrivere nel forum
17 risposte