Riproporre ultimo record inserito in una tabella

di il
6 risposte

Riproporre ultimo record inserito in una tabella

Buon giorno,

praticamente registro le bolle che mi arrivano,
le bolle hanno solitamente più righe.
Alla fine mi stampo un report in cui raggruppo le righe uguali sommando la quantità.

Per velocizzare l'inserimento vorrei che nel nuovo record si presentassero i dati dell'ultimo inserito.

Ho provato con dLast()

Problema:
1) nelle combo box tipo nome fornitore non riesco a ripescare l'ultimo inserito. (non saprei proprio come fare)
2) nelle righe delle dimensioni se inserisco un dato ed esco dalla procedure e rientro mi si presenta correttamente l'ultimo inserito, ma se continuo senza uscire mi presenta sempre il penultimo ma non l'ultimo.
3) per conferma punto 2) - mentre inserisco il nuovo record si presenta già il nuovo record riportando l’ultimo inserito, ecco perché una volta finito l’inserimento mi si presenta il penultimo.
Quindi come fare in modo che non mi si presenti il nuovo record mentre ancora sto inserendo dati? Ma far sì che il nuovo record si presenti solo dopo aver concluso l’inserimento?
Uso:
in finestra delle proprietà
campo valore predefinito
=DLast("[arr_spe]";"[001_qArrivo_ins]")


combo box in finestra proprietà
origine riga:
SELECT [101_tblFornitori].[for_Id], [101_tblFornitori].[for_ana] FROM 101_tblFornitori ORDER BY [for_ana]; 
vedi allegati
dlast codice dove l'ho messo
dlast codice dove l'ho messo


qui mentre inserisco il nuovo record mi riporta già l'ultimo che in realtà sarà il penultimo una volta inserito il nuvo.
qui mentre inserisco il nuovo record mi riporta già l'ultimo che in realtà sarà il penultimo una volta inserito il nuvo.

6 Risposte

  • Re: Riproporre ultimo record inserito in una tabella

    Se non vado fuori tema, io piuttosto che impazzire a trovare funzioni complicate, mi avvalgo della combinazione tasti CTRL+' (apostrofo) che consente di replicare il valore del record precedente. Se ci prendi un po' la mano, ti accorgerai che ti torna utilissimo.
  • Re: Riproporre ultimo record inserito in una tabella

    Definire "Ultimo record" è un concetto relativo che si dimentica di definire dando per scontato che...
    Purtroppo serve ragionarci e non lasciare al "caso"..., ad esempio basta cambiare il criterio di Ordinamento ed il Record precedente magari non è più l'ultimo ma il primo...!

    Detto questo, se il record ha un TimeStamp o un ID progressivo univoco... si potrebbe usare questo criterio, ma serve applicarlo nel momento corretto e nel modo corretto.

    Il modo corretto per applicare un valore "riproposto" è usare la proprietà DefaultValue, questo è l'aspetto fondamentale perchè a differenza della proprietà Value, non genera realmente l'inserimento del NUOVO ma propone solo il valore di default nel caso di NEWRECORD.

    Per questo va capito come gestisci gli inserimenti, e serve identificare come e quando valorizzare la proprietà DefaultValue dei controlli associati ai campi.

    Potrebbero essere necessati 2 eventi, Load e AfterUpdate, in modo che sia su apertura Form ma anche su Nuovo inserimento in caso di inserimenti multipli consecutivi la valorizzazione del DafaultValue sia coerente.

    Conviene leggere un RS sulla Tabella di inserimento in questo modo
    SELECT TOP 1 * FROM NomeTabella ORDER BY CampoTimeDate DESC
    In questo caso viene preso solo 1 Record l'ultimo, in assenza di campo Time/Date, si può usare ID se Progressivo univoco:
    SELECT TOP 1 * FROM NomeTabella ORDER BY IdProgr DESC
    Aperto il RS, si cicla e si assegna alla proprietà DEFAULTVALUE dei controlli associati, escluso la PK se Counter, il valore del Campo puntato dal Recordset.

    Sono 3 righe di codice in tutto, attenzione alla sintassi da usare per l'assegnazione del DefaultValue.
  • Re: Riproporre ultimo record inserito in una tabella

    OsvaldoLaviosa ha scritto:


    CTRL+' (apostrofo)
    grazie interessante.
  • Re: Riproporre ultimo record inserito in una tabella

    @Alex ha scritto:


    Definire "Ultimo record" è un concetto relativo che si dimentica di definire dando per scontato che...
    Purtroppo serve ragionarci e non lasciare al "caso"..., ad esempio basta cambiare il criterio di Ordinamento ed il Record precedente magari non è più l'ultimo ma il primo...!

    Detto questo, se il record ha un TimeStamp o un ID progressivo univoco... si potrebbe usare questo criterio, ma serve applicarlo nel momento corretto e nel modo corretto.

    Il modo corretto per applicare un valore "riproposto" è usare la proprietà DefaultValue, questo è l'aspetto fondamentale perchè a differenza della proprietà Value, non genera realmente l'inserimento del NUOVO ma propone solo il valore di default nel caso di NEWRECORD.

    Per questo va capito come gestisci gli inserimenti, e serve identificare come e quando valorizzare la proprietà DefaultValue dei controlli associati ai campi.

    Potrebbero essere necessati 2 eventi, Load e AfterUpdate, in modo che sia su apertura Form ma anche su Nuovo inserimento in caso di inserimenti multipli consecutivi la valorizzazione del DafaultValue sia coerente.

    Conviene leggere un RS sulla Tabella di inserimento in questo modo
    SELECT TOP 1 * FROM NomeTabella ORDER BY CampoTimeDate DESC
    In questo caso viene preso solo 1 Record l'ultimo, in assenza di campo Time/Date, si può usare ID se Progressivo univoco:
    SELECT TOP 1 * FROM NomeTabella ORDER BY IdProgr DESC
    Aperto il RS, si cicla e si assegna alla proprietà DEFAULTVALUE dei controlli associati, escluso la PK se Counter, il valore del Campo puntato dal Recordset.

    Sono 3 righe di codice in tutto, attenzione alla sintassi da usare per l'assegnazione del DefaultValue.
    ehm avrai capito che sono un neofita,
    il concetto logico mi è chiaro, ed infatti ho ID progressivo automatico. e quale è l'ultimo record con le problematiche legato all'ordinamento mi è chiaro.
    quello pratico un po' meno.

    ad esempio
    non conosco le abbreviazioni che hai usato, tipo RS, quindi la frase leggere un RS, purtroppo non la capisco,
    PK dovrebbe essere chiave primaria (ho fatto una piccola ricerca prima di scrivere)
    le righe di codice devo scriverle in VBA agli eventi che hai indicato (load e afrerLoad)? nelle proprietà di ogni campo o in quello della maschera?

    ho iniziato ad usare VBA in excel, e qualcosa in access ma roba molto semplice, ma mi piace da matti, lo faccio in buchi di tempo

    grazie mille per la risposta e pazienza,
    se c'è qualche altro post da leggere ben vengano suggerimenti
    saluti
  • Re: Riproporre ultimo record inserito in una tabella

    RS è recordset, devi sicuramente approfondire e tutto va gestito da VBA.
    Gli eventi sono Load e AfterUpdate e, già sbagliare il nome lascia pensare che serve capire meglio anche perché sono da usare quegli eventi.
    Sul codice sicuramente serve un passo in più che solo tu puoi fare con i tuoi tempi, va da se il risultato verrà con le stesse tempistiche.
  • Re: Riproporre ultimo record inserito in una tabella

    Ok, capito,
    non sono un professionista e sono ignorante, ho sbagliato termine,
    access che uso è in italiano, e comunque non so nemmeno cosa vuol dire recordset,
    però dalle tue risposta ho intuito che devo usare VBA e il cod che hai inserito,
    il primo nel caso dovessi utilizzare l'ultimo record per data, e l'altro invece per ID,proverò, intanto grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte