08/12/2022 - @Alex ha scritto:
Quello è un discorso differente…
Si risolve usando le VALIDATION ROULES e la gestione errori, ovvero nella textbox di inserimento N° Records inserisci >0 and <100
Non accetterà valori diversi e restituisce errore su Form error che va gestito.
Oppure ancora più semplice:
if valore<0 or Valore>100 then
Msgbox “errore numero”
exit function
end if
Tuo Ciclo…
E' una delle soluzioni a cui avevo pensato, ma poi sorge il problema se il numero deve essere superiore.
Però fattispecie facilmente superabile con la possibilità di sblocco del numero massimo dei record inseribili e semplice da gestire a livello di codice. E penso che alla fine adotterò questa via.
I dati dovrebbero essere immessi giornalmente, e questa funzione specifica dovrebbe essere usata solo nei casi in cui bisognasse archiviare una sostanziale quantità di dati presenti nel cartaceo, nella migrazione da archivio analogico ad archivio digitale.
Una volta creati i record, riempiti con tutti gli elementi in comune, poi o manualmente o con query di aggiornamento apposite, si andrebbero ad aggiungere tutti i dati diversi tra di loro.
A livello concettuale è semplice, fino a quando non ti imbatti in quegli errori che gli anglosassoni chiamano “le dita grasse”.
Quindi l'unica via veramente percorribile è quella di evitare il problema a monte.
Giusto per amor della conversazione e per analizzare eventuali soluzioni alternative, tra le varie soluzioni a cui avevo pensato era quello di stoppare il ciclo con una combinazione dei tasti.
Però, se ben ricordo, (e correggimi se sbaglio) access quando interagisce con le tabelle, non c'è modo di farlo “rimanere in ascolto” di eventuali immissioni esterne, quindi non è una strada percorribile.
Inoltre, mi sono divertito a fare varie prove e per scrivere 32767 nuovi record (ciclo creato con variabile integer) impiega meno di 4 secondi e per scrivere un milione di record, impiega circa 2 minuti e 53 secondi.
Quindi, nel tempo che intercorre tra accorgersi dell'errore, ricordare la combinazione dei tasti e digitarli nel modo giusto, il danno è già consistente. Ed anche per questo motivo il break non è percorribile.
Avevo pensato alla proprietà maschera formattata delle text box, ma è scomoda e non mi piace. E comunque se al posto di 99 venisse scritto 999 saremmo punto a capo.
C'è la possibilità della transazione, ma alla fine non mi risolve il problema.
Avevo pensato anche ad un semplice avviso tipo “Ehi bello, guarda che stai ad inserire un milione di righe. Poi te le dovrai cancellare a mano”, ma oltre alle dita grasse, esiste anche il prosciutto sugli occhi..
Comunque penso che dovrò inserire anche un campo dove archivio la data di immissione del record, così da poter eliminare da front end i record immessi erroneamente attraverso una semplice query di eliminazione parametrica, anche se mi si appesantisce il database.
Comunque al prossimo “amico” che chiama alla due di notte dicendo: "Hey, dormi? Visto quella modifica che mi hai fatto su quel programma facile che sto realizzando con access, beh mi ha aggiunto migliaia di record", gli taglio le dita( grasse).