Newsgroup: it.comp.appl.access
Titolo: DLast o DFirst sono affidabili al 100% ?

Salve.
Le funzioni di aggregazione Funzionano o GeneralmenteFunzionano?
Sono due concetti molto differenti.
Io potrei dire per esempio che le uso spesso e che funzionano,
ma non in senso assoluto. Diciamo che GeneralmenteFunzionano!
 
L'ultima che mi è capitata è da sbattersi la testa contro il muro!
 
Un DLast("NumFattura", "Fatture") nel mio portatile da 6 mesi funziona
andando a prendere l'ultima fattura, (dove NumFattura è un Testo tipo "080/19")
 
nel Pc del cliente, stessa versione di Window e di Access, 
DLast.... va a prendere la prima!!!....quindi commette errori nel numero progressivo fatture! Ma ci si può fidare???......

Le funzioni di aggregazione FUNZIOANNO in senso ASSOLUTO.
Se non funzionano sei tu che stai perdendo qualche dettaglio... ma se non fai debug e non cerchi di capire perché è evidente che dare la colpa alle funzioni risulta semplice...
 
Ti suggerisco di mettere in discussione il tuo operato e trova il motivo.
 
@Alex


ovviamente sono affidabili...se si sa cosa fanno e come vanno usati.
 
se la tua esigenza è ricavare l'ultimo numero fattura per calcolarne il 
successivo sei fuori strada con l'uso del dlast
a meno che non lo applichi su una query che ti ordini i numeri fatture 
in crescendo
 
Dlast ti recupera l'ultimo record della tabella fatture e non è detto 
che sia quello che ti contiene il numero fattura maggiore.
 
eventualmente dovresti usare Dmax e cmq il fatto di avere il numero 
fattura di tipo testo con /anno mi fa dubitare che anche il dmax sia 
utile al tuo scopo visto che avresti  che 001/20  verrebbe considerato 
antecedente a 999/19
 
dovresti quindi usare il dmax in combinazione anche con il filtro per 
anno di fatturazione, eventuali sezionali, eventuali bis
 
ciao
BFS
 

Giustissime considerazioni ragazzi... Non avevo fatto caso che 001/20 sara' considerato antecendente al 999/20 
(In realta' mi sono sempre affidato alla numerazione automatica per l'ordine cronologico. Questa e'la prima volta che opero in altro modo.)
Quello che mi ha fatto impazzire è che il sistema ha funzionato per sei mesi nel mio pc. Sara' che i record inseriti dal cliente erano ordinati secondo un criterio cronologico opposto ai numeri fattura. 
L'importante e' che io sia sicuro di fidarmi di questi strumenti (una volta avevo letto Alex che storceva un po' il naso sul loro conto... ma non ricordo più il contesto). 
Grazie per le risposte.
Indaghero'... 

Alex...uno scrupoloso debug e' la prima cosa che faccio! Ma se le routine sono identiche... sono copie... ho poco da debuggare. 
L'errore che ho messo e' stato quello di basarmi su una tabella di due soli record. Dove per DLast, la 278 era precedente alla 277. 
E per DFirst, l'ultima fattura la 277! 
MA in TABELLA io li leggevo in Ordine:
277
278
Ho sbagliato a fidarmi di cio' che vedevo e di due record soltanto...
Indaghero'


non puoi dare per scontato che un cliente dia sempre un ordine 
cronologico alle fatture e quindi di trovartele sempre in ordine 
crescente nella tabella
 
quindi dlast in ogni caso è una pessima scelta per la determinazione del 
numero fattura.
 
 
BFS

Il debug, lo dice labparola non è solo seguire il codice ma tutto quell'insieme di verifiche che ti consentono di trovare il problema... che come sempre accade è causato da chi sviluppa.
 
Nel tuo caso hai usato la funzuone erreata ma principalmente non hai letto la guida che è estremamente chiara.
 
https://support.office.com/it-it/article/funzioni-dfirst-e-dlast-adb06169-bf49-4f80-bf04-1e4b5a48a8a7
 
 
Dalla Guida ti riporto:
 
Nota:  Se si vuole restituire il primo o l'ultimo record in un set di record (un dominio), è necessario creare una query in ordine crescente o decrescente e impostare la proprietà .PrimiValori su 1. Per altre informazioni vedere l'argomento sulla proprietà .PrimiValori. Da un modulo di Visual Basic, Applications Edition (VBA) è anche possibile creare un oggetto ADO Recordset e usare il metodo MoveFirst o MoveLast per restituire il primo o l'ultimo record in un set di record.
 
Detto questo... 
 
@Alex

gabria...@gmail.com
 wrote on 07-08-19 :

Le Domain Functions funzionano regolarmente... sempre.
Però bisognerebbe non usarle MAI: sono efficaci ma la loro
efficienza, paragonata ad alternative VBA/Query, è molto bassa.
 
Vengono insegnate negli asili nido e alle scuole elementari ;-) ;-) ;-)
 
Bruno