Discussione:
Differenza tra due date in access 2010
(troppo vecchio per rispondere)
..:: GiGhEn ::..
2017-03-20 13:34:22 UTC
Permalink
Salve a tutti,

ho un file in excel con alcune celle in formato data con questa formula:
=SE(GIORNO.SETTIMANA(C48+G48+I48)=1;SOMMA(C48+G48+I48)+1;SE(G48<>"";SOMMA(C48+G48+I48);""))

in un'altra questa:
=SE(J48="";"";SOMMA(J48-H48))

Essendo che sto creando lo stesso file in access 2010, vorrei riportare lo stesso calcolo anche sotto access 2010.
Come posso fare?
Grazie mille
Davide
2017-03-21 00:01:59 UTC
Permalink
<Essendo che sto creando lo stesso file in access 2010, vorrei riportare lo
stesso calcolo anche sotto access 2010.


INTENDI trasformare quelle formule excel in codice VBA nel VB editor di
Access, da usare in qualche maschera?

Ad esempio la formula =SE(J48="";"";SOMMA(J48-H48)) diventerebbe ( J48 E
HA48 SONO CASELLE DI TESTO DELLA MASCHERA):


Private Sub Pulsante_Click()
Dim strP As String
If IsNull(J48.Value) Then strP = "" Else strP = (CInt(J48.Value) +
CInt(H48.Value))
MsgBox (strP)

End Sub
..:: GiGhEn ::..
2017-03-21 13:19:40 UTC
Permalink
Post by Davide
<Essendo che sto creando lo stesso file in access 2010, vorrei riportare lo
stesso calcolo anche sotto access 2010.
INTENDI trasformare quelle formule excel in codice VBA nel VB editor di
Access, da usare in qualche maschera?
Ad esempio la formula =SE(J48="";"";SOMMA(J48-H48)) diventerebbe ( J48 E
Private Sub Pulsante_Click()
Dim strP As String
If IsNull(J48.Value) Then strP = "" Else strP = (CInt(J48.Value) +
CInt(H48.Value))
MsgBox (strP)
End Sub
Non è esattamente quello che cercavo.
In effetti io sul file excel ho la
cella "C1" con nome "Data" dove inserisco una data
cella "G1" con nome "GG Dep." ed inserisco giorni 10, 20, 30, 90 ecc..
cella "I1" con nome "Data festivo"
cella "H1" con nome "Data ultima"
cella "K1" con nome "GG Oltre"
Formula nella cella "H1" =SE(GIORNO.SETTIMANA(C1+G1+I1)=1;SOMMA(C1+G1+I1)+1;SE(G1<>"";SOMMA(C1+G1+I1);""))
Formula nella cella "K1" =SE(J2="";"";SOMMA(J2-H2))

-------
Inserisco la prima data nella cella "C1" poi inserisco il numero di giorni es.: 90 nella cella "G1" a sua volta mi riporta in automatico nella cella "H1" la data ultima che indica la data che scadono i 90 giorni.
Alla fine nella cella "J" Data dep inserisco la data del deposito e nella cella "K1" mi riporta i "GG Oltre"

penso di essermi espresso abbastanza bene.
Il tutto devo poterlo usufruirlo in access senza inserire pulsanti ma in automatico.
Grazie a tutti
Davide
2017-03-21 20:45:16 UTC
Permalink
"..:: GiGhEn ::.." ha scritto nel messaggio news:4a764f62-03f5-4820-8f70-***@googlegroups.com...

<Il tutto devo poterlo usufruirlo in access senza inserire pulsanti ma in
automatico.

la logica sottostante a quelle formule (peraltro semplici ) va riscritta
dentro access se vuoi trasformare un file di excel in un vero e proprio
database !

E' possibile richiamare funzioni finanziarie avanzate di excel (difficili
e lunghe da tradurre in codice VBA access,tipo quelle sui mutui, statistiche
etc..) dalle maschere di access, passandogli i parametri ( le tue date ad
esempio) necessari scritti in caselle di testo , e visualizzare il risultato
in access premendo un pulsante , ma si deve usare codice di automazione per
richiamare le funzioni excel da access.
..:: GiGhEn ::..
2017-03-22 20:21:01 UTC
Permalink
Post by Davide
<Il tutto devo poterlo usufruirlo in access senza inserire pulsanti ma in
automatico.
la logica sottostante a quelle formule (peraltro semplici ) va riscritta
dentro access se vuoi trasformare un file di excel in un vero e proprio
database !
E' possibile richiamare funzioni finanziarie avanzate di excel (difficili
e lunghe da tradurre in codice VBA access,tipo quelle sui mutui, statistiche
etc..) dalle maschere di access, passandogli i parametri ( le tue date ad
esempio) necessari scritti in caselle di testo , e visualizzare il risultato
in access premendo un pulsante , ma si deve usare codice di automazione per
richiamare le funzioni excel da access.
--------------
Ciao e grazie della tua risposta, vorrei spiegarti meglio quello che ho intenzioni di fare.

Ho creato una tabella con questi campi:
DataSent. (campo data)
GG.Dep. (campo testo)
DataUltima (campo data)
GG.Fest. (campo testo)
DataDep. (campo data)
GG.Oltre (campo testo)
------------
Inserisco nel campo "DataSent" una data.
Inserisco nel campo "GG.Dep." il numero dei giorni di attesa per emanare il deposito, e nel campo"DataUltima" mi deve uscire la data che scade il deposito, a sua volta nel campo "GG.Fest." mi deve uscire quanti giorni festivi intercorrono tra le due date.
Nel campo "DataDep." inserisco la data del deposito che può essere di più o di meno di quella inserita nel campo "GGDep"
e nel campo "GGOltre" mi devono uscire i giorni oltre la scadenza del deposito.

Spero che sia stato abbastanza chiaro ora altrimenti cerco di sentitizzare ancora di più.
Grazie
Davide
2017-03-23 00:58:11 UTC
Permalink
<Inserisco nel campo "GG.Dep." il numero dei giorni di attesa per emanare il
deposito, e nel campo"DataUltima" mi deve uscire la data che scade il
deposito, a sua volta nel campo "GG.Fest." mi deve uscire <quanti giorni
festivi intercorrono tra le due date.
<Nel campo "DataDep." inserisco la data del deposito che può essere di più o
di meno di quella inserita nel campo "GGDep"
<e nel campo "GGOltre" mi devono uscire i giorni oltre la scadenza del
deposito.


Sì, puoi inserire nella tabella dei campi calcolati in funzione di altri (
es. il campo dataultima),se hai access 2010 o sup.
Io ho access 2007 , per cui devo prima trasformare la tabella in maschera
(crea maschera di tipo foglio dati), che ha lo stesso aspetto della tabella.
In tal modo si abilita il pulsante "generatore di espressioni" nella
finestra proprietà della colonna calcolata , in cui inserisci la formula.

Ad esempio
=[datasent]+[ggdep] (per la colonna data ultima)

Poi ci sono funzioni che sostituiscono
=SE(GIORNO.SETTIMANA(C1+G1+I1)=1;SOMMA(C1+G1+I1)+1;SE..altro... :

=IIf(Weekday([datasent])=1;[datasent]+1;"altro..")

ciao
..:: GiGhEn ::..
2017-03-23 19:11:21 UTC
Permalink
Post by Davide
<Inserisco nel campo "GG.Dep." il numero dei giorni di attesa per emanare il
deposito, e nel campo"DataUltima" mi deve uscire la data che scade il
deposito, a sua volta nel campo "GG.Fest." mi deve uscire <quanti giorni
festivi intercorrono tra le due date.
<Nel campo "DataDep." inserisco la data del deposito che può essere di più o
di meno di quella inserita nel campo "GGDep"
<e nel campo "GGOltre" mi devono uscire i giorni oltre la scadenza del
deposito.
Sì, puoi inserire nella tabella dei campi calcolati in funzione di altri (
es. il campo dataultima),se hai access 2010 o sup.
Io ho access 2007 , per cui devo prima trasformare la tabella in maschera
(crea maschera di tipo foglio dati), che ha lo stesso aspetto della tabella.
In tal modo si abilita il pulsante "generatore di espressioni" nella
finestra proprietà della colonna calcolata , in cui inserisci la formula.
Ad esempio
=[datasent]+[ggdep] (per la colonna data ultima)
Poi ci sono funzioni che sostituiscono
=IIf(Weekday([datasent])=1;[datasent]+1;"altro..")
ciao
Ciao ho risolto in parte e cioè:
Ho creato una tabella con i campi citati,
dalla tabella ho creato una maschera divisa con foglio dati sotto,
ho inserito in origine controllo del campo "DataUltima" lato maschera l'espressione: =[DataSent]+[GGDep]
ho inserito in origine controllo del campo "GGOltre" sempre lato maschera l'espressione: =[DataDep]-[DataUltima]
e mi fa i calcoli che volevo fare, solo con un piccolo problema che nella maschera lato dati (sotto) mi escono tutti i dati inseriti compreso quelle delle espressioni.
Ma quando chiudo tutto ed apro solo la tabella i campi dove ho inserito le espressioni non risulta salvato nessun dato mentre nella maschera divisa lato dati me li fa vedere.
Come posso risolvere il problema, e mi salvi i dati anche nella tabella?
Grazie di tutto.
ps.: poi passeremo all'altro calcolo.
Davide
2017-03-23 20:25:12 UTC
Permalink
"..:: GiGhEn ::.." ha scritto nel messaggio news:1e6509e2-6255-446d-9bda-***@googlegroups.com...

<dalla tabella ho creato una maschera divisa con foglio dati sotto,

dovevi creare una maschera \altre maschere\foglio dati

così hai una maschera come fosse una tabella, senza i problemi di
memorizzazione che hai, che richiedono la scrittura di codice vba apposito
per salvare i dati nella tabella sottostante alla maschera
divisa che hai creato.
..:: GiGhEn ::..
2017-03-23 21:13:07 UTC
Permalink
Post by Davide
<dalla tabella ho creato una maschera divisa con foglio dati sotto,
dovevi creare una maschera \altre maschere\foglio dati
così hai una maschera come fosse una tabella, senza i problemi di
memorizzazione che hai, che richiedono la scrittura di codice vba apposito
per salvare i dati nella tabella sottostante alla maschera
divisa che hai creato.
Niente non va proprio niente, nel modo che ti ho spiegato io è tutto ok, manca solo di poterlo memorizzare in tabella, anche se ci vuole un codice va bene lo stesso basta che memorizza tutto.
Davide
2017-03-24 01:06:32 UTC
Permalink
"..:: GiGhEn ::.." ha scritto nel messaggio news:1e6509e2-6255-446d-9bda-***@googlegroups.com...

<ho inserito in origine controllo del campo "DataUltima" lato maschera
l'espressione: =[DataSent]+[GGDep]

sbagliato,lascia come origine dati "DataUltima"

Poi vai nel campo GGDep , proprietà ,scheda Evento, "Prima di aggiornare"
(routine evento, clic sui puntini ...) , e inserisci :

Private Sub GGDep_BeforeUpdate(Cancel As Integer)
Me.DataUltima = Me.DataSent + Me.GGDep
End Sub


Salva tutto e riprova
Davide
2017-03-24 01:31:17 UTC
Permalink
<<ps.: poi passeremo all'altro calcolo.

funzione che calcola i giorni lavorativi (questa toglie le domeniche):


Public Function contafest(StartDate As Date, ByVal endDate As Date) As Long
Dim D As Long
D = endDate - StartDate + 1
i = CInt(D / 7)
daytot = D - i
contafest = daytot
MsgBox (contafest)
End Function


la si richiama ad es. così da un pulsante, o da evento passandogli due campi
data:


Private Sub Comando1_Click()
contafest "01/03/2017", "31/03/2017"
End Sub
..:: GiGhEn ::..
2017-03-24 09:06:34 UTC
Permalink
Post by Davide
<<ps.: poi passeremo all'altro calcolo.
Public Function contafest(StartDate As Date, ByVal endDate As Date) As Long
Dim D As Long
D = endDate - StartDate + 1
i = CInt(D / 7)
daytot = D - i
contafest = daytot
MsgBox (contafest)
End Function
la si richiama ad es. così da un pulsante, o da evento passandogli due campi
Private Sub Comando1_Click()
contafest "01/03/2017", "31/03/2017"
End Sub
Ciao, ok tutto a posto funziona ma, c'e' il comando del pulsante l'ho messo sull'evento beforeupdate e cioè così:

Private Sub GGFest_BeforeUpdate(Cancel As Integer)
contafest "[DataDep]","[DataUltima]"
End Sub

ma non mi funziona
Davide
2017-03-24 12:21:16 UTC
Permalink
<Private Sub GGFest_BeforeUpdate(Cancel As Integer)
<contafest "[DataDep]","[DataUltima]"
<End Sub


modifica la funzione così(modifica il nome mashera!!):

Public Function contafest(StartDate As Date, _
ByVal endDate As Date) As Long
Dim D As Long
D = endDate - StartDate + 1
i = CInt(D / 7)
contafest = i
Forms![NomeDellaTUAmascheraDivisa].ggfest = i
End Function


Poi, se vuoi sapere il numero delle domeniche tra dataultima e datadep
(inserite in quest'ordine), usa l'evento:


Private Sub datadep_AfterUpdate()
contafest Me.dataultima, Me.datadep

End Sub

Davide
2017-03-23 01:03:17 UTC
Permalink
"..:: GiGhEn ::.." ha scritto nel messaggio news:cec99811-089b-483c-8dac-***@googlegroups.com...
<a sua volta nel campo "GG.Fest." mi deve uscire quanti giorni festivi
intercorrono tra le due date.

questa funzione non c'è pronta, bisogna crearsela in un modulo di codice del
VBeditor con codice VBA (reperibile in rete) e poi richiamarla come fosse
presente in access.
Loading...