Newsgroup: it.comp.appl.access
Titolo: sono cretino io....

oppure non esiste una funziona che calcola i giorni lavorativi tra due date,
come per esempio (e facilissimamente) in excel?
Grazie.

 come per esempio (e facilissimamente) in excel?
Se ben ricordo dovrebbe essere sul sito comune
(
http://members.xoom.it/it_db_access/
).
Comunque ho il codice però in ufficio. Se nel frattempo nessuno te l'ha
dato, te lo posso mandare.
Ciao
Thierry

come per esempio (e facilissimamente) in excel?
gia' pronta non esiste.  siccome non sei cretino te la puoi scrivere,
cosi' ci metti dentro anche la Pasqua e il giorno del S. Patrono del
tuo comune che forse excel non considera.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 tuo comune che forse excel non considera.
Da questo punto di vista excel si comporta bene, quasi quanto "quattro",
accetta una matrice di date da considerare non lavorative.
L'unica cosa e' ricordarsi di implementare lo "strumento analisi", a me ha
fatto perdere due ore questa dimenticanza.

 (
http://members.xoom.it/it_db_access/
).
Al momento mi dice che non funziona/non e' accessibile, provo piu' tardi,
grazie.

Mai lodarsi... almeno pubblicamente!
;-))))
Ciao
Silvio

metterlo nel mio campo.
vedi sull'help Count.
comunque credo che quello che ti farebbe comodo sia una funzione alla
quale dai una data di inizio e una di fine e quella ti restituisce un
numero intero che corrisponde ai giorni lavorativi intercorrenti.  una
specie di datediff corretta, per intenderci.
io non la farei tanto complicata.  diciamo che creerei una tabella con
le date festive, con un campo DataFestiva (indicizzato, per poter
usare il metodo .seek) e DescrizioneFestivita (che non useremo ma non
si sa mai).
poi non farei altro che un ciclo dalla data di inizio a quella di fine
e incrementerei un contatore solo se la data e' feriale (mi era
scappato seriale...).  diciamo che farei una cosa del genere:
function QuantiGiorniLavorativi(dInizio as date, dFine as date) as
Long 
' non si sa mai, ti servissero piu' di 32mila giorni...
dim c as long
dim d as date
dim rstFestivi ' tabella delle festivita' personalizzate
                     ' (Pasquetta, S. Patrono...)
set rstFestivi=currentdb.openrecordset("TabellaFestivita")
rstFestivi.index=nomeindice
' non si sa mai inverti le date:
if dInizio>dFine then
	d=dInizio
	dInizio=dFine
	dFine=dInizio
end if
d=dInizio
do until dInizio >=dFine
	select case weekday(d)
		case vbsaturday, vbsunday
			' sabato o domenica, non fare niente
		case else
			' vedi se sta nella tabella dei festivi
"personalizzati"
			rstFestivi.movefirst
			rstFestivi.seek "=", d
			if rst.nomatch then
				' non sta nei festivi
				c=c+1
			end if
	end select
loop
QuantiGiorniLavorativi=c
end function


 si sa mai).
La useremo si, all'inizio anno si caricano le feste dell'anno, prese dal
contratto nuovo, o da qualche ricorrenza o da qualche novita' politica o
sindacale, e si filtra su quello.
In pratica si fa una query in sottrazione dal calendario dell'anno dalle
festivita'.
Grazie ancora, mi sono comprato un paio di libri, ci sono troppe cose che
non so.
Ciao

risultato della query al campo?
forse non ricordo bene il thread, cosa intendi per passare il
risultato della query alcampo?  quale campo?


 risultato della query alcampo?  quale campo?
mi sfugge una cosa, probabilmente molto banale am che io non vedo...
facciamo l'esempio "count", ok, io lancio una query, anche in quel buffo
modo sql, select where, count etc.
Ok, la query mi rende 42.
Adesso devo passare 42 nel campo "giorni" della tabella "carico macchine".
Sarebbe un "[giorni]=somma di giorni" in paradox, access cosa lo fa
diventare?

risultato della query al campo?
forse non ricordo bene il thread, cosa intendi per passare il
risultato della query alcampo?  quale campo?
--


diventare?
ok, capito.  devi scrivere questo dato in una tabella.  ci sono
diversi modi (come volevasi dimostrare) per scrivere un dato in un
campo (colonna) di una tabella.  il problema e' in che record (riga)
andarlo a scrivere.
purtroppo non conosco paradox per cui non so dirti a cosa corrisponda
l'espressione che dici, se corrispondenze vi siano.
posso dirti i modi in cui scrivere il dato in una tabella. allora, il
primo e' settare un recordset (detto anche in altri ambienti
puntatore, qualcosa che punta ai record) sulla tabella.  dopodiche'
per mezzo del recordset puoi aggiungere un nuovo record (metodo
addnew) o posizionarti sul record che ti interessa e chiedere di
modificarlo (metodo .edit), poi scrivi il valore nel campo che ti
interessa e salvi la modifica (metodo .update).  ad es.:
dim rst as recordset
set rst=currentdb.openrecordset("carico macchine")
rst.addnew
rst!Giorni=valore
rst.update
adesso, se valore te lo ricavi con una query di conteggio, te lo puoi
ricavare cosi':
dim rstC as recordset
dim ssql as string
dim valore as long
ssql = "Count(*) as Conteggio FROM [carico macchine] WHERE..."
set rstC=currentdb.openrecordset(ssql)
valore=rst!Conteggio
se invece preferisci usare la funzione di cui parlavamo:
dim valore as long
valore=funzione(argommento1, argomento2...)
questo e' un modo.
un altro modo e' quello di sfruttare gli evento di una maschera
collegata alla tabella che vuoi aggiornare.  in seguito ad un certo
evento (clic di un pulsante, nuovorecord ecc.) fai eseguire un codice
che calcola il valore, con la query o la funzione, e lo assegni al
controllo della maschera legato al campo che ti interessa aggiornare.
spero sia tutto chiaro...


 collegata alla tabella che vuoi aggiornare.
grazie ancora, mi stai facendo un vero e proprio corso! :-)
Se capitera' di incontrarsi e ti piace la birra sarei lieto di offrirtene
quanta ne riusciamo a bere!

quanta ne riusciamo a bere!
te dice bene perche' ho smesso di bere alcolici...  pero' magno come
un disperato...


 un disperato...
:-)

lavorativi.
mah, per quanto alcuni lo facciano e per quanto in effetti le date/ore
sianno immagazzinatein un valore numerico in cui la parte intera
rappresenta i giorni e la parte decimale ore, minuti e secondi, io
preferisco non eseguire calcoli aritmetici con tali valori.
preferisco le funzioni apposite che anche tu dici, dateadd e datediff.
(da notare che datediff non e' il contrario di dateadd: dateadd
aggiunge *algebricamente* un valore ad una data, ossia puo' anche
aggiungere un valore negativo).


 pero' non puoi usare recordset.campo.
Scusate se mi intrometto, ma, a rafforzare quanto elegantemente spiegato da
Lbo, riporto il testo della guida in linea di A97 a tale riguardo:
_______________________________________________________
Utilizzo degli operatori punto esclamativo (!) e punto (.) nelle espressioni
È possibile utilizzare gli operatori punto esclamativo (!) e punto (.) in un
identificatore per indicare il tipo di elemento immediatamente successivo.
L'operatore punto esclamativo (!) indica che ciò che segue è un elemento
definito dall'utente, cioè un elemento di un insieme. È possibile utilizzare
l'operatore punto esclamativo (!), ad esempio, per fare riferimento ad una
maschera o ad un report aperto oppure ad un controllo di una maschera o di
un report aperto.
Identificatore                        Fa riferimento a
Forms![Ordini]                     Maschera aperta Ordini
Reports![Fattura]                 Report aperto Fattura
Forms![Ordini]![IDOrdine]  Controllo IDOrdine della maschera aperta Ordini
L'operatore punto (.) indica che ciò che segue è un elemento attivo definito
dal programma. Utilizzare l'operatore punto (.), ad esempio, per fare
riferimento ad una proprietà di una maschera, di un report o di un
controllo.
Nota   È possibile inoltre utilizzare l'operatore punto (.) per fare
riferimento ad un valore di campo di un'istruzione SQL, ad un metodo di
Visual Basic, Applications Edition o ad un insieme. L'identificatore
Forms![Ordini].Controls, ad esempio, fa riferimento all'insieme Controls
della maschera Ordini. Poiché, tuttavia, l'insieme Controls è predefinito
per maschere e report, non è necessario, in genere, farvi riferimento in
modo esplicito.
_______________________________________________________


 Lbo, riporto il testo della guida in linea di A97 a tale riguardo:
Ti ringrazio.
Per non sembrare cretino del tutto (o per rafforzare l'idea) voglio
aggiungere che ho certo un help sull'uso del punto esclamatico in tutto
l'help di A2000, senza trovarlo.

l'help di A2000, senza trovarlo.
hai priovato all'inizio inizio?  comunque vedi il mex di Silvio.
--
