Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcolo nella query

142 views
Skip to first unread message

Francesca

unread,
Sep 17, 2002, 3:31:06 PM9/17/02
to
Ho una query in cui, inserendo le date di inizio e fine servizio, vengono
calcolati, per ogni anno, i periodi (in giorni) di servizio degli
insegnanti.
Poi con un altro calcolo vengono sommati i periodi di ogni anno e ottengo il
numero totale dei giorni di servizio per ogni anno.
Il problema che si presenta è questo:
Se un insegnante insegna in due scuole, i periodi di servizio si
sovrappongono, e quindi i giorni che coincidono non devono essere sommati,
ma devono essere considerati una volta sola.
C'è un modo per individuare questi giorni che coincidono, o cmq per
risolvere questo problema, avendo io solo le date di inizio e fine?

Spero di essermi spiegata. Grazie in anticipo.
Francesca


Debora

unread,
Sep 18, 2002, 2:07:03 AM9/18/02
to

"Francesca" <francesc...@inwind.it> ha scritto nel messaggio
news:am7vs7$qi5$1...@newsreader.mailgate.org...
Non so come è strutturata la tua query, ma problemi di questo tipo
solitamente si risolvono con un raggruppamento nella colonna
dei giorni.

--
Debora


Alessandro Cara

unread,
Sep 18, 2002, 2:44:29 AM9/18/02
to
Debora ha scritto:

>
> "Francesca" <francesc...@inwind.it> ha scritto nel messaggio
> news:am7vs7$qi5$1...@newsreader.mailgate.org...
> > Ho una query in cui, inserendo le date di inizio e fine servizio, vengono
> > calcolati, per ogni anno, i periodi (in giorni) di servizio degli
> > insegnanti.
> > Poi con un altro calcolo vengono sommati i periodi di ogni anno e ottengo
> il
> > numero totale dei giorni di servizio per ogni anno.
> > Il problema che si presenta è questo:
> > Se un insegnante insegna in due scuole, i periodi di servizio si
> > sovrappongono, e quindi i giorni che coincidono non devono essere sommati,
> > ma devono essere considerati una volta sola.
> > C'è un modo per individuare questi giorni che coincidono, o cmq per
> > risolvere questo problema, avendo io solo le date di inizio e fine?
[cut]

> Non so come è strutturata la tua query, ma problemi di questo tipo
> solitamente si risolvono con un raggruppamento nella colonna
> dei giorni.
debora
non credo che questo sia un problema che si possa risolvere
con un raggruppamento

quello che vuole dovrebbe essere questo
* = periodo osservato
-/+ = periodi registrati (+ utili - inutili)

*****************
1 -------
2 -------++++++
3 ----------++++++++++++-------
4 --------------
5 ---------
6 --------------

con una query non so. Ma, estratti i periodi utili (2,3,4,5),
il resto con poche righe di codice si fa.
--
a.cara

Roberto da casa

unread,
Sep 18, 2002, 4:54:57 AM9/18/02
to

"Francesca" <francesc...@inwind.it> ha scritto nel messaggio
news:am7vs7$qi5$1...@newsreader.mailgate.org...

Io direi di risolvere condue query: la prima di selezione con la quale
effettuare la valorizzazione della durata di servizio per ogni singolo
record; la seconda, basata sulla prima, di raggruppamento che restituisce i
totali delle durate di servizio per anno e per insegnante.

Se i dati sono contenuti in una tabella chiamata Servizio che abbia una
struttura simile a questa:

ID Contatore e chiave primaria
IDInsegnante Numerico
Anno Testo
Inizio Data/ora
Fine Data/ora

Per la valorizzazione al livello di record crea una prima query chiamata
Query1 che abbia il seguente codice SQL:

SELECT Anno, IDInsegnante, DLookUp("ID","Servizio","ID<>" & [ID] & " And
IDInsegnante=" & [IDInsegnante] & " And Inizio=#" &
Format([Inizio],"mm/dd/yyyy") & "# And Fine=#" & Format([Fine],"mm/dd/yyyy")
& "#") AS Uno, DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante="
& [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine>=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Due,
DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" &
[IDInsegnante] & " And Inizio<#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine<#" & Format([Fine],"mm/dd/yyyy") & "# And Fine >#" &
Format([Inizio],"mm/dd/yyyy") & "#") AS Tre, IIf(Not
IsNull([Uno]),IIf(Val([Uno])<[ID],0,[Fine]-[Inizio]+1),IIf(Not
IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","S
ervizio","ID=" & [Tre])))) AS Durata
FROM Servizio;

Quindi crea una query di raggruppamento, che ti restituirà i totali per anno
ed insegnante, che abbia il seguente codice SQL:

SELECT Anno, IDInsegnante, Sum(Durata) AS SommaDiDurata
FROM Query1
GROUP BY Anno, IDInsegnante;

Dovrebbe funzionare. ;-)

--
Roberto

---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Alessandro Cara

unread,
Sep 18, 2002, 5:49:46 AM9/18/02
to
Roberto da casa wrote:
[cut]

Ciao Roberto
ero curioso rispetto alla query da te proposta.
Ho provato a "leggerla" poi ho preferito provarla
Questi sono i risultati (tranne la definizione
della tabella tutto fatto con copiaincolla)

dati tabella
id idinsegnante anno inizio fine
1 1 2002 15/01/2002 20/01/2002
2 1 2002 21/01/2002 23/01/2002
4 2 2002 01/02/2002 20/02/2002
5 2 2002 10/02/2002 21/02/2002
6 2 2002 01/03/2002 10/03/2002
7 3 2002 02/03/2002 10/03/2002
8 3 2002 02/03/2002 10/03/2002
9 3 2002 02/03/2002 11/03/2002

risultato query
Anno IDInsegnante Uno Due Tre Durata
2002 1 6
2002 1 3
2002 2 20
2002 2 4 #Errore
2002 2 10
2002 3 8 8 9
2002 3 7 7 0
2002 3 10

curiosita' a che ti servono uno, due, tre

--
a.cara

Debora

unread,
Sep 18, 2002, 6:51:29 AM9/18/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D884C3A...@blunet.it...
> > Quindi crea una query di raggruppamento, che ti restituirą i totali per

Scusate se mi intrometto, ma dato che serve anche a me, dico la mia:
Franc. sta chiedendo di non sommare giorni uguali, quindi la query deve
avere
un raggruppamento dei giorni in modo che si possano sommare univocamente
in poche parole una specie SELECT DISTINCT dei giorni, x ogni insegnante.
A voi il metodo per ottenerlo. ;-P

--
Debora


Roberto da casa

unread,
Sep 18, 2002, 7:14:05 AM9/18/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D884C3A...@blunet.it...
[CUT]

In effetti c'era un errore su Query1 nel calcolo del campo calcolato Tre: o
modificato Query1 in questa maniera:

SELECT Servizio.Anno, Servizio.IDInsegnante, DLookUp("ID","Servizio","ID<>"


& [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio=#" &
Format([Inizio],"mm/dd/yyyy") & "# And Fine=#" & Format([Fine],"mm/dd/yyyy")
& "#") AS Uno, DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante="
& [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine>=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Due,
DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" &
[IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And

Fine<#" & Format([Fine],"mm/dd/yyyy") & "# And Fine >#" &
Format([Inizio],"mm/dd/yyyy") & "#") AS Tre, IIf(Not
IsNull([Uno]),IIf(Val([Uno])<[ID],0,[Fine]-[Inizio]+1),IIf(Not
IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","S
ervizio","ID=" & [Tre])))) AS Durata
FROM Servizio;

Ho provato ad inserire nella tabella Servizio i tuoi stessi dati ed aprendo
Query1 vedo i seguenti risultati;

Anno IDInsegnante Uno Due Tre Durata
2002 1 6
2002 1 3
2002 2 20

2002 2 4 1


2002 2 10
2002 3 8 8 9
2002 3 7 7 0

2002 3 7 1

che ora misembrano tutti corretti

Ti faccio presente, comunque, che #Errore nella durata del quarto record non
me lo ha dato neppure prima della modifica di Query1: non saprei cosa dirti.

Nel campo calcolato Uno calcolo l'ID dell'eventale record che si sovrappone
completamente al record corrente; se Uno non è Null, forso a zero la durata
se l'ID del record corrente è maggiore del valore del campo Uno, in caso
contrario determino la durata facendo la differenza tra le due date più uno
del record corrente.
Nel campo calcolato Uno calcolo l'ID dell'eventale record che contiene
completamente il record corrente (naturalmente un record che ha
significativo il campo Uno avrà significativo ed uguale anche il campo Due:
non è vero l'inverso); se il campo Uno è Null ed il campo Due è
significatico forso a zero la durata.
Nel campo calcolato Tre colcolo l'ID dell'eventuale record che si sovrappone
parzialmente al record corrente e che ha un inizio minore o uguale
all'inizio del record corrente; se il campo Tre è significativo e i campi
Uno e Due sono Null, determino la durata sottraendo la fine del record
corrente alla fine del record il cui ID è contenuto nel campo Tre.
Se tutti e tre i campi calcolati sono Null, determino la durata facendo la
differenza tre le due date più uno del record corrente.
Ho provato a non far visualizzare i tre campi calcolati inserendo il loro
algoritmo direttamente nella formula del campo Durata, ma la stringa che ne
risultava era troppo lunga, ed Access mi ha mandato a quel paese.

Francesca

unread,
Sep 18, 2002, 7:17:00 AM9/18/02
to
Grazie a tutti... Rientro ora.
Adesso studio per benino i vostri consigli.
Un caro saluto.
Francesca


Roberto da casa

unread,
Sep 18, 2002, 7:20:34 AM9/18/02
to

Per la Quey1 usa il codice che ho postato in risposta ad Alessandro oggi
alle ore 13:14 ; il primo conteneva un errore.

Alessandro Cara

unread,
Sep 18, 2002, 8:16:15 AM9/18/02
to
Roberto da casa wrote:
>
[cut]
> Ti faccio presente, comunque, che #Errore nella durata del quarto record non
> me lo ha dato neppure prima della modifica di Query1: non saprei cosa dirti.

che versione di access usi? Io sto usando il 2000 SR1 ed ora con
la nuova query di #Errore ne prende 2 (sui campi in
sovrapposizione parziale 4to e 8vo record)
Mi fa anche un'altra stranezza, esegue la query e poi
ricevo un messaggio di errore di Jet che pressapoco recita
"......Jet non e' in grado di trovare la tabella o la query
di input 'Servizio'......" ed il bello e' che il messaggio
appare ogni volta che mi muovo, sul risultato della query,
con il mouse sul campo durata che contiene #Errore

Ho cancellato record, modificato, inserito a nuovo
ora ho una situazione pulita (ed e' OK)
Non sono ancora riuscito a capire la regola che
genera #Errore e cmq e' legata sicuramente ai periodi
in sovrapposizione
[cut]

--
a.cara

Francesca

unread,
Sep 18, 2002, 8:30:11 AM9/18/02
to
Il database mi sembra molto complesso (almeno per le mie possibilità) e
spesso mi perdo io stessa...
Debora mi ha messo la pulce nell'orecchio dicendomi della query di
raggruppamento. Mi è venuto in mente che forse si può risolvere utilizzando,
in "formula", il "Min" per l'inizio servizio, e il "Max" per la fine del
servizio. Così in un unico periodo dovrebbero essere compresi tutti i giorni
sovrapposti. Ma forse così si presenta un altro problema...
Cmq sto studiando per benino la situazione con tutte le soluzioni proposte.
Grazie. Francesca


Francesca

unread,
Sep 18, 2002, 8:31:31 AM9/18/02
to
Poi magari vi dico come avrò risolto, se ci riesco...
Grazie. Francesca


Fabrizio

unread,
Sep 18, 2002, 8:36:40 AM9/18/02
to

A me ancora non quaglia, adesso ho due errori, ma mi defilo perchč
stavo solo provando e mi incuriosiva la funzione DLookUp.

>Ti faccio presente, comunque, che #Errore nella durata del quarto record non
>me lo ha dato neppure prima della modifica di Query1: non saprei cosa dirti.

Confermo quello che diceva Ale, succede anche a me ... ops mi sono
dimenticato che mi ero defilato. :-)

>Nel campo calcolato Uno calcolo l'ID dell'eventale record che si sovrappone

>completamente al record corrente; se Uno non č Null, forso a zero la durata
>se l'ID del record corrente č maggiore del valore del campo Uno, in caso
>contrario determino la durata facendo la differenza tra le due date piů uno


>del record corrente.
>Nel campo calcolato Uno

?
Due?

>calcolo l'ID dell'eventale record che contiene

>... and so on

Vado a rileggermi la domanda da cui partivamo perchč mi sa che non
l'ho capita, ..... niente non riesco a defilarmi, sparatemi.

Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 8:50:51 AM9/18/02
to
On Wed, 18 Sep 2002 14:16:15 +0200, Alessandro Cara <al...@blunet.it>
wrote:

>Roberto da casa wrote:
>>
>[cut]
>> Ti faccio presente, comunque, che #Errore nella durata del quarto record non
>> me lo ha dato neppure prima della modifica di Query1: non saprei cosa dirti.
>
>che versione di access usi? Io sto usando il 2000 SR1 ed ora con
>la nuova query di #Errore ne prende 2 (sui campi in
>sovrapposizione parziale 4to e 8vo record)
>Mi fa anche un'altra stranezza, esegue la query e poi
>ricevo un messaggio di errore di Jet che pressapoco recita
>"......Jet non e' in grado di trovare la tabella o la query
>di input 'Servizio'......" ed il bello e' che il messaggio
>appare ogni volta che mi muovo, sul risultato della query,
>con il mouse sul campo durata che contiene #Errore

Confermo ... non mi sono defilato ... eh no basta, mi sparo io.

>Ho cancellato record, modificato, inserito a nuovo
>ora ho una situazione pulita (ed e' OK)
>Non sono ancora riuscito a capire la regola che
>genera #Errore e cmq e' legata sicuramente ai periodi
>in sovrapposizione
>[cut]

Provo ..... confermo, con periodi in sovrapposizione da errore: e
bravo Ale.
Non mi sono defilato e non mi sono sparato, perciò sopportatemi.

Ciao. Fabrizio

Roberto da casa

unread,
Sep 18, 2002, 9:23:38 AM9/18/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D886E8F...@blunet.it...
[CUT]

>
> che versione di access usi?

Access 97 SR2 con Windows ME.

> Io sto usando il 2000 SR1 ed ora con
> la nuova query di #Errore ne prende 2 (sui campi in
> sovrapposizione parziale 4to e 8vo record)
> Mi fa anche un'altra stranezza, esegue la query e poi
> ricevo un messaggio di errore di Jet che pressapoco recita
> "......Jet non e' in grado di trovare la tabella o la query
> di input 'Servizio'......" ed il bello e' che il messaggio
> appare ogni volta che mi muovo, sul risultato della query,
> con il mouse sul campo durata che contiene #Errore
>
> Ho cancellato record, modificato, inserito a nuovo
> ora ho una situazione pulita (ed e' OK)
> Non sono ancora riuscito a capire la regola che
> genera #Errore e cmq e' legata sicuramente ai periodi
> in sovrapposizione

Fermo restando che non capisco perché l'errore lo da con il Jet di A2000 e
non con il Jet di A97, mi sembra chiaro che l'errore viene dato dalla
seguente DLookUp contenta nell'algoritmo del campo calcolato Durata:

DLookUp("Fine";"Servizio";"ID=" & [Tre])

In effetti il problema c'è, in quanto viene confrontato il campo ID che è
numerico con il campo calcolato Tre che è invece una stringa; però non
capisco perché con A97 funziona bene.
Forse un fenomeno di intelligenza artificiale? :-))

Prova a modificare la DLookUp in

DLookUp("Fine";"Servizio";"ID=" & Val([Tre]))

Io non posso provare perché non uso Access 2000.

A questo punto l'algoritmo del campo Durata diventa:

Durata: IIf(Not
IsNull([Uno]);IIf(Val([Uno])<[ID];0;[Fine]-[Inizio]+1);IIf(Not
IsNull([Due]);0;IIf(IsNull([Tre]);[Fine]-[Inizio]+1;[Fine]-DLookUp("Fine";"S
ervizio";"ID=" & Val([Tre])))))

e quindi il codice SQL di Query1 dovrà essere:

SELECT Servizio.Anno, Servizio.IDInsegnante, DLookUp("ID","Servizio","ID<>"
& [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio=#" &
Format([Inizio],"mm/dd/yyyy") & "# And Fine=#" & Format([Fine],"mm/dd/yyyy")
& "#") AS Uno, DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante="
& [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine>=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Due,
DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" &
[IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine<#" & Format([Fine],"mm/dd/yyyy") & "# And Fine >#" &
Format([Inizio],"mm/dd/yyyy") & "#") AS Tre, IIf(Not
IsNull([Uno]),IIf(Val([Uno])<[ID],0,[Fine]-[Inizio]+1),IIf(Not
IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","S

ervizio","ID=" & Val([Tre]))))) AS Durata
FROM Servizio;

Fammi sapere: sono curioso di scoprire l'arcano.

Comunque anche per A97 si viaggia al limite; infatti se nei criteri del
campo calcolato Durata scrivo <>0 (per eliminare i record con durata zero),
Access perde letteralmente la brocca ed all'apertura di Query1 mi apre 3
finestre di Immissione valore parametro chiedendomi, in successione, di
digitare i valori di Uno, Due e Tre. Togliendo i criteri torna tutto a
funzionare.
Sembrerebbe che ho scritto qualcosa che manda in tilt il Jet, stressandolo;
anche questa è una soddisfazione.


> [cut]
>
> --
> a.cara

Roberto da casa

unread,
Sep 18, 2002, 9:23:38 AM9/18/02
to

"Debora" <cbo.ma...@tiscali.it> ha scritto nel messaggio
news:RUYh9.9213$Av4.1...@twister2.libero.it...
>
[CUT]

>
> Scusate se mi intrometto, ma dato che serve anche a me, dico la mia:
> Franc. sta chiedendo di non sommare giorni uguali, quindi la query deve
> avere
> un raggruppamento dei giorni in modo che si possano sommare univocamente
> in poche parole una specie SELECT DISTINCT dei giorni, x ogni insegnante.
> A voi il metodo per ottenerlo. ;-P

Io con Access 97 la soluzione l'ho trovata ed è funzionante: prova ad
applicarla (se usi A2000 o A2002 prova la mia terza versiona, postata poco
fa ad Alessandro).
Comunque non credo proprio che il problema possa risolversi con una query di
raggruppamento, mentre sono sicuro che può essere risolto in VBA.

>
> --
> Debora

Roberto da casa

unread,
Sep 18, 2002, 9:32:45 AM9/18/02
to

"Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
news:t2tgou0g2vpl7har7...@4ax.com...
[CUT]

>
> Provo ..... confermo, con periodi in sovrapposizione da errore: e
> bravo Ale.
> Non mi sono defilato e non mi sono sparato, perciò sopportatemi.
>

Visto che ci sei, prova anche tu a cercare di spiegare l'arcano per cui con
A97 funziona e con A2000 no.

Prova la mia versione che ho scritto nel messaggio di risposta ad Alessandro
oggi alle 15:23 e facci sapere.

> Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 9:44:15 AM9/18/02
to
On Wed, 18 Sep 2002 13:32:45 GMT, "Roberto da casa"
<r.ma...@libero.it> wrote:

>
>"Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
>news:t2tgou0g2vpl7har7...@4ax.com...
>[CUT]
>>
>> Provo ..... confermo, con periodi in sovrapposizione da errore: e
>> bravo Ale.
>> Non mi sono defilato e non mi sono sparato, perciò sopportatemi.
>>
>
>Visto che ci sei, prova anche tu a cercare di spiegare l'arcano per cui con
>A97 funziona e con A2000 no.

Posso provare ma spiegare no ( lo sapevo che dovevo defilarmi ) ....
ah cmq il mio è Access 2002.

>Prova la mia versione che ho scritto nel messaggio di risposta ad Alessandro
>oggi alle 15:23 e facci sapere.

Provo, ma ti dirò solo cosa mi capita non mi chiedere di dirti quello
che non so ..... sig .. io volevo .. sigh .. provare solo .. sigh ..
quella funzione DLookUp :°-( .


Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 10:13:50 AM9/18/02
to
On Wed, 18 Sep 2002 13:23:38 GMT, "Roberto da casa"
<r.ma...@libero.it> wrote:

>cut


>> Ho cancellato record, modificato, inserito a nuovo
>> ora ho una situazione pulita (ed e' OK)
>> Non sono ancora riuscito a capire la regola che
>> genera #Errore e cmq e' legata sicuramente ai periodi
>> in sovrapposizione
>
>Fermo restando che non capisco perché l'errore lo da con il Jet di A2000 e
>non con il Jet di A97, mi sembra chiaro che l'errore viene dato dalla
>seguente DLookUp contenta nell'algoritmo del campo calcolato Durata:
>

>cut


>e quindi il codice SQL di Query1 dovrà essere:
>
>SELECT
>Servizio.Anno,
>Servizio.IDInsegnante,
>DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio=#" & Format([Inizio],"mm/dd/yyyy") & "# And Fine=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Uno,
>DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And Fine>=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Due,
>DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And Fine<#" & Format([Fine],"mm/dd/yyyy") & "# And Fine >#" & Format([Inizio],"mm/dd/yyyy") & "#") AS Tre,

>IIf(Not IsNull([Uno]),IIf(Val([Uno])<[ID],0,[Fine]-[Inizio]+1),IIf(Not IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","Servizio","ID=" & Val([Tre]))))) AS Durata
>FROM
>Servizio;

Stessa cosa di prima, siccome non ero sicuro che il codice sopra fosse
stato modificato con le tue correzioni l'ho controllato e mi sembra ok
( contiene le correzioni ). Ho fatto un copia incolla, come apporto mi
limito a riportarvi i risultati che ho io con Access 2002 ( e Win ME)

>Fammi sapere: sono curioso di scoprire l'arcano.


La domanda è rivolta ad Ale perciò non mi intrometto ().

>Comunque anche per A97 si viaggia al limite; infatti se nei criteri del
>campo calcolato Durata scrivo <>0 (per eliminare i record con durata zero),
>Access perde letteralmente la brocca ed all'apertura di Query1 mi apre 3
>finestre di Immissione valore parametro chiedendomi, in successione, di
>digitare i valori di Uno, Due e Tre. Togliendo i criteri torna tutto a
>funzionare.
>Sembrerebbe che ho scritto qualcosa che manda in tilt il Jet, stressandolo;
>anche questa è una soddisfazione.

A me capita spesso con mia moglie , ma non me la cavo a così buon
mercato. :-) .

ASPETTATE UN MOMENTO : mentre stavo cercando di mettermelo giù meglio
per potermi leggere il codice con una formattazione che mi piace di
più ( e quindi aggiustando anche gli spazi ) tutto va a meraviglia:
vuoi vedere che ci eravamo fidati troppo del copia incolla.
DOMANDA: ho messo due record così ( per provare un po' tutti i casi)

.... inizio fine
.... 01/01/02 03/01/02
..... 03/01/02 04/01/02

risultato

..... durata
...... 3
...... 2

, ma non dovrebbe ridarmi 1 per il secondo record essendo il giorno
03/01/02 già fatto nel primo record ?

Adesso provo i codici che ci davano errore riaggiustando gli spazi e
vi faccio sapere.

Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 10:22:07 AM9/18/02
to
On Wed, 18 Sep 2002 16:13:50 +0200, Fabrizio
<fabrizio...@SPAMtiscalinet.it> wrote:

>cut


>Adesso provo i codici che ci davano errore riaggiustando gli spazi e
>vi faccio sapere.
>
>Ciao. Fabrizio

Provato, funziona il secondo codice postato da Roberto.... e anche il
primo: ho scoperto il problema, quando si fa copia incolla succede
questo:

IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","S****
*****ervizio","ID=" & [Tre])))) AS Durata

La parola servizio rimane troncata, aggiustandola cosě:

IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","Servizio","ID="

& [Tre])))) AS Durata

, torna tutto a posto.

Abbiamo fatto di una cagatina una montagna di merda, scusa Roberto.

Ciao. Fabrizio

Roberto da casa

unread,
Sep 18, 2002, 10:40:49 AM9/18/02
to

"Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
news:o31houkeh911dm234...@4ax.com...
[CUT]

>
> ASPETTATE UN MOMENTO : mentre stavo cercando di mettermelo giù meglio
> per potermi leggere il codice con una formattazione che mi piace di
> più ( e quindi aggiustando anche gli spazi ) tutto va a meraviglia:
> vuoi vedere che ci eravamo fidati troppo del copia incolla.

Ti do conferma che il problema è relativo al copia/icolla.
Ho fatto la controprova facendo il copia/incolla su A97 ed anche a me dà
errore.
Risistemando gli spazi e tutto è tornato a fuzionare.
Il problema stava nel fatto che 'sto fetente della parola "Servizio" aveva
messo "S alla fine dell terzultima riga e ervizio" all'inizio della
penultima riga.
Bene, Bravo, 7+ . :-))

> DOMANDA: ho messo due record così ( per provare un po' tutti i casi)
>
> .... inizio fine
> .... 01/01/02 03/01/02
> ..... 03/01/02 04/01/02
>
> risultato
>
> ..... durata
> ...... 3
> ...... 2
>
> , ma non dovrebbe ridarmi 1 per il secondo record essendo il giorno
> 03/01/02 già fatto nel primo record ?

Si hai ragione; nel computo del campo Tre c'era ancora una imprecisione; ho
corretto l'imprecisione ed ora il codice SQL di Query1 è

SELECT Servizio.Anno, Servizio.IDInsegnante, DLookUp("ID","Servizio","ID<>"
& [ID] & " And IDInsegnante=" & [IDInsegnante] & " And Inizio=#" &
Format([Inizio],"mm/dd/yyyy") & "# And Fine=#" & Format([Fine],"mm/dd/yyyy")
& "#") AS Uno, DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante="
& [IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And
Fine>=#" & Format([Fine],"mm/dd/yyyy") & "#") AS Due,
DLookUp("ID","Servizio","ID<>" & [ID] & " And IDInsegnante=" &
[IDInsegnante] & " And Inizio<=#" & Format([Inizio],"mm/dd/yyyy") & "# And

Fine<#" & Format([Fine],"mm/dd/yyyy") & "# And Fine >=#" &


Format([Inizio],"mm/dd/yyyy") & "#") AS Tre, IIf(Not
IsNull([Uno]),IIf(Val([Uno])<[ID],0,[Fine]-[Inizio]+1),IIf(Not
IsNull([Due]),0,IIf(IsNull([Tre]),[Fine]-[Inizio]+1,[Fine]-DLookUp("Fine","S
ervizio","ID=" & Val([Tre]))))) AS Durata
FROM Servizio;

>


> Adesso provo i codici che ci davano errore riaggiustando gli spazi e
> vi faccio sapere.
>
> Ciao. Fabrizio

Hai visto che non dovevi defilarti; se lo facevi probabilmente non avremmo
scoperto l'arcano e saremmo rimasti della convinzione di un bug su Access
2000 e 2002.

Fabrizio

unread,
Sep 18, 2002, 11:02:44 AM9/18/02
to
>cut

>> ASPETTATE UN MOMENTO : mentre stavo cercando di mettermelo giù meglio
>> per potermi leggere il codice con una formattazione che mi piace di
>> più ( e quindi aggiustando anche gli spazi ) tutto va a meraviglia:
>> vuoi vedere che ci eravamo fidati troppo del copia incolla.
>
>Ti do conferma che il problema è relativo al copia/icolla.
>Ho fatto la controprova facendo il copia/incolla su A97 ed anche a me dà
>errore.
>Risistemando gli spazi e tutto è tornato a fuzionare.
>Il problema stava nel fatto che 'sto fetente della parola "Servizio" aveva
>messo "S alla fine dell terzultima riga e ervizio" all'inizio della
>penultima riga.
>Bene, Bravo, 7+ . :-))

uh appena 7+, la prossima volta non perdo il mio tempo a gratis per
aiutarvi ( me la tiro un po' finche dura ) :-)))))) ( risata grassa )

>> DOMANDA: ho messo due record così ( per provare un po' tutti i casi)
>>
>> .... inizio fine
>> .... 01/01/02 03/01/02
>> ..... 03/01/02 04/01/02
>>
>> risultato
>>
>> ..... durata
>> ...... 3
>> ...... 2
>>
>> , ma non dovrebbe ridarmi 1 per il secondo record essendo il giorno
>> 03/01/02 già fatto nel primo record ?
>
>Si hai ragione; nel computo del campo Tre c'era ancora una imprecisione; ho
>corretto l'imprecisione ed ora il codice SQL di Query1 è
>
>SELECT

>...
>FROM Servizio;

Oh porca vacca ho appena buttato via le stampe dei record ... vabbuò
proviamo .... adesso mi sembra a posto ad una prima occhiata ( sempre
mettendo a posto quella parola troncata )... si i risultati sono
coerenti, grazie Roberto adesso mi studio bene il codice e dove hai
fatto la modifica ( non ho ancora guardato dove l'hai fatta, mi sono
limitato, per il momento, a un copia/incolla )

>> Adesso provo i codici che ci davano errore riaggiustando gli spazi e
>> vi faccio sapere.
>>
>> Ciao. Fabrizio
>
>Hai visto che non dovevi defilarti; se lo facevi probabilmente non avremmo
>scoperto l'arcano e saremmo rimasti della convinzione di un bug su Access
>2000 e 2002.

Però non hai detto che non mi devo sparare e tutto questo perchè sei
geloso di me , ingrato :-))))) ( risata grassa)

Grazie Roberto, sei un pozzo di scienza.

Ciao. Fabrizio

Alessandro Cara

unread,
Sep 18, 2002, 10:58:04 AM9/18/02
to
Roberto da casa wrote:
>
> "Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
> news:o31houkeh911dm234...@4ax.com...
> [CUT]
> >
> > ASPETTATE UN MOMENTO : mentre stavo cercando di mettermelo giù meglio
> > per potermi leggere il codice con una formattazione che mi piace di
> > più ( e quindi aggiustando anche gli spazi ) tutto va a meraviglia:
> > vuoi vedere che ci eravamo fidati troppo del copia incolla.
>
> Ti do conferma che il problema è relativo al copia/icolla.
> Ho fatto la controprova facendo il copia/incolla su A97 ed anche a me dà
> errore.
> Risistemando gli spazi e tutto è tornato a fuzionare.
> Il problema stava nel fatto che 'sto fetente della parola "Servizio" aveva
> messo "S alla fine dell terzultima riga e ervizio" all'inizio della
> penultima riga.
> Bene, Bravo, 7+ . :-))
mi va bene tutto, compreso il 7+
Domanda: Per quale motivo l'errore spuntava in quel modo?
Provo a rispondermi da solo: Solo perche' in quei casi attivava
la dlookup ed essendo "Servizio" un parametro viene valutato dal parser
SQL solo al momento della chiamata di funzione?
--
a.cara

Maurizio Borrelli

unread,
Sep 18, 2002, 11:07:51 AM9/18/02
to
> "Francesca" [...]:

PARAMETERS
[DataInizio?] DateTime
, [DataFine?] DateTime
;
SELECT
x_Francesca.Insegnante
, x_Francesca.Servizio
, x_Francesca.DataInizio
, x_Francesca.DataFine
, IIf
(
(
SELECT
Count(*) AS ConteggioDiRecord
FROM
x_Francesca AS TEMP1
WHERE
TEMP1.Insegnante=x_Francesca.Insegnante
AND
TEMP1.Servizio = x_Francesca.Servizio
AND
x_Francesca.DataInizio < TEMP1.DataInizio
And
TEMP1.DataFine < x_Francesca.DataFine
)
=
0
, [x_Francesca].[DataFine]-[x_Francesca].[DataInizio]
, 0
) AS Giorni
FROM
x_Francesca
WHERE
x_Francesca.DataInizio>=[DataInizio?]
AND
x_Francesca.DataFine<=[DataFine?]
ORDER BY
x_Francesca.Insegnante
, x_Francesca.Servizio
, x_Francesca.DataInizio
, x_Francesca.DataFine
;

SE&O

--
Ciao :-)
Maurizio
--------
?SPQR(C)
X
--------


Fabrizio

unread,
Sep 18, 2002, 11:21:36 AM9/18/02
to
>cut

>Oh porca vacca ho appena buttato via le stampe dei record ... vabbuò
>proviamo .... adesso mi sembra a posto ad una prima occhiata ( sempre
>mettendo a posto quella parola troncata )... si i risultati sono
>coerenti, grazie Roberto adesso mi studio bene il codice e dove hai
>fatto la modifica ( non ho ancora guardato dove l'hai fatta, mi sono
>limitato, per il momento, a un copia/incolla )

Trovato, è uno stupidissimo uguale, adesso mi metto a cercar di capire
il codice , basta la faccio finita qua.

>cut


Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 11:29:41 AM9/18/02
to
On Wed, 18 Sep 2002 17:07:51 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>cut

Eh no adesso la mia etica mi impone di provare anche questa :-) ,
maledizione Maurì torna a lavurà :-)))) :
non mi sono ancora studiato il codice di Roberto che ci si mette anche
lui , chi glielo dice alla mia mamma :-)))) ?

Servizio che tipo di campo è e cosa indica ?

Non rispondere da tracotante, please. :-)

Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 11:47:44 AM9/18/02
to

>Servizio che tipo di campo č e cosa indica ?

Ho proprio bisogno di sapere come hai impostato Servizio , perchč cosě
com'č i risultati fanno schifo.

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 18, 2002, 11:48:37 AM9/18/02
to
> "Fabrizio" [...]:
> > "Maurizio Borrelli" [...]:

> Eh no adesso la mia etica mi impone di provare anche questa :-) ,
> maledizione Maurģ torna a lavurą :-)))) :

> non mi sono ancora studiato il codice di Roberto che ci si mette anche
> lui , chi glielo dice alla mia mamma :-)))) ?
> Servizio che tipo di campo č

Quel che vuoi, direi. Io ho testato con Testo.

> e cosa indica ?

Chiedilo a Francesca.

> Non rispondere da tracotante, please. :-)

Tra cotante parole di Francesca che hai tagliato dal mio post cerca
"servizio" e troverai buona parte della risposta.

Maurizio Borrelli

unread,
Sep 18, 2002, 11:56:04 AM9/18/02
to
> "Fabrizio" [...]:
> >Servizio che tipo di campo è e cosa indica ?
> Ho proprio bisogno di sapere come hai impostato Servizio , perchè così
> com'è i risultati fanno schifo.

Tabella: x_Francesca
Campi
Insegnante: Testo
DataInizio: Data/ora
DataFine: Data/ora
Servizio: Testo

Dati di test:
Insegnante DataInizio DataFine Servizio
Paperino 01/05/2002 01/08/2002 A
Paperino 01/01/2002 01/03/2002 A
Pippo 01/01/2001 01/05/2001 A
Pippo 01/01/2002 01/09/2002 B
Pippo 01/01/2002 01/05/2002 A
Pippo 01/02/2002 01/03/2002 B
Pippo 01/03/2001 01/08/2001 C
Pluto 01/01/2002 01/08/2002 A
Pluto 01/01/2001 01/05/2001 B
Pluto 01/04/2002 01/05/2002 B

OUTPUT (DataInizio?=1/1/2002, DataFine?=31/12/2002)
Insegnante Servizio DataInizio DataFine Giorni
Paperino A 01/01/2002 01/03/2002 59
Paperino A 01/05/2002 01/08/2002 92
Pippo A 01/01/2002 01/05/2002 120
Pippo B 01/01/2002 01/09/2002 0
Pippo B 01/02/2002 01/03/2002 28
Pluto A 01/01/2002 01/08/2002 212
Pluto B 01/04/2002 01/05/2002 30

Fabrizio

unread,
Sep 18, 2002, 12:07:05 PM9/18/02
to
On Wed, 18 Sep 2002 17:48:37 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Fabrizio" [...]:
>> > "Maurizio Borrelli" [...]:
>> Eh no adesso la mia etica mi impone di provare anche questa :-) ,

>> maledizione Maurì torna a lavurà :-)))) :


>> non mi sono ancora studiato il codice di Roberto che ci si mette anche
>> lui , chi glielo dice alla mia mamma :-)))) ?

>> Servizio che tipo di campo è


>
> Quel che vuoi, direi. Io ho testato con Testo.
>
>> e cosa indica ?
>
> Chiedilo a Francesca.
>
>> Non rispondere da tracotante, please. :-)
>
> Tra cotante parole di Francesca che hai tagliato dal mio post cerca
>"servizio" e troverai buona parte della risposta.

Me lo sono riletto e ancora non capisco, così ti dico dove sono
arrivato io : Francesca vuole sapere quali sono i giorni totali (
potremo dire meglio i giorni consecutivi , dato che se ha lavorato
nello steso lasso di tempo in un'altra scuola tali giorni non vengono
conteggiati ) di "servizio" degli insegnanti.
Per Farancesca se non ho capito male "servizio" è il periodo in giorni
in cui un insegnante lavora, ma per te che cosa è ? i giorni, un ' ID,
una cavallina storna ? perchè dai sempre per scontato che ti si deve
capire tutto, se no sono scemo io ? .... cavolo sei quasi riuscito a
farmi arrabiare ... complimenti.

Ciao. Fabrizio

Roberto da casa

unread,
Sep 18, 2002, 12:04:18 PM9/18/02
to

"Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
news:8b6hou43lsil1torq...@4ax.com...
> >cut
> >Oh porca vacca ho appena buttato via le stampe dei record ... vabbuň

> >proviamo .... adesso mi sembra a posto ad una prima occhiata ( sempre
> >mettendo a posto quella parola troncata )... si i risultati sono
> >coerenti, grazie Roberto adesso mi studio bene il codice e dove hai
> >fatto la modifica ( non ho ancora guardato dove l'hai fatta, mi sono
> >limitato, per il momento, a un copia/incolla )
>
> Trovato, č uno stupidissimo uguale, adesso mi metto a cercar di capire
> il codice ,

Se pensi che puň aiutarti nella cosa, nel mio messaggio di oggi alle ore
13:14 in risposta ad Alessandro c'č una spigazione della logica in base alla
quale č stata costruita la query.
Forse visionando la griglia di struttura della query e analizzando
separatamente le formule di ogni campo, dovrebbe essere un pochino piů
facile.

> basta la faccio finita qua.
>
> >cut
>
>
> Ciao. Fabrizio

--

Roberto da casa

unread,
Sep 18, 2002, 12:04:17 PM9/18/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D88947C...@blunet.it...
[CUT]

> Domanda: Per quale motivo l'errore spuntava in quel modo?
> Provo a rispondermi da solo: Solo perche' in quei casi attivava
> la dlookup ed essendo "Servizio" un parametro viene valutato dal parser
> SQL solo al momento della chiamata di funzione?

A mio modesto parere il macello non è colpa di Access , ma di Outlook
Express che nell'andare a capo ha spaccato una parola in due inframettendo
tra i due troconi il ritorno a capo.
Infatti ricomponendo in maniera giusta la parola (togliendo l'andata a capo)
ha funzionato tutto.

> --
> a.cara

Fabrizio

unread,
Sep 18, 2002, 12:16:08 PM9/18/02
to

OK non andare a guardare il mio post delle 18

A vederlo cosě c'č qlc che non mi quaglia, mi prendo un 'oretta per
guardarmi i tuoi risultati e provarlo ( facciamo anche qlc di piů va
che ho da legere ancora un paio di post)

Ciao. Fabrizio

Fabrizio

unread,
Sep 18, 2002, 12:19:45 PM9/18/02
to
On Wed, 18 Sep 2002 16:04:18 GMT, "Roberto da casa"
<r.ma...@libero.it> wrote:

>cut


> adesso mi metto a cercar di capire
>> il codice ,
>

>Se pensi che può aiutarti nella cosa, nel mio messaggio di oggi alle ore
>13:14 in risposta ad Alessandro c'è una spigazione della logica in base alla
>quale è stata costruita la query.


>Forse visionando la griglia di struttura della query e analizzando

>separatamente le formule di ogni campo, dovrebbe essere un pochino più
>facile.

L'ho gia letto e lo stavo usando per studiarmi il codice quando poi è
intervenuto Maurì e ho testato il suo codice: chiaramente non poteva
andarmi bene al primo colpo.

Ad occhio e croce avrò un po' di robetta da riguardarmi per capirlo
bene, cmq BRAVO.

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 18, 2002, 12:19:13 PM9/18/02
to

Per me "Servizio" non vuol dire niente. Nemmeno "Insegnante". Ci
potresti scrivere "Campo1" e "Campo2" che a me andrebbe bene egualmente. Io
ragiono in termini di A + B = C. Se poi A, B e C sono ore, pere o navette
spaziali... chemmefrega?

Giusto per farti un favore pero' provo a risponderti, senno' poi mi stai
male. "Servizio" immagino che sia il "servizio prestato" da un "insegnante"
presso una certa scuola. Tipo che l'insegnante Tizio ha insegnato dal ... al
... presso la scuola XY e dal ... al ... presso la scuola YZ.

Ecco... adesso mi accorgo che la mia query e' da correggere. Non
importa, speriamo che ci sia un volontario, per questo. ;-)

Francesca

unread,
Sep 18, 2002, 12:20:21 PM9/18/02
to
InizioServizio e FineServizio: data/ora

Io sono ancora in alto mare, mi sto incasinando a più nn posso, ma nn
dispero. Prima o poi capirò come fare! Con calma...
Cmq grazie a tutti per tutto. Farò tesoro dei vs consigli, anche se mi pare
di aver scatenato un bella discussione...
Ciao. Franci


Fabrizio

unread,
Sep 18, 2002, 12:33:22 PM9/18/02
to

Ma che stai dicendo Francy, tu ci hai dato dell'ottimo materiale da
discutere, cmq io userei il codice di Roberto per il momento.

>Ciao. Franci
>
.

Ciao. Fabrizio

Alessandro Cara

unread,
Sep 18, 2002, 12:39:59 PM9/18/02
to
Roberto da casa wrote:
>
> "Fabrizio" <fabrizio...@SPAMtiscalinet.it> ha scritto nel messaggio
> news:8b6hou43lsil1torq...@4ax.com...
> > >cut
> > >Oh porca vacca ho appena buttato via le stampe dei record ... vabbuň
> > >proviamo .... adesso mi sembra a posto ad una prima occhiata ( sempre
> > >mettendo a posto quella parola troncata )... si i risultati sono
> > >coerenti, grazie Roberto adesso mi studio bene il codice e dove hai
> > >fatto la modifica ( non ho ancora guardato dove l'hai fatta, mi sono
> > >limitato, per il momento, a un copia/incolla )
> >
> > Trovato, č uno stupidissimo uguale, adesso mi metto a cercar di capire
> > il codice ,
>
> Se pensi che puň aiutarti nella cosa, nel mio messaggio di oggi alle ore
> 13:14 in risposta ad Alessandro c'č una spigazione della logica in base alla
> quale č stata costruita la query.
> Forse visionando la griglia di struttura della query e analizzando
> separatamente le formule di ogni campo, dovrebbe essere un pochino piů
> facile.
ciao roberto
c'e' rimasto, credo, un'unico problema
legato all'utilizzo del periodo di osservazione
che dovrebbero essere 2 parametri esterni
e dove il problema potrebbe sorgere se le date
di "Servizio" sono a cavallo del limite inferiore
o superiore del periodo di osservazione.
Sono comunque interessato poiche' il discorso
e' naturalmente applicabile ad attivita' concorrenti
di qualsiasi tipologia.

L'ho gia' avuto e, ovviamente,per me, l'ho risolto
via codice
--
a.cara

Roberto da casa

unread,
Sep 18, 2002, 12:49:08 PM9/18/02
to

"Francesca" <francesc...@inwind.it> ha scritto nel messaggio
news:ama91g$nal$1...@newsreader.mailgate.org...

> InizioServizio e FineServizio: data/ora
>
> Io sono ancora in alto mare, mi sto incasinando a più nn posso, ma nn
> dispero. Prima o poi capirò come fare! Con calma...

Quale soluzione stai tentando di realizzare?
Se pensi che la mia soluzione possa andare bene, ma sei in difficoltà ad
applicarla al tuo database, prova a postare la struttura della tua tabella
che contiene i dati: potremmo vedere insieme di personalizzarla.
Oppure dicci meglio quali siano le tue difficoltà.

> Cmq grazie a tutti per tutto. Farò tesoro dei vs consigli, anche se mi
pare
> di aver scatenato un bella discussione...

Queste "discussioni", che di fatto sono solo un pacato scambio di opinioni
su un problema, sono il sale del NewsGroup e inducono ad un momento di
piacevole studio in team.

> Ciao. Franci

Fabrizio

unread,
Sep 18, 2002, 12:54:22 PM9/18/02
to

>
> Per me "Servizio" non vuol dire niente. Nemmeno "Insegnante". Ci
>potresti scrivere "Campo1" e "Campo2" che a me andrebbe bene egualmente. Io
>ragiono in termini di A + B = C. Se poi A, B e C sono ore, pere o navette
>spaziali... chemmefrega?

Allora servizio potrei averlo o non averlo , chemmefrega: č giusto
cosě?


> Giusto per farti un favore pero' provo a risponderti, senno' poi mi stai
>male.

Le mie coronarie ti ringraziano.

>"Servizio" immagino che sia il "servizio prestato" da un "insegnante"
>presso una certa scuola. Tipo che l'insegnante Tizio ha insegnato dal ... al
>... presso la scuola XY e dal ... al ... presso la scuola YZ.

Quindi č un tipo di servizio : se ha insegnato nella scuola A ha fatto
il servizio a , nella scuola B il servizio b ... e cosě via ? Ma a
cosa serve? A questo punto non sono piů sicuro di quello che ci ha
chiesto Francesca: vuole o non vuole sapere quanti giorni in totale
di un anno un insegnante ha lavorato ( escluse poi domeniche e
festivi, che in nessuna query č stato preso in considerazione ),
per es.:
se nella scuola A ha lavorato dal 01/01/02 al 31/12/02
e
nella scuola B ha lavorato dal 01/01/02 al 31/12/02 ,
Quanti giorni ha lavorato? 365 o 730 ?
730 ! eh chi č Mandrake?

> Ecco... adesso mi accorgo che la mia query e' da correggere. Non
>importa, speriamo che ci sia un volontario, per questo. ;-)

Speriamo proprio che qlcn si faccia avanti, oh da quando ti sei
impigrito ....
Cmq le mie coronarie non ringraziano piů.

Ciao. Fabrizio

Roberto da casa

unread,
Sep 18, 2002, 1:59:59 PM9/18/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D88AC5F...@blunet.it...
[CUT]

> ciao roberto
> c'e' rimasto, credo, un'unico problema
> legato all'utilizzo del periodo di osservazione
> che dovrebbero essere 2 parametri esterni
> e dove il problema potrebbe sorgere se le date
> di "Servizio" sono a cavallo del limite inferiore
> o superiore del periodo di osservazione.

Ciao Alessandro,

se i due parametri esterni sono [Da] e [A].

In Query1 aggiungerei altri due campi calcolati; il primo:

InizioBis: IIf([Inizio]<CDate([Da]) And
[Fine]>CDate([Da]);CDate([Da]);[Inizio])

ed il secondo:

FineBis: IIf([Inizio]<=CDate([A]) And [Fine]>CDate([A]);CDate([A]);[Fine])

Nei criteri del campo calcolato InizioBis scriverei:

>=CDate([Da])

e in quelli del campo FineBis scriverei

<=CDate([A])

Questo al fine della selezione dei record.

Ai fini del computo dei campi calcolati Uno, Due, Tre e Durata, farei
riferimento al campo [InizioBis] dove facevo riferimento al campo [Inizio] e
farei riferimento al campo [FineBis] dove facevo riferimento al campo
[Fine].

Insomma, per i record che hanno le date a cavallo dei limiti minore e/o
maggiore sostituirei le date reali con delle date virtuali, che
permetterebbero una giusta selezione dei record ed una giusta loro
valorizzazione.

> Sono comunque interessato poiche' il discorso
> e' naturalmente applicabile ad attivita' concorrenti
> di qualsiasi tipologia.


Che ne pensi di questa soluzione???

>
> L'ho gia' avuto e, ovviamente,per me, l'ho risolto
> via codice
> --
> a.cara

--

Alessandro Cara

unread,
Sep 18, 2002, 2:17:11 PM9/18/02
to
Roberto da casa wrote:
>
[cut]

> Che ne pensi di questa soluzione???

Le tue soluzioni le trovo sempre "ottime".
A me e' piu' facile scrivere codice. Vedo che riesci a risolvere
problemi anche complessi con delle query "tuttofare"

L'unica cosa e' che alcune volte e' difficile trasportarle su
altri DBMS.

Ad esempio questa. In ORACLE la iif non esiste e' parzialmente
sostituibile con la DECODE. ed ovviamente non esiste la
DLOOKUP anche se e' sostituibile con una select innestata.
(S.E. & O.)

Se abbiamo capito bene credo che questa sia la soluzione
ottimale per francesca.
Purtuttavia continuero' a scrivere codice, alcune volte
lo trovo piu' "user friendly" ;<))))))))))))))

Sullo stesso DB di test o anche provato la proprieta'
DefaultValue (una di quelle cose da me mai usate),
va che e' una spada, semplice e chiaro,
mentre qui a dato luogo ad una telenovela.
C'e' solo quel problema relativo alle date ma anche in
questo caso c'e' una stranezza che devo verificare....

ciao
--
a.cara

Maurizio Borrelli

unread,
Sep 18, 2002, 3:13:29 PM9/18/02
to
> "Maurizio Borrelli" [...]:

> Ecco... adesso mi accorgo che la mia query e' da correggere. Non
> importa, speriamo che ci sia un volontario, per questo. ;-)

Bene. Il volontario non s'e' visto. :-(

"Ritiro" la query precedente perche' e' proprio una gran fregnaccia. Il
concetto e' buono (l'uso di una sottoquery) ma la mia realizzazione e' stata
decisamente pessima.

Probabilmente lavorandoci un po' su se ne puo' tirare fuori qualcosa di
buono ma ora come ora non ho ne' tempo ne' voglia.

Mi ha intrigato di piu' l'idea di un'altra soluzione, sempre mediante
una query. E dico una query non perche' sia meglio o peggio del codice ma
cosi', perche' in questo periodo sto studiando questo tipo di soluzioni.

In fondo il risultato che si vuole ottenere e' il numero dei giorni di
servizio di ciascun insegnate, giusto? Come potrei fare "a mano libera"?
Prenderei un bel calendario nuovo da una parte, dall'altra le schede dei
singoli servizi di un insegnante:

Insegnante A
Dal ... Al ...
Scuola A
----------
Insegnante A
Dal ... Al ...
Scuola B
----------
.
.
----------

e con santa pazienza, scheda per scheda, farei una crocetta sul calendario
per ogni giorno di servizio della scheda. Quando passo alla scheda
successiva se nel calendario c'e' gia' la crocetta ovviamente salto il
giorno. Arrivato alla fine, mese per mese, conto i giorni e segno il totale
a fine mese.

Poi, nuovo calendario, nuovo pacchetto di schede dei servizio
dell'insegnante successivo.

Ok?

Quindi ci manca un calendario...

Per costruirlo non ci vuole molto. Una tabella di nome "tblCalendario"
con un solo campo "Data", di tipo Data/ora, indicizzato come Primario e
Univoco.

Poi siccome scriverlo a mano e' scomodo :-) con qualche riga di codice
aggiungo tutte le date dell'intervallo che mi interessa, magari abbondando
cosi' e' gia' pronto per gli anni a venire. (Vedi codice piu' sotto)

A questo punto dovremmo avere tutto, credo. Quindi:

Query: x_Francesca Giorni di servizio
PARAMETERS
[DataIniziale?] DateTime
, [DataFinale?] DateTime
;
SELECT DISTINCT
x_Francesca.Insegnante
, tblCalendario.Data
, -
(
[tblCalendario].[Data]
Between
[x_Francesca].[DataInizio] And [x_Francesca].[DataFine]
)
AS HaPrestatoServizio
FROM
tblCalendario
, x_Francesca
WHERE
(
tblCalendario.Data
Between
[DataIniziale?] And [DataFinale?]
)
AND
(
-
(
[tblCalendario].[Data]
Between
[x_Francesca].[DataInizio] And [x_Francesca].[DataFine]
)
=
1
)
ORDER BY
x_Francesca.Insegnante
, tblCalendario.Data
;

Query: x_Francesca Somma Giorni di servizio per mese
SELECT
[x_Francesca Giorni di servizio].Insegnante
, DateSerial
(
Year([x_Francesca Giorni di servizio].[Data])
, Month([x_Francesca Giorni di servizio].[Data])
, 1
)
AS DataMese
, Format([DataMese],"mmm yyyy")
AS Mese
, Sum
(
[x_Francesca Giorni di servizio].HaPrestatoServizio
)
AS GiorniDiServizio
FROM
[x_Francesca Giorni di servizio]
GROUP BY
[x_Francesca Giorni di servizio].Insegnante
, DateSerial
(
Year([x_Francesca Giorni di servizio].[Data])
, Month([x_Francesca Giorni di servizio].[Data])
, 1
)
ORDER BY
[x_Francesca Giorni di servizio].Insegnante
, DateSerial
(
Year([x_Francesca Giorni di servizio].[Data])
, Month([x_Francesca Giorni di servizio].[Data])
, 1
)
;

Dati di test:
Insegnante DataInizio DataFine Servizio
Paperino 01/05/2002 01/08/2002 A
Paperino 01/01/2002 01/03/2002 A
Pippo 01/01/2001 01/05/2001 A
Pippo 01/01/2002 01/09/2002 B
Pippo 01/01/2002 01/05/2002 A
Pippo 01/02/2002 01/03/2002 B
Pippo 01/03/2001 01/08/2001 C
Pluto 01/01/2002 01/08/2002 A
Pluto 01/01/2001 01/05/2001 B
Pluto 01/04/2002 01/05/2002 B

OUTPUT (DataInizio?=1/1/2002, DataFine?=31/12/2002)
Insegnante DataMese Mese GiorniDiServizio
Paperino 01/01/2002 gen 2002 31
Paperino 01/02/2002 feb 2002 28
Paperino 01/03/2002 mar 2002 1
Paperino 01/05/2002 mag 2002 31
Paperino 01/06/2002 giu 2002 30
Paperino 01/07/2002 lug 2002 31
Paperino 01/08/2002 ago 2002 1
Pippo 01/01/2002 gen 2002 31
Pippo 01/02/2002 feb 2002 28
Pippo 01/03/2002 mar 2002 31
Pippo 01/04/2002 apr 2002 30
Pippo 01/05/2002 mag 2002 31
Pippo 01/06/2002 giu 2002 30
Pippo 01/07/2002 lug 2002 31
Pippo 01/08/2002 ago 2002 31
Pippo 01/09/2002 set 2002 1
Pluto 01/01/2002 gen 2002 31
Pluto 01/02/2002 feb 2002 28
Pluto 01/03/2002 mar 2002 31
Pluto 01/04/2002 apr 2002 30
Pluto 01/05/2002 mag 2002 31
Pluto 01/06/2002 giu 2002 30
Pluto 01/07/2002 lug 2002 31
Pluto 01/08/2002 ago 2002 1

************************************************************
Public Function GeneraCalendario()

On Error GoTo erh

Dim tStart As Date
Dim tStop As Date
Dim tDate As Date
Dim rst As ADODB.Recordset

tStart = #1/1/1998#
tStop = #12/31/2005#

Set rst = New ADODB.Recordset
With rst
.Open _
"tblCalendario" _
, CurrentProject.Connection _
, adOpenDynamic _
, adLockPessimistic
For tDate = tStart To tStop
On Error Resume Next
.AddNew "Data", tDate
If Err.Number = 0 Then
.Update

Else
.CancelUpdate

End If
Err.Clear

Next
On Error GoTo erh
End With

ext:
On Error Resume Next
rst.Close
Set rst = Nothing
Exit Function

erh:
With Err
MsgBox .Description, vbCritical, "ERR#" & .Number
End With
Resume ext

End Function
************************************************************

SE&O

Fabrizio

unread,
Sep 18, 2002, 3:48:07 PM9/18/02
to
On Wed, 18 Sep 2002 21:13:29 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Maurizio Borrelli" [...]:
>> Ecco... adesso mi accorgo che la mia query e' da correggere. Non
>> importa, speriamo che ci sia un volontario, per questo. ;-)
>
> Bene. Il volontario non s'e' visto. :-(
>
> "Ritiro" la query precedente

Ti ringrazio.

>cut


> In fondo il risultato che si vuole ottenere e' il numero dei giorni di
>servizio di ciascun insegnate, giusto?

Si ..... mortacci tua

>Come potrei fare "a mano libera"?
>Prenderei un bel calendario nuovo da una parte, dall'altra le schede dei
>singoli servizi di un insegnante:
>
> Insegnante A
> Dal ... Al ...
> Scuola A
> ----------
> Insegnante A
> Dal ... Al ...
> Scuola B
> ----------
> .
> .
> ----------
>
>e con santa pazienza, scheda per scheda, farei una crocetta sul calendario
>per ogni giorno di servizio della scheda. Quando passo alla scheda
>successiva se nel calendario c'e' gia' la crocetta ovviamente salto il
>giorno. Arrivato alla fine, mese per mese, conto i giorni e segno il totale
>a fine mese.
>
> Poi, nuovo calendario, nuovo pacchetto di schede dei servizio
>dell'insegnante successivo.
>
> Ok?

Io preferirei fare una "unione" di date per es.:

inizio 12/03/02 fine 17/03/02
inizio 16/03/02 fine 19/03/02
inizio 21/03/02 fine 25/03/02
Uguale
Inizio 12/03/02 fine 19/03/02
and
inizio 21/03/02 fine 25/03/02

quindi conto i giorni, ma sto sparando e poi c'ho in mente ancora la
soluzione di Roberto.

>....

Alla fine di tutto ti dico che proverò la tua soluzione, anche se mi
sembra parecchio laboriosa, sicuramente imparerò qlc.


Ciao. Fabrizio

dash

unread,
Sep 18, 2002, 6:14:29 PM9/18/02
to

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:amaj8m$48b0c$1...@ID-52090.news.dfncis.de...
> > "Maurizio Borrelli" [...]:
[cut]
kaiser fai? stai a riscrive windows o l'acqua delle sorgenti del Po ti ha
dato alla testa?
--
a.cara

Maurizio Borrelli

unread,
Sep 18, 2002, 10:21:27 PM9/18/02
to
> "dash" [...]:
> > "Maurizio Borrelli" [...]:
> > > "Maurizio Borrelli" [...]:

> kaiser fai? stai a riscrive windows

Ah gia'... Tu sei quello delle "poche righe di codice" che non ci fai
mai
vedere.

> o l'acqua delle sorgenti del Po ti ha dato alla testa?

Prego?...

Roberto da casa

unread,
Sep 19, 2002, 4:22:05 AM9/19/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D88C327...@blunet.it...

> Roberto da casa wrote:
> >
> [cut]
> > Che ne pensi di questa soluzione???
>
> Le tue soluzioni le trovo sempre "ottime".

Troppo buono. :o)

> A me e' piu' facile scrivere codice. Vedo che riesci a risolvere
> problemi anche complessi con delle query "tuttofare"

In effetti SQL + le funzioni di aggregazione sui dominii danno molte
possibilità, poi si evitano i casini di trasportabilità tra le varie
versioni di Aceess (DAO, ADO ecc.)

>
> L'unica cosa e' che alcune volte e' difficile trasportarle su
> altri DBMS.
>
> Ad esempio questa. In ORACLE la iif non esiste e' parzialmente
> sostituibile con la DECODE. ed ovviamente non esiste la
> DLOOKUP anche se e' sostituibile con una select innestata.
> (S.E. & O.)

Beh, penso che se in Access non fosse esistita le DLookUp & Co., le avrei
create io. :-)

>
> Se abbiamo capito bene credo che questa sia la soluzione
> ottimale per francesca.
> Purtuttavia continuero' a scrivere codice, alcune volte
> lo trovo piu' "user friendly" ;<))))))))))))))
>

Per motivi storici, anche io trovo più facile usare il linguaggio VBA che il
linguaggio SQL.

> Sullo stesso DB di test o anche provato la proprieta'
> DefaultValue (una di quelle cose da me mai usate),
> va che e' una spada, semplice e chiaro,
> mentre qui a dato luogo ad una telenovela.
> C'e' solo quel problema relativo alle date ma anche in
> questo caso c'e' una stranezza che devo verificare....

Non ho presente il problema.

>
> ciao
> --
> a.cara

Ciao

Fabrizio

unread,
Sep 19, 2002, 4:25:46 AM9/19/02
to
>cut

Provato ... molto carino e molto istruttivo ( a parte i soliti
problemi col copia incolla ( ma almeno ti costringe a guardati il
codice molto meglio )), hai messo tante cose e infatti mi sono salvato
( e incorniciato ) il DB di esempio derivante dal tuo suggerimento, a
dire il vero non l'ho ancora testato bene , se vuoi un giorno ti dirň
le mie impressioni a freddo ( chemmefrega dirai tu, ma io te lo dirň
lo stesso cosě impari )

Ciao. Fabrizio

Fabrizio

unread,
Sep 19, 2002, 4:31:17 AM9/19/02
to
>cut

>> Sullo stesso DB di test o anche provato la proprieta'
>> DefaultValue (una di quelle cose da me mai usate),
>> va che e' una spada, semplice e chiaro,
>> mentre qui a dato luogo ad una telenovela.
>> C'e' solo quel problema relativo alle date ma anche in
>> questo caso c'e' una stranezza che devo verificare....
>
>Non ho presente il problema.

Spero che adesso lo spieghi ... ops vi sto seguendo ancora , ma sto'
DefaultValue mi interessa, visto che mi è capitato di incontrarlo
recentemente: spiegaci Ale ( per me sto' NG sta diventando un manuale
)

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 19, 2002, 4:36:55 AM9/19/02
to
> "Fabrizio" [...]:
> > "Maurizio Borrelli" [...]:
> >SE&O
> Provato ... molto carino e molto istruttivo ( a parte i soliti
> problemi col copia incolla ( ma almeno ti costringe a guardati il
> codice molto meglio )), hai messo tante cose e infatti mi sono salvato
> ( e incorniciato ) il DB di esempio derivante dal tuo suggerimento, a
> dire il vero non l'ho ancora testato bene , se vuoi un giorno ti dirň
> le mie impressioni a freddo ( chemmefrega dirai tu, ma io te lo dirň
> lo stesso cosě impari )

Anzi. Mi interessa molto la tua opinione. (E non solo la tua...).

Considera anche che e' stato proprio un tuo post a farmi cambiare la mia
idea originaria: quello dove parlavi di giorni festivi & C.

Stavo per risponderti con tracotanza "che cacchio c'entra?!" poi mi son
detto: e' vero, non c'entra, ma l'impostazione che sto per dare alla query
e' limitativa. Infatti se per esempio, una volta ottenuto il risultato, a
Francesca salta il ghiribizzo di dire: ok, questi sono i giorni di servizio,
ma il capo *per sua curiosita'* (i capi hanno sempre di queste curiosita')
vuole sapere di questi giorni di servizio quanti sono stati di effettiva
presenza in sede, cioe' al netto di feste, giorni di riposo, assenze varie,
scioperi..., ecco che con questo impianto tale risultato lo si puo' ottenere
in modo abbastanza semplice.

Fabrizio

unread,
Sep 19, 2002, 4:59:43 AM9/19/02
to
On Thu, 19 Sep 2002 10:36:55 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Fabrizio" [...]:
>> > "Maurizio Borrelli" [...]:
>> >SE&O
>> Provato ... molto carino e molto istruttivo ( a parte i soliti
>> problemi col copia incolla ( ma almeno ti costringe a guardati il
>> codice molto meglio )), hai messo tante cose e infatti mi sono salvato
>> ( e incorniciato ) il DB di esempio derivante dal tuo suggerimento, a

>> dire il vero non l'ho ancora testato bene , se vuoi un giorno ti dirò
>> le mie impressioni a freddo ( chemmefrega dirai tu, ma io te lo dirò
>> lo stesso così impari )


>
> Anzi. Mi interessa molto la tua opinione. (E non solo la tua...).

Grazie.

> Considera anche che e' stato proprio un tuo post a farmi cambiare la mia
>idea originaria: quello dove parlavi di giorni festivi & C.

Grazie.

> Stavo per risponderti con tracotanza "che cacchio c'entra?!" poi mi son
>detto: e' vero, non c'entra, ma l'impostazione che sto per dare alla query
>e' limitativa.

Strano ho la vaga impressione che non ci sia implicito nessun
complimento, mi sembrava strano.

>Infatti se per esempio, una volta ottenuto il risultato, a
>Francesca salta il ghiribizzo di dire: ok, questi sono i giorni di servizio,
>ma il capo *per sua curiosita'* (i capi hanno sempre di queste curiosita')
>vuole sapere di questi giorni di servizio quanti sono stati di effettiva
>presenza in sede, cioe' al netto di feste, giorni di riposo, assenze varie,
>scioperi..., ecco che con questo impianto tale risultato lo si puo' ottenere
>in modo abbastanza semplice.

Pensa che stavo proprio studiando la possibilità dei giorni festivi :
adesso ho una bella tabella da cui eliminare
-le domeniche che inserirei da codice o attraverso query ( di
eliminazione )
-i festivi che inserirei a manella in una tabella ( ogni azienda c'ha
i suoi festivi ) --> query di selezione ( solo i giorni che non
compaiono nella tabella festivi ) e il gioco dovrebbe essere fatto.

Sparo perchè sto ancora provando, intanto provo.

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 19, 2002, 5:12:13 AM9/19/02
to
> "Fabrizio" [...]:
> > "Maurizio Borrelli" [...]:
> Strano ho la vaga impressione che non ci sia implicito nessun
> complimento, mi sembrava strano.

Scusa se ti ho fatto soffrire. Devo aver sovrastimato la tua componente
masochistica.

> >Infatti se per esempio, una volta ottenuto il risultato, a
> >Francesca salta il ghiribizzo di dire: ok, questi sono i giorni di
> >servizio,
> >ma il capo *per sua curiosita'* (i capi hanno sempre di queste
curiosita')
> >vuole sapere di questi giorni di servizio quanti sono stati di effettiva
> >presenza in sede, cioe' al netto di feste, giorni di riposo, assenze
varie,
> >scioperi..., ecco che con questo impianto tale risultato lo si puo'
> >ottenere in modo abbastanza semplice.
> Pensa che stavo proprio studiando la possibilità dei giorni festivi :
> adesso ho una bella tabella da cui eliminare
> -le domeniche che inserirei da codice o attraverso query ( di
> eliminazione )
> -i festivi che inserirei a manella in una tabella ( ogni azienda c'ha
> i suoi festivi )

Magari fossero solo quelli: ... poi ci sono gli *orari* degli impiegati
e i *turni* degli operai... e in una scuola per gli insegnanti ci sono i
*giorni* di riposo... e in altri ambienti ci sono i *rientri*... in altri i
*turni di riposo*... Non e' un argomento "banale".

> --> query di selezione ( solo i giorni che non
> compaiono nella tabella festivi ) e il gioco dovrebbe essere fatto.
> Sparo perchè sto ancora provando, intanto provo.

Ok. Io ho gia' abbozzato il discorso ma ho dovuto sospendere. Poi
vediamo.

Fabrizio

unread,
Sep 19, 2002, 5:31:38 AM9/19/02
to
On Thu, 19 Sep 2002 11:12:13 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Fabrizio" [...]:
>> > "Maurizio Borrelli" [...]:
>> Strano ho la vaga impressione che non ci sia implicito nessun
>> complimento, mi sembrava strano.
>
> Scusa se ti ho fatto soffrire. Devo aver sovrastimato la tua componente
>masochistica.

Non accetto scuse, dovevi frustare più forte.

>cut


>> Pensa che stavo proprio studiando la possibilità dei giorni festivi :
>> adesso ho una bella tabella da cui eliminare
>> -le domeniche che inserirei da codice o attraverso query ( di
>> eliminazione )
>> -i festivi che inserirei a manella in una tabella ( ogni azienda c'ha
>> i suoi festivi )
>
> Magari fossero solo quelli: ... poi ci sono gli *orari* degli impiegati
>e i *turni* degli operai...

Stiamo parlando di giorni e non di ore.

>e in una scuola per gli insegnanti ci sono i
>*giorni* di riposo...

Per cui non ha lavorato e fin li ci siamo ( dato che inserisco ( a
manella ) i giorni che lavora )

> e in altri ambienti ci sono i *rientri*... in altri i
>*turni di riposo*...

Tutti i giorni non lavorativi e quindi non immessi in tabella.

Cmq al di la della polemica, ho capito dove vuoi andare a parare, come
minimo ci vorrà una tabella per ogni lavoratore con i suoi turni (
giorni , perchè sono ancora fermo qui ) da confrontare con la tabella
dei giorni dell'anno ( escluse le festività e le domeniche per gli
insegnanti ... per i dottori il discorso non vale ... a meno di non
voler calcolare lo stipendio che in tali periodi è più alto ... and so
on )
Vabbuò intanto parto da quello che già avevo detto e solo per gli
insegnanti ( presumendo che festivi e domeniche non lavorino ), poi si
vedrà.

>Non e' un argomento "banale".

IO non l'ho detto, però da qlc devo pur partire , cominciamo a
costruire un calendario che tenga conto delle dom. e fest.

>> --> query di selezione ( solo i giorni che non
>> compaiono nella tabella festivi ) e il gioco dovrebbe essere fatto.
>> Sparo perchè sto ancora provando, intanto provo.
>
> Ok. Io ho gia' abbozzato il discorso ma ho dovuto sospendere. Poi
>vediamo.

Ci risentiamo allora ( tra lavoro, studio e compitini tuoi )

Ciao. Fabrizio

Fabrizio

unread,
Sep 19, 2002, 5:59:25 AM9/19/02
to

>cut

>Ci risentiamo allora ( tra lavoro, studio e compitini tuoi )
>
>Ciao. Fabrizio

-([tblCalendario].[Data] Between [x_Francesca].[DataInizio] And


[x_Francesca].[DataFine]) AS HaPrestatoServizio

Stavo guardando solo adesso il codice da te postato ( volevo usarlo
per le festività ) e questa riga non la capivo a fondo poi ci sono
arrivato: confronta le date tra la tabella calendario e quella
insegnanti , quando le date coincidono da vero (-1, anzi 1 col meno
davanti ) e quando non coincidono da falso (0) , per cui il campo
'HaPrestatoServizio' è un campo booleano: sottile, mi piace, non
avevo mai usato una cosa così.

So che così ammetto la mia ignoranza , ma non me ne frega nulla (
tanto non era un segreto ), anzi se hai da aggiungere ti prego fallo.

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 19, 2002, 6:08:21 AM9/19/02
to
> "Fabrizio" [...]:

> >Ci risentiamo allora ( tra lavoro, studio e compitini tuoi )
> -([tblCalendario].[Data] Between [x_Francesca].[DataInizio] And
> [x_Francesca].[DataFine]) AS HaPrestatoServizio
> Stavo guardando solo adesso il codice da te postato ( volevo usarlo
> per le festività ) e questa riga non la capivo a fondo poi ci sono
> arrivato: confronta le date tra la tabella calendario e quella
> insegnanti , quando le date coincidono da vero (-1, anzi 1 col meno
> davanti ) e quando non coincidono da falso (0) , per cui il campo
> 'HaPrestatoServizio' è un campo booleano:

Ok. E precisiamo che da booleano, grazie a quel meno, lo abbiamo
convertito in un intero.

> sottile, mi piace, non avevo mai usato una cosa così.

Sei stato in ferie proprio quando se ne parlava da queste parti.

> So che così ammetto la mia ignoranza ,

Piantala. Tanto non te lo dico che sei bravo.

Fabrizio

unread,
Sep 19, 2002, 6:18:56 AM9/19/02
to
On Thu, 19 Sep 2002 12:08:21 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Fabrizio" [...]:
>> >Ci risentiamo allora ( tra lavoro, studio e compitini tuoi )
>> -([tblCalendario].[Data] Between [x_Francesca].[DataInizio] And
>> [x_Francesca].[DataFine]) AS HaPrestatoServizio
>> Stavo guardando solo adesso il codice da te postato ( volevo usarlo
>> per le festività ) e questa riga non la capivo a fondo poi ci sono
>> arrivato: confronta le date tra la tabella calendario e quella
>> insegnanti , quando le date coincidono da vero (-1, anzi 1 col meno
>> davanti ) e quando non coincidono da falso (0) , per cui il campo
>> 'HaPrestatoServizio' è un campo booleano:
>
> Ok. E precisiamo che da booleano, grazie a quel meno, lo abbiamo
>convertito in un intero.

Giusto .. ma perchè lo vuoi intero ? ( numble .. numble .. intanto ci
penso anch'io , cercherò di entrare nella tua testa ed uscirne vivo )

>> sottile, mi piace, non avevo mai usato una cosa così.
>
> Sei stato in ferie proprio quando se ne parlava da queste parti.

Se ero una donna come minimo mi dicevi anche il post al quale ti
riferisci con : l'oggetto, la data, l'ora, i minuti, i secondi .... e
chissà cos'altro.
Cmq quando sono in ferie sei dispensato da dire cose intelligenti.
:-))

>> So che così ammetto la mia ignoranza ,
>
> Piantala. Tanto non te lo dico che sei bravo.

Mai un complimento sigh .. da quando siamo sposati non mi guardi più ,
non mi cerchi più ... aveva ragione mia madre avrei dovuto sposare
Berlusconi al posto tuo :-)))) , strunziello che non sei altro :-)))
(sempre ridendo ).

Ciao. Fabrizio

Francesca

unread,
Sep 19, 2002, 7:56:44 AM9/19/02
to
"Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
news:882i9.10751$Av4.2...@twister2.libero.it...

>
> Quale soluzione stai tentando di realizzare?
> Se pensi che la mia soluzione possa andare bene, ma sei in difficoltà ad
> applicarla al tuo database, prova a postare la struttura della tua tabella
> che contiene i dati: potremmo vedere insieme di personalizzarla.
> Oppure dicci meglio quali siano le tue difficoltà.

Sì, la vs soluzione (tua e di Alessandro) sembra andare. Dico "sembra"
perchè poi devo verificarne la compatibilità col resto del db.
Cmq prima di continuare continuo a studiarmi i vs progressi...
Come avrete capito, procedo molto più lentamente di voi... :-)
Grazie 1000 x tutto.

> Roberto
>

Ciao. Francesca


Fabrizio

unread,
Sep 19, 2002, 8:00:22 AM9/19/02
to
>cut

>> Ok. E precisiamo che da booleano, grazie a quel meno, lo abbiamo
>>convertito in un intero.
>
>Giusto .. ma perchè lo vuoi intero ? ( numble .. numble .. intanto ci
>penso anch'io , cercherò di entrare nella tua testa ed uscirne vivo )
>
>cut

Ammetto che è una domanda idiota, quando l'ho fatta non mi ricordavo
che poi si doveva sommare i giorni .

Cmq per sfizio ho provato con count al posto di sum nella seconda
query e tutto torna a posto , poi ho provato a sommare il campo
booleano : ho un numero negativo, ma basta un meno al posto giusto (
nella seconda query ) e tutto torna in regola

Dall'help in linea:
"Le variabili di tipo Boolean sono memorizzate come numeri a 16 bit (2
byte) e possono essere solo True o False. Le variabili di tipo Boolean
sono visualizzate come Vero o Falso quando si utilizza Print, oppure
#TRUE# o #FALSE# quando si utilizza Write #. Utilizzare le parole
chiave True e False per assegnare alle variabili di tipo Boolean uno
dei due stati.

Quando si convertono in Boolean dati numerici, 0 diventa False e tutti
gli altri valori diventano True. Quando i valori di tipo Boolean
vengono convertiti in altri tipi di dati, False diventa 0 e True
diventa -1."

Domanda : ma se noi abbiamo già 0 e -1 non abbiamo già degli interi ?
Il campo "HaPrestatoServizio" non da già come risultato un numero
intero ( 0 e -1 ) pur essendo esso stesso un campo Booleano?

Datemi una mano e mi prenderò il braccio.


Ciao. Fabrizio

Alessandro Cara

unread,
Sep 19, 2002, 7:57:07 AM9/19/02
to
Fabrizio wrote:
[cut]

>
> Spero che adesso lo spieghi ... ops vi sto seguendo ancora , ma sto'
> DefaultValue mi interessa, visto che mi è capitato di incontrarlo
> recentemente: spiegaci Ale ( per me sto' NG sta diventando un manuale
Ti faccio il riassunto di una telenovela, visto che non hai voluto
leggerla

1) D. Maniero aveva il problema di ripetere i dati dal
record precedente

2) Ne e' nato un casino

3) Fra le varie indicazioni (credo di Ganci) c'era l'uso
del defaultvalue

4) Io non avendolo mai usato non ne sapevo nulla e l'ho
anche "snobbato"

5) D. Maniero ha intrapreso la strada suggerita da me
che prevedeva un po' di codice sparso in giro

6) Quando la cosa ha interessato anche te, hai usato la
soluzione defaultvalue con quel problema di dover
racchiudere la data fra apici altrimenti la visualizzazione
che si ottiene non e' corretta

7) Dopo questa situazione mi sono andato a vedere la DefaultValue
e l'ho provata e funziona ed ho visto che la visualizzazione
della data e' funzione anche del tipo di formato
(a me dava una cosa tipo 0.00.47 evidentemente la parte
di orario)

8) pero' avendo osservato una cosa ho modificato le routine di
uso della defaultvalue per ottenere una "feature" aggiuntiva
per la gioia del Borrelli ecco il codice

Private Sub Form_AfterUpdate()
Me.idinsegnante.DefaultValue = Me.idinsegnante
Me.anno.DefaultValue = Me.anno
Me.inizio.DefaultValue = "'" & Me.inizio & "'"
Me.fine.DefaultValue = "'" & Me.fine & "'"
End Sub

Private Sub Form_current()
If Not Me.NewRecord Then
Call Form_AfterUpdate
End If
End Sub

Qual'e' la feature aggiuntiva. E' che, in questo caso, se
mi posiziono su qualsiasi record viene fatto il prelievo dei
valori del record su cui mi sono posizionato. Nel caso in cui
si elimina la form current, ovviamente, avviene lo stesso solo
se modifico il record su cui mi sono posizionato.
La cosa mi puo' fare comodo.

sentiti saluti
--
a.cara

Fabrizio

unread,
Sep 19, 2002, 8:41:07 AM9/19/02
to

>Ti faccio il riassunto di una telenovela, visto che non hai voluto
>leggerla

Dammi torto.

>1) D. Maniero aveva il problema di ripetere i dati dal
> record precedente

Eravamo partiti da lì

>2) Ne e' nato un casino

E lì infatti ho lasciato perdere il 3d.

>3) Fra le varie indicazioni (credo di Ganci) c'era l'uso
> del defaultvalue

Che lo diceva a me nel 3d aperto da me ( ti sei perso anche tu , ma
per cavalleria non vuoi ammetterlo )

>4) Io non avendolo mai usato non ne sapevo nulla e l'ho
> anche "snobbato"

Cattivo, Cattivo, Cattivo, Cattivo, Cattivo, Cattivo, Cattivo,
Cattivo, Cattivo, Cattivo, Cattivo, Cattivo.

>5) D. Maniero ha intrapreso la strada suggerita da me
> che prevedeva un po' di codice sparso in giro

Lasciamo stare quel 3d ti prego, mi viene l'orticaria a pensarci.

>6) Quando la cosa ha interessato anche te, hai usato la
> soluzione defaultvalue con quel problema di dover
> racchiudere la data fra apici altrimenti la visualizzazione
> che si ottiene non e' corretta

Lo dici in un modo che sembra, che non mi interessava il 3d di Debora:
in verità non l'ho praticamente letto ( anche perchè non avevo capito
cosa volesse veramente, per cui la soluzione sarebbe, cmq, stata
inutile ).
Cmq per il resto è corretto ( restano dei quesiti, ma lascio perdere).

>7) Dopo questa situazione mi sono andato a vedere la DefaultValue
> e l'ho provata e funziona ed ho visto che la visualizzazione
> della data e' funzione anche del tipo di formato
> (a me dava una cosa tipo 0.00.47 evidentemente la parte
> di orario)

Qua ti dovresti spiegare meglio: vuoi dire che siccome avevi impostato
prima da qlc parte la data/ora in quel formato te lo restituiva così ?

>8) pero' avendo osservato una cosa ho modificato le routine di
> uso della defaultvalue per ottenere una "feature" aggiuntiva
> per la gioia del Borrelli ecco il codice
>
> Private Sub Form_AfterUpdate()
> Me.idinsegnante.DefaultValue = Me.idinsegnante

Capito
> Me.anno.DefaultValue = Me.anno

Capito

> Me.inizio.DefaultValue = "'" & Me.inizio & "'"

Capito ( era questo a darti quel formato ?)

> Me.fine.DefaultValue = "'" & Me.fine & "'"

Capito ( come prima )

> End Sub
>
> Private Sub Form_current()
> If Not Me.NewRecord Then
> Call Form_AfterUpdate
> End If
> End Sub

Questo me lo devo studiare.

>...

E Grazie per la spiegazione mi aiuterà nello studio.

>sentiti saluti

Anche a te.

Ciao. Fabrizio

Fabrizio

unread,
Sep 19, 2002, 10:10:35 AM9/19/02
to
On Thu, 19 Sep 2002 11:59:25 +0200, Fabrizio
<fabrizio...@SPAMtiscalinet.it> wrote:

>
>>cut
>>Ci risentiamo allora ( tra lavoro, studio e compitini tuoi )
>>
>>Ciao. Fabrizio
>
>-([tblCalendario].[Data] Between [x_Francesca].[DataInizio] And
>[x_Francesca].[DataFine]) AS HaPrestatoServizio
>
>Stavo guardando solo adesso il codice da te postato ( volevo usarlo
>per le festività ) e questa riga non la capivo a fondo poi ci sono
>arrivato: confronta le date tra la tabella calendario e quella
>insegnanti , quando le date coincidono da vero (-1, anzi 1 col meno
>davanti ) e quando non coincidono da falso (0) , per cui il campo
>'HaPrestatoServizio' è un campo booleano: sottile, mi piace, non
>avevo mai usato una cosa così.

>cut

Vado avanti ad aggiornarvi su come sto andando avanti con l'esempio di
Borrelli:
-ho creato una tabella (Festivi):
ID (contatore, PK); DataInizio (Data/ora); DataFine (Data/Ora).

-Ho popolato la tabella con un paio di record ( tanto per avere qlc ).

-Ho costruito una query di selezione sulla falsariga della prima query
di Maurì:

Query:'PerFestivi'

SELECT DISTINCT
Festivi.ID,
tblCalendario.Data,
-(tblCalendario.Data BETWEEN Festivi.DataInizio AND
Festivi.DataFine) AS GiorniFestivi
FROM
Festivi,
tblCalendario
WHERE
-(tblCalendario.Data BETWEEN Festivi.DataInizio AND
Festivi.DataFine)=1;

-Ho giocato su questa query un po' ( principalmente l'ho incrociata
con la tabella tblCalendario:

Query: 'CalendarioSenzaFestivi'

PARAMETERS
[Data iniziale?] DateTime,
[Data finale?] DateTime;
SELECT
tblCalendario.Data
FROM
PerFestivi
RIGHT JOIN
tblCalendario
ON
PerFestivi.Data = tblCalendario.Data
WHERE
(tblCalendario.Data Between [Data iniziale?] AND [Data finale?])
AND PerFestivi.Data IS NULL;
)

.......................................................................................................................................................................

Adesso vado ad operare con le domeniche : pensavo a una qlc che prende
le date formattate con solo il giorno ( tipo:
Format ([tblCalendario.Data] , 'ddd')
) e poi escludo 'Dom' ...mhm .... forse conviene anche che prima metta
Cstr davanti a Format ... numble ... devo provare.

Ah ... siccome ho un codice che mi genera il calendario pensavo anche
di escludere le domeniche da li ... poi già che siamo sempre da quel
codice volevo decidere quale tabella costruire ( una per ogni anno
dopo esplicita richiesta, quindi una tabella per anno ) ... c'è un
sacco di carne sul fuoco speriamo di riuscire a finire e che il capo
mi lasci stare.

p.s. decisamente per il momento ho lasciato perdere la soluzione di
Roberto, ma è solo perchè ancora non ho capito bene il suo codice.


Ciao. Fabrizio

Fabrizio

unread,
Sep 19, 2002, 11:22:29 AM9/19/02
to
>cut

Continuo per il momento solo con le query:

- Eliminare le Domeniche dal calendario:

Query:'CalendarioSenzaDom'

SELECT
tblCalendario.Data,
CStr(Format([tblCalendario.Data],'ddd')) AS NomeLungo
FROM
tblCalendario
WHERE
CStr(Format([tblCalendario.Data],'ddd')) Not In ('Dom')
ORDER BY
tblCalendario.Data;

( ho selezionato anche 'CStr(Format([tblCalendario.Data],'ddd')) AS
NomeLungo' per controllare la query, ma in definitiva non serve, come
non serve Cstr davanti a Format, l'ho tenuto per sfizio ( mi ricorda
la prima domanda che ho rivolto al NG ))

- Eliminare i giorni festivi dalla query dove elimino le domeniche:

Query:'CalendarioScolastico'

SELECT
CalendarioSenzaDom.Data
FROM
CalendarioSenzaDom
LEFT JOIN
PerFestivi
ON
CalendarioSenzaDom.Data = PerFestivi.Data
WHERE
(CalendarioSenzaDom.Data BETWEEN [DataIniziale] AND [DataFinale])
AND PerFestivi.Data Is Null;

Non ho messo i parametri questa volta con sommo dispiacere di Maurì.

Semplificando molto.

Così ho il calendario ( dal '98 al '05, ricordate il codice che
generava i record in tblCalendario)su cui fare i calcoli dei giorni
lavorativi degli insegnanti: c'è ancora da lavorarci parecchio ( mi è
gia venuto in mente un paio di cose da farci su, sempre con le query,
ma ho pietà di voi e ve lo dirò solamente se approdo a qlc ), tra
l'altro questo post dovrebbe rispondere, in parte, a un vecchio post (
di quasi due mesi fa ) in cui si domandava come gestire gli
abbonamenti in una palestra: non è un DB però è un inizio.

Adesso mi piacerebbe fare qlc attraverso codice ( tipo eliminare le
domeniche, scegliere gli anni .... ), ma qui entriamo in terreno
minato per me, per cui con vostro sommo piacere prima che rimetta
piede in questo 3d passerà parecchia acqua sotto i ponti.

A meno che non intervenga Maurì: a lui non so resistere.


Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 19, 2002, 12:53:08 PM9/19/02
to
> "Fabrizio" [...]:

> >Adesso vado ad operare con le domeniche : pensavo a una qlc che prende
> >le date formattate con solo il giorno ( tipo:
> >Format ([tblCalendario.Data] , 'ddd')
> >) e poi escludo 'Dom' ...mhm .... forse conviene anche che prima metta
> >Cstr davanti a Format ... numble ... devo provare.
> >cut
>
> Continuo per il momento solo con le query:
>
> - Eliminare le Domeniche dal calendario:
>
> Query:'CalendarioSenzaDom'
>
> SELECT
> tblCalendario.Data,
> CStr(Format([tblCalendario.Data],'ddd')) AS NomeLungo
> FROM
> tblCalendario
> WHERE
> CStr(Format([tblCalendario.Data],'ddd')) Not In ('Dom')
> ORDER BY
> tblCalendario.Data;
>
> ( ho selezionato anche 'CStr(Format([tblCalendario.Data],'ddd')) AS
> NomeLungo' per controllare la query, ma in definitiva non serve, come
> non serve Cstr davanti a Format, l'ho tenuto per sfizio ( mi ricorda
> la prima domanda che ho rivolto al NG ))
[...]

Meglio non toglierseli questi sfizi. Scriverei piuttosto:

Format([tblCalendario].[Data],'ddd')="dom"

ma questo metodo e' "localizzato". Cioe' funziona solo per la lingua
italiana. Meglio usare la funzione WeekDay:

WeekDay([tblCalendario].[Data])=1

Fabrizio

unread,
Sep 19, 2002, 3:21:36 PM9/19/02
to
On Thu, 19 Sep 2002 18:53:08 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:


>> ( ho selezionato anche 'CStr(Format([tblCalendario.Data],'ddd')) AS
>> NomeLungo' per controllare la query, ma in definitiva non serve, come
>> non serve Cstr davanti a Format, l'ho tenuto per sfizio ( mi ricorda
>> la prima domanda che ho rivolto al NG ))
>[...]
>
> Meglio non toglierseli questi sfizi. Scriverei piuttosto:
>
> Format([tblCalendario].[Data],'ddd')="dom"

Con 'NOT' davanti , oppure con <> a posto di =, giusto?
Ma (a parte 'CSTR', che č una mia fissa ) perchč lo preferisci a 'IN'
, c'č qlc motivo particolare ?

>ma questo metodo e' "localizzato". Cioe' funziona solo per la lingua
>italiana. Meglio usare la funzione WeekDay:
>
>

Sempre restando nell'ambito della lingua italiana ( non c'avevo
pensato, si vede che non sono uno sviluppatore di software ), ho usato
Format nella SELECT e WeekDay in WHERE , cosě: mi sembrava carino.
Cmq ho capito il problema, č un aspetto che cercherň, nel mio piccolo,
di non trascurare.
Grazie ancora ti farň sapere come va con VBA ( fra qlc eone si
intende).

Ciao. Fabrizio

Fabrizio

unread,
Sep 19, 2002, 3:26:28 PM9/19/02
to
>cut

>Ma (a parte 'CSTR', che č una mia fissa ) perchč lo preferisci a 'IN'
>, c'č qlc motivo particolare ?
>cut

perchč preferisci '=' a 'IN'


, c'č qlc motivo particolare ?

Cosě ha piů senso la domanda, scusa

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 19, 2002, 8:27:25 PM9/19/02
to
> "Fabrizio" [...]:
> perchè preferisci '=' a 'IN'
> , c'è qlc motivo particolare ?

La forma con "In" puoi usarla solo nello script di una query. Capita
invece che una formula, anche non complessa, prima di scriverla in sql la
testi con Visual Basic e una volta che ritieni sia funzionante la incolli in
sql...

Fabrizio

unread,
Sep 20, 2002, 1:04:15 AM9/20/02
to
On Fri, 20 Sep 2002 02:27:25 +0200, "Maurizio Borrelli"
<maurizio...@freepass.it> wrote:

>> "Fabrizio" [...]:
>> perchè preferisci '=' a 'IN'
>> , c'è qlc motivo particolare ?
>
> La forma con "In" puoi usarla solo nello script di una query. Capita
>invece che una formula, anche non complessa, prima di scriverla in sql la
>testi con Visual Basic e una volta che ritieni sia funzionante la incolli in
>sql...

Grazie.

Ciao. Fabrizio

Debora

unread,
Sep 20, 2002, 2:30:39 AM9/20/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D89BB93...@blunet.it...
[cut]

>
> 8) pero' avendo osservato una cosa ho modificato le routine di
> uso della defaultvalue per ottenere una "feature" aggiuntiva
> per la gioia del Borrelli ecco il codice
>
> Private Sub Form_AfterUpdate()
> Me.idinsegnante.DefaultValue = Me.idinsegnante
> Me.anno.DefaultValue = Me.anno
> Me.inizio.DefaultValue = "'" & Me.inizio & "'"
> Me.fine.DefaultValue = "'" & Me.fine & "'"
> End Sub
>
> Private Sub Form_current()
> If Not Me.NewRecord Then
> Call Form_AfterUpdate
> End If
> End Sub
>
> Qual'e' la feature aggiuntiva. E' che, in questo caso, se
> mi posiziono su qualsiasi record viene fatto il prelievo dei
> valori del record su cui mi sono posizionato. Nel caso in cui
> si elimina la form current, ovviamente, avviene lo stesso solo
> se modifico il record su cui mi sono posizionato.
> La cosa mi puo' fare comodo.
>


Ale, ma stai dicendo che tutta la pappardella che ho fatto io
può essere modificata o meglio sostitita con:


Private Sub Form_current()
If Not Me.NewRecord Then
Call Form_AfterUpdate
End If
End Sub

Ho capito bene? Sai mi eviterebbe di ripetere
tante volte il codice per ogni controllo!


--
Debora


Alessandro Cara

unread,
Sep 20, 2002, 3:12:44 AM9/20/02
to
Debora ha scritto:
[cut]

>
> Ale, ma stai dicendo che tutta la pappardella che ho fatto io
> può essere modificata o meglio sostitita con:
> Private Sub Form_current()
> If Not Me.NewRecord Then
> Call Form_AfterUpdate
> End If
> End Sub
>
> Ho capito bene? Sai mi eviterebbe di ripetere
> tante volte il codice per ogni controllo!
yes e' chiaro se sa!

(pero' attenzione il blocco di codice che viene chiamato (call)
deve essere "buono" per tutti i controlli in cui lo chiami,
questo talvolta richiede una certa "generalizzazione", che,
normalmente, si ottiene con l'uso di parametri, cfr. la
routine controlChk sull'altro 3d)

Guardati il concetto di Funzione (o sub) e Richiamo di funzione
(prima o poi passeremo alle classi)

--
a.cara

Debora

unread,
Sep 20, 2002, 3:57:39 AM9/20/02
to

"Alessandro Cara" <al...@blunet.it> ha scritto nel messaggio
news:3D8ACA6C...@blunet.it...

Forse è meglio che lo testi (IO) con
una applicazione prova.

--
Debora

Francesca

unread,
Sep 20, 2002, 5:58:33 PM9/20/02
to

"Francesca" <francesc...@inwind.it> ha scritto nel messaggio
news:amce0m$880$1...@newsreader.mailgate.org...

> "Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
> news:882i9.10751$Av4.2...@twister2.libero.it...
> >

> Sě, la vs soluzione (tua e di Alessandro) sembra andare.

Sěěěě! Molto bene! Grazie!
La soluzione di Maurizio nn l'ho capita tanto... Ma per limiti miei (tempo,
ignoranza,...) Cmq mi sembra interessante il concetto, e mi riprometto di
studiarmela meglio.
Cmq, (Maurizio nn volermene) per un insegnante con incarico annuale sono
considerati 360 gg lavorativi, dal 01/09 al 31/08. Quindi con festivi,
riposi ecc.
Cmq č interessantissimo il problema che ti sei posto... :-))) e puň sempre
tornare utile...

Uff! Vorrei dedicare + tempo ad Access... Purtroppo per ora rimane solo un
bel passatempo.

Thanks. Francesca


Maurizio Borrelli

unread,
Sep 21, 2002, 5:12:40 AM9/21/02
to
> "Francesca" [...]:

> La soluzione di Maurizio nn l'ho capita tanto... Ma per limiti miei
(tempo,
> ignoranza,...) Cmq mi sembra interessante il concetto, e mi riprometto di
> studiarmela meglio.
> Cmq, (Maurizio nn volermene)

Non capisco. Perche' mai dovrei volertene?

> per un insegnante con incarico annuale sono
> considerati 360 gg lavorativi, dal 01/09 al 31/08. Quindi con festivi,
> riposi ecc.

> Cmq è interessantissimo il problema che ti sei posto... :-))) e può


sempre
> tornare utile...
> Uff! Vorrei dedicare + tempo ad Access... Purtroppo per ora rimane solo un
> bel passatempo.

Meglio delle parole crociate, no?

Mi permetto pero' una piccola considerazione generale, cioe' non
riguardante te in particolare.

Quando si fanno le parole crociate si puo' operare almeno in due modi:

a) si leggono le definizioni e si compilano le caselle con le
parole che si ritengono corrette e, con gli incroci, si cerca di individuare
le parole che non si conoscono;

b) non si leggono le definizioni e si riempiono le caselle con
lettere a caso.

Sia il metodo a) che il metodo b) ci fanno "passare" il tempo, ma solo
il metodo a) puo' essere definito "fare le parole crociate".

Alessandro Cara

unread,
Sep 21, 2002, 5:56:16 AM9/21/02
to

"Francesca" <francesc...@inwind.it> ha scritto nel messaggio
news:amh3s2$bn4$1...@newsreader.mailgate.org...

>
> "Francesca" <francesc...@inwind.it> ha scritto nel messaggio
> news:amce0m$880$1...@newsreader.mailgate.org...
> > "Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
> > news:882i9.10751$Av4.2...@twister2.libero.it...
> > >
>
> > Sě, la vs soluzione (tua e di Alessandro) sembra andare.
non darmi meriti che non ho.
Fabrizio ed io abbiamo fatto il "beta" test
--
a.cara


Francesca

unread,
Sep 22, 2002, 3:19:42 AM9/22/02
to

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:amhehj$5s82c$1...@ID-52090.news.dfncis.de...
> > "Francesca" [...]:


> > Cmq, (Maurizio nn volermene)
>
> Non capisco. Perche' mai dovrei volertene?

perchè la storia dei 360 gg lavorativi degli insegnanti te l'ho raccontata
forse un po' tardi... :-)

> > Access... Purtroppo per ora rimane solo un
> > bel passatempo.
>
> Meglio delle parole crociate, no?

Già, tanto ma tanto meglio!

> Mi permetto pero' una piccola considerazione generale, cioe' non
> riguardante te in particolare.
>

[cut]

Hai ragione :)

> Ciao :-)
> Maurizio

Ciao. Franci


Fabrizio

unread,
Sep 22, 2002, 11:38:56 AM9/22/02
to
On Sat, 21 Sep 2002 11:56:16 +0200, "Alessandro Cara" <al...@blunet.it>
wrote:

Parlava di te e Roberto .... bestiun. :-)

Ciao. Fabrizio

Alessandro Cara

unread,
Sep 22, 2002, 12:05:12 PM9/22/02
to
Fabrizio wrote:


>
> Parlava di te e Roberto .... bestiun. :-)

Ma no? Sicuro? Non di filologia romanza?
--
a.cara

Fabrizio

unread,
Sep 22, 2002, 12:27:48 PM9/22/02
to
On Sun, 22 Sep 2002 18:05:12 +0200, Alessandro Cara <al...@blunet.it>
wrote:

>Fabrizio wrote:


>
>
>>
>> Parlava di te e Roberto .... bestiun. :-)
>Ma no? Sicuro? Non di filologia romanza?

Siccome ogni tanto mia moglie legge quello che posto ho preferito
tirarmene fuori , spiego: non capendo lei concetti tipo "beta Tester"
e siccome fa fatica a credere che IO non sia su una chat porno .....
:-))))) .... insomma ho anche due figli e non vorrei rischiare un
divorzio per questioni simili( " Che cosa ha i testato alla fanciulla?
la sua beta ? PORCO") :-))))

Ciao. Fabrizio

Maurizio Borrelli

unread,
Sep 23, 2002, 12:18:13 PM9/23/02
to
> "Francesca" [...]:
> > "Maurizio Borrelli" [...]:

> > > "Francesca" [...]:
> > > Cmq, (Maurizio nn volermene)
> > Non capisco. Perche' mai dovrei volertene?
> perchè la storia dei 360 gg lavorativi degli insegnanti te l'ho raccontata
> forse un po' tardi... :-)

:-))

Considera che, in un normale rapporto di lavoro, in un caso come questo,
non servirebbe "scusarsi" in quanto sarebbe sufficiente pagare, alle usuali
condizioni, una fattura in piu', probabilmente salata.

0 new messages