Newsgroup: it.comp.appl.access
Titolo: Ore a scalare per contratti di assistenza

Ciao a tutti,
tanto per cambiare sono sempre qui a domandarne una !
Ma d'altronde il NG non si evolverebbe se non ci fosse chi chiede e chi
risponde !
Comunque tralasciando questi piccoli punti da ponderare vengo al mio
quesito.
Ho la neccessità di creare un sistema nel mio database dove possiedo
l'anagrafica dei miei clienti, chemi permetta di inserire il tempo messo nel
dare assistenza ai miei clienti.
Questo perchè alcuni clienti hanno un contratto di assistenza a scalare di
10 ore. Tutte le volte che io effettuo una assistenza inserisco nella
maschera interventi relativa al cliente l'ora di inizio e l'ora fine
intervento.
Vorrei che in automatico il Db mi scalasse dalle ore prepagate del cliente e
mi avisasse quando le ore sono scadute in modo tale da fare rinnovare il
servizio al cliente prima di offrire assistenza.
Premetto che alcuni clienti hanno un contratto assistenza prepagato (10
ore), altri hanno quello semestrale, altri quello annuale, altri hanno
quello mensile.
Dovrei realizzare un sistema in modo tale da poter gestire indifferentemente
dal tipo di contratto del cliente le ore di intervento effettuate presso di
lui.
Cosa mi consigliate di fare. ?
Mi ero incimentato a farlo ma poi non sono più riuscito perchè mi sono perso
in un circolo vizioso.
Se qualcuno ha un idea o un esempio mi faccia un colpo perfavore.
Grazie a tutti.
Ciao.
Con simpatia.
Marco.

 ha scritto nel messaggio
news:XgSt9.71147$%M1.18...@twister2.libero.it...

Io ho capito che tu hai due tipi di contratti di assistenza: un tipo
temporale che quindi scade alla data di scadenza e prescinde da quante ore
di intervento fai; poi ho invece ci sono contratti di assistenza che possono
esaurirsi prima della data di scadenza nel caso in cui le ore di assistenza
abbiano superato un forfait pattuito.
Se le hai una tabella chiamata Anagrafica che ha una struttura simile a
questa:
IDCliente                    Contatore e chiave primaria
Nome                         Testo
DataContratto            Data/ora
ScadenzaContratto    Data/ora
TipoContratto            Numerico
OreForfait                  Numerico
Dove TipoContratto avrà valore 1 per i contratti che prevedono un forfait di
ore di intervento eun valore diverso da 1 per gli altri tipi di contratto
(annuale, mensile, semestrale trimestrale ecc,).
Il campo OreForfait sarà diverso da zero solo se TipoContratto = 1.
Se la tabella degli interventi si chiama Interventi ed ha una struttura
simile a questa:
IdIntervento                Contatore e chiave primaria
IDCliente                    Numerico
DataIntervento            Data/ora
OraInizio                    Data/ora
OraFine                      Data/ora
Se le due tabelle sono in relazione uno-a-molti in base ai campi IDCliente.
La query che ti darà la lista dei clienti che hanno una data
ScadenzaContratto minore della data odierna o hanno già usufruito delle ore
di assistenza pattuita (clienti con TipoContratto =1) avrà un codice SQL
simile a questo:
SELECT Anagrafica.*,
IIf([TipoContratto]=1,DSum("(OraFine-OraInizio)*24","Interventi","IDCliente=
" & [IDCliente] & " And DataIntervento>=#" &
Format([DataContratto],"dd/mm/yyyy") & "# And DataIntervento<=#" &
Format([ScadenzaContratto],"dd/mm/yyyy") & "#"),0) AS OreIntervento
FROM Anagrafica
WHERE
(((IIf([ScadenzaContratto]<Date(),1,IIf((IIf([TipoContratto]=1,DSum("(OraFin
e-OraInizio)*24","Interventi","IDCliente=" & [IDCliente] & " And
DataIntervento>=#" & Format([DataContratto],"dd/mm/yyyy") & "# And
DataIntervento<=#" & Format([ScadenzaContratto],"dd/mm/yyyy") &
"#"),0))>[OreForfait],1,0)))=1));
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Innanzi Tutto volevo ringraziarti per la risposta molto precisa ed
esauriente.
Quello che mi domando è come fare a sottrarre ogni volta le ore di
intervento effettuate. (Quale è la formula da usare per sottrarre al valore
delle ore disponibili il valore delle ore di intervento effettuate.
Forse il codice SQL che hai postato lo fa ma io di SQL non capisco molto .
Poi volevo chiederti , se non è meglio secondo te creare una tabella
"contratti" che contiene tutti in contratti stipulati invece di inglobarla
nella tabella anagrafica.
Da come penso io, credo che la soluzione della tabella contratti è utile
come storico di tutti i contratti stipulati dal cliente.
Magari nella tabelle anagrafica si può creare un campo che contenga il
valore delle ore residue che serviranno per calcolare quando è neccessario
rinnovare il contratto.
Non so se sbaglio a pensare così ma vorrei sentire il parere tuo e/o quello
di altri.
Come sarebbe meglio strutturare la cosa ?
Grazie cmq ancora molto.
Ciao
Con simpatia.
Marco

 Marco
--


X Roberto o chi ha letto tutti i post del problema.
Ciao,
allora se io ho capito bene non mi occorre assolutamente creare pulsanti che
sottragono un certo
valore ad un campo ore disponibili, in quanto tramite la query posso
verificare il tutto.
Quindi se io su evento apertura della maschera interventi tecnici dovessi
far eseguire la query, da te postata sotto forma sql, riuscirei a capire
quante ore sono disponibili e quall'ora non ce ne fossero più comunicarlo
tramite un avviso in modo tale da sapere che occorre far rinnovare il
contratto.
Spero di aver capito tutto in modo corretto e se fosse così possiate darmene
conferma.
Grazie con simpatia Marco.
(x Roberto : mi sa che è una vita che lavori con Access perchè ti vedo molto
in gamba! Bravo.)

 in gamba! Bravo.)
Un paio d'anni, ma alle spalle ho molti più anni di esperienza nel campo
dell'informatica (o cominciato quando forse tu non eri nato: era il lontano
settembre 1963).


 Roberto
Non ero effettivamente nato all'epoca. Sono nato 12 anni dopo.
Hai studiato qualche manuale in particolare o č frutto di esperienza ?
A proposito tutto funziona a meraviglia solo che se apro la query nel
passare sopra alla
voce OreIntervento (senza cliccare ma solo passando sulla voce con il mouse)
mi compare questo messaggio di errore : L'epressione immessa come parametro
di query
ha provocato il seguente errore : L'oggetto non contiene l'oggetto di
automazione "DataIntervento".
A cosa si riferisce ?
Grazie della pazienza e delle risposte sempre molte esaurienti.
Con simpatia. Marco.

 Con simpatia. Marco.
--
