Newsgroup: it.comp.lang.visual-basic
Titolo: (analisi) Ottimizzazione di un programma

Mi aiutate a fare chiarezza?...anzi scrivendo forse mi auto-
chiarisco....
Il problema è sempre il solito...le uTonte di segretarie che
sputtanano anche i migliori programmi (ed il mio non lo è figuriamoci
che combinano)
Problema di partenza.
gestire abbonamenti ad un bollettino informativo (un giornalino di
musica classica).
L'utente paga...gli viene rilasciata quietanza....per convenzione
l'abbonamento anche se lo fai il 2 Aprile...decorre dal 1 maggio...il
giornale te lo spediscono all'incirca il 15 del mese!
Dove mi fà "arrosti" l'impiegata/e (spesso sono in due a combinare
casini)
a registrare i rinnovi...a gestire le spedizioni
C'è una tabella Contratto...collegata all'anagrafica (intestatario e
beneficiante)...ed una MovimentiAbbonamento...
in teoria li l'utonta registra il pagamento....
Mi sono reso conto che la nuova tipa NON FA nuovi movimenti(meno male
me ne sono accorto quasi subito!)....
ma siccome gli fa fatica....modifica sempre il solito
movimento....aggiustando la data ed il flag del movimento saldato!
Morale...lo storico di un cliente non esiste.....
mi direte...Elimina la possibilità di modifica!
...era nato così....ma impiegate maldestre non facevano altro che
chiamare per registrazioni errate ( e dire che hanno calendario per
scegliere date...e recentemente anche l'opzione di calcolo automatico
della nuova scadenza)...
Spiegare che dovevano "stornare" le registrazioni errate era un bagno
di sangue (consentire il delete poi...equivaleva ad un suicidio)
Quindi come renderlo ancora più a prova di stupido?
Come mantenere uno storico dei pagamenti a prova di grullo?(varie
soluzioni che mi passano per la mente implicano una marea di codice da
scrivere in tabelle che l'utonto non vede)
ma sopratutto come mantenere un sistema di controllo della prossima
scadenza che non passi per fargli imputare una nuova tabella?
(30 gg prima della scadenza mi deve mettere in una tabella ed in un
report gli abbonamenti in prossima scadenza...alla scadenza in una
tabella ed in report abbonamenti scaduti....dopo 20 gg nella tabella
"sospesi" con tanto di generazione della lettera di sospensione del
servizio.....
Oggi tutto questo lo fa cercando l'ultimo movimento più recente
SALDATO e da quello calcolando i 6 mesi o l'anno...se questa me lo
mette sempre NON saldato...non segnala nulla!)
perchè mi faccio tutte queste palle mi direte?
perchè ci tengo ai lavoratori di questo cliente!
Lavorano part time...gli ho studiato tutto per durare meno fatica
possibile e cliccare meno roba possibile....però ora se si
approfittano della mia disponibilità...mi arrabbio eh! E comicio anche
io a far proliferare tabelle e form!
ghghgh! OVVIA!

Quello che chiedi tu �
<pomposo mode>
un sistema di verifica della correttezza dei comportamenti.
</pomposo mode>
Ogni riga modificata deve essere scritta da qualche altra parte in
duplice copia: una con al riga originale ed una con la modifica effettuata.
Le due righe costituiscono l'oggetto atomico e sono legate da un codice
che gli assegni tu (ad esempio un progressivo), dal nome dell'utente che
le ha modificate, da data\ora della modifica.
Poi si dice "Signori, la procedura per immettere un nuovo utente � la
seguente... bla bla bla... altre procedure sono deprecate".
A quel punto se la segretaria di turno vuol fare la furba, in 2 secondi
esatti tu risali a data, ora, nome utente.
Noi usiamo questo metodo in ambiente bancario e ci troviamo benissimo.
Io implementerei questo sistema... senn� vai troppo ad incasinarti e
rischi, alla fine, di trovarti con il committente che s'incazza perch�
il tuo sw non funziona bene (ed invece la colpa � delle segretarie).
Nicola

 Nicola
temevo la tua risposta!!!(mi immaginavo cose simili)....ed un "sistema
bancario" per gestire l'abbonamento ad un giornalino...imho rasenta
proprio la follia!
Però è vero anche che il mondo del lavoro è sempre più folle!
Alla fine l'archivio di "controllo" sarà più grande dell'archivio
dati!!!

 Nicola
temevo la tua risposta!!!(mi immaginavo cose simili)....ed un "sistema
bancario" per gestire l'abbonamento ad un giornalino...imho rasenta
proprio la follia!
Per� � vero anche che il mondo del lavoro � sempre pi� folle!
Alla fine l'archivio di "controllo" sar� pi� grande dell'archivio
dati!!!
-------------------------
Eh si, invece di 10 Mbyte sara' di 100 Mbyte
Capirai, con i dischi di oggi potrebbero essere problemi
Scherzi a parte, anche se ti servisse una sola volta, credo che un sistema 
di tracciamento delle modifiche sarebbe l'ideale per tutti i sistemi di 
questo mondo
Certo che non sempre puo' valer la pena di implementarlo, pero' poter dire 
chi ha fatto e cosa e' stato fatto e qual'era lo stato precedente, di 
qualsiasi modifica sarebbe un plus di grande valore
C'e' da dire che se usi un db un minimo serio, che abbia la possibilita' di 
gestire dei trigger o comunque delle porzioni di codice che vengono avviate 
all'avverarsi di certe condizioni, potresti implementare in modo trasparente 
per l'applicativo
Ho usato Firebird in accoppiata ad IbExpert (db manager) e ti posso dire che 
IbExpert ha una funzione per generare in automatico sia le tabelle per 
tracciare le modifiche sia i trigger per gli inserimenti, cancellazioni, 
modifiche, di ogni tabella presente nel db
In 30 secondi prepari tutta la struttura sottostante, poi dal gestionale ti 
basta una form e quattro query messe in croce per evidenziare chi ha fatto 
cosa sulla tabella desiderata
Ciao
RobertoA

 servizio.....
Forse non ho capito bene il problema ma:
1) non permetti la modifica delle date se l'abbonamento � stato inserito da
pi� di XX giorni o comunque � gi� in corso (eventualmente lo permetti ad un
super-utente loggando solo l'operazione)
2) Gli abbonamenti in scadenza, dovrebbe essere una semplice query sui
movimenti, non credo ci sia bisogno di una tabella da tenere sincronizzata.
Cio� il movimento sar� tipo:
AbbonatoID, DataInizio, Descrizione, DataScadenza
1, 20/05/2009 Abbonamento Annuale	20/05/2010
2, 20/05/2009 Abbonamento 2anni		20/05/2011
Con una query ti tiri fuori quelli che scadono entro xx giorn

 movimenti, non credo ci sia bisogno di una tabella da tenere sincronizzata.
Io ho capito che il problema sia dato dal fatto che le segretarie non
mettano a "Vero" un flag che indica se l'abbonamento sia stato
finalizzato o meno, per cui non pu� capire dalla data se l'abbonamento �
in scadenza o, pi� semplicemente, non � mai stato finalizzato, restando
di fatto in sospeso.
Il problema, secondo me, � di tipo organizzativo e non informatico.
Al dipendente si comunica la procedura (la "best practise") e questo
deve seguirla scrupolosamente. Se non lo fa deve essere richiamato dal capo.
L'unica soluzione, se non si ha con i dipendenti un rapporto di grande
fiducia, � quella di implementare un sistema che tenga traccia dei
movimenti fatti dal dipendente.
Questo vale in ambito bancario come nel piccolo call center o in
un'azienda di selezione del personale.
Una volta create le routine necessarie, queste ti torneranno utili in
progetti futuri.
Nicola

Nicola Ottomano ha scritto:
[CORREZIONE]
(la "best practise") -- > (la "best practice")
 Nicola

 deve seguirla scrupolosamente. Se non lo fa deve essere richiamato dal capo.
Sempre che l'utilizzatore non sia il capo e ti chiede che 2+2 sia =5 :)
Che � tutto fuorch� raro...

 che combinano)
[Cut]
ma non e' + semplice fare in modo che un record salvato diventi
inviolabile (edit bloccato), dal relativo record l'unico bottone attivo e'
"nuova scheda" che crea una nuova scheda clonando i dati
presenti: se nome&cognome sono identici al momento del
"registra", nella "nuova" scheda viene registrato l'ID della vecchia
scheda (in modo da creare la relazione) e l'ultima scheda
declassata ad "archiviata" (=non piu' attiva), in caso contrario
(nome diverso) viene registrata come nuova (e senza relazione).