Newsgroup: it.comp.appl.access
Titolo: Funzione Autoaggiornante

Salve a tutti.
Vorrei realizzare su una maschera (o come funzione) per l'inserimento in
automatico di alcuni valori per gestire gruppi di ordini che variano
nell'arco di 4 turni giornalieri.
Mi spiego meglio con un esempio di valori:
N.        DATA    TURNO
1 - 21/04/2003 - turno 3
2 - 21/04/2003 - turno 4
3 - 22/04/2003 - turno 1
4 - 22/04/2003 - turno 2
5 - 22/04/2003 - turno 3
6 - 22/04/2003 - turno 4
ora vi chiedo se inserisco ad esempio il turno 7, la funzione dovrebbe
automaticamente generare la data 23/04/2003 ed il turno 1.
E' possibile?
Vi chiederete perchč?
L'operatore, che č mio fratello, inserisce mediamente 400 ordini al  giorno
ed un automazione gli farebbe davvero risparmiare tanto lavoro...
Grazie, per l'aiuto.

 E' possibile?
Potresti inserire nella maschera una casella di testo (con la data impostata
al valore predefinito ed origine da un campo data) ed un gruppo di 4 opzioni
(origine campo numerico) ed una casella per il N. (origine campo contatore).
Non so se ho capito bene cosa vuoi fare, ma volendo automatizzare potresti
scrivere una funzione su "dopo aggiornamento" della casella data, in modo
che la prima volta che inserisci una data ti imposta a 1 il gruppo di
opzioni, la seconda volta 2, ecc.
Maurizio


Ciao Maurizio, ti ringrazio della disponibilità innanzitutto, e non credo
di aver compreso la tua soluzione, non essendo stato
chiaro nell'esposizione del problema.
Innanzitutto i turni di lavoro sono così intesi:
Turno di lavoro 1 = 24:00 - 06.00
Turno di lavoro 2 = 06:00 - 12.00
Turno di lavoro 3 = 12.00 - 18.00
Turno di lavoro 4 = 18:00 - 24.00
Lo scenario che si può presentare oltre all'esempio precedente
può anche essere il seguente, dove N. è un campo contatore,
DATA è un campo data e TURNO è un campo numerico
con valori variabili da 1 a 4:
N.       DATA       TURNO     (ed altri campi...)
....
25   18/04/2003         2
26   18/04/2003         3
27   18/04/2003         4
28   19/04/2003         1
29   19/04/2003         2
30   19/04/2003         3
31   19/04/2003         4
32   20/04/2003         1
etc...
In pratica partendo dal record 25 con turno 2 il successivo record 26
dovrebbe aggiornare di una unità il campo turno dandogli il valore 3 e
"copiare" nel campo data il valore del record 25 (18/04/2003)
ed arrivato al turno 4 far incrementare la data da 18/04/2003 a 19/04/2003.
Ho provato una funzione in BeforeUpdate sul campo turno, tanto per
cominciare a smanettare un pò col codice VBA, ma non mi
funziona perfettamente. Infatti fa' un po' di confusione con i record
precedenti...
Private Sub IDTurno_BeforeUpdate(Cancel As Integer)
If Me.Turno > 4 Then
Me.Turno.DefaultValue = "'" & Me.Turno.Value + 1 & "'"
Else
Me.Turno.DefaultValue = 1
End If
End Sub
Figurarsi se mi azzardo a tentare di scriverla compresa la data...
Vengo al dunque: un esempio di codice per aggiornare contemporaneamente
il campo data e il campo turno; con la condizione sulla data che dovrà
essere incrementata
di un giorno quando il campo turno ritorna nuovamente come valore 1.
Ringrazio e faccio a tutti i lettori del post un AUGURIO DI BUONA PASQUA.
Mike.

di un giorno quando il campo turno ritorna nuovamente come valore 1.
[cut]
Vedi se una soluzione di questo tipo potrebbe essere praticabile
1) Con una query di selezione ti ricavi il record con la massima data
e il massimo numero di turno (vedi SELECT, TOP, DESC); non conosco il
tuo livello ... se te la senti lo puoi anche fare direttamente via
recordset
2) A fronte dell'evento 'su corrente', se sei su nuovo record,
recuperi il numero di turno e la data di cui al punto precedente, e
imposti di conseguenza i valori predefiniti del controllo 'data' e
'turno' della maschera ( il numero - che è contatore - si aggiorna da
solo)
Se ti pare una buona soluzione prova ad andare avanti ...
eventualmente chiedi aiuto se hai problemi su qualche passaggio.
Una domanda: come intendi gestire i giorni festivi?
Ciao.
--
Alberto
No alle guerre

 ha scritto nel messaggio
news:5k2bavggdrsopg4g7...@4ax.com...

Grazie, proverò e faro' sapere
Non ho bisogno di gestire i festivi. Una volta iniziata una commessa, il
gruppo di turni sarà continuo fino alla sua chiusura... compreso Pasqua e
Natale eventualmente....
Ciao...
Michele

 ha scritto nel messaggio
news:HKZoa.22268$DN.6...@tornado.fastwebnet.it...

Scusa non avevo capito.
Prova a creare un campo ausiliario "pippo" e sull'evento "su corrente" a
scrivere questa sub:
Me![pippo] = DMax("[data]", "[tabella1]")
Select Case (DCount("[data]", "[tabella1]",
"(Forms![tabella1]![pippo]=[tabella1].[data])"))
Case Null
Me![data] = DMax("[data]", "[tabella1]")
Me![turno] = 1
Case 1
Me![data] = DMax("[data]", "[tabella1]")
Me![turno] = 2
Case 2
Me![data] = DMax("[data]", "[tabella1]")
Me![turno] = 3
Case 3
Me![data] = DMax("[data]", "[tabella1]")
Me![turno] = 4
Case Else
Me![data] = DMax("[data]", "[tabella1]") + 1
Me![turno] = 1
End Select
dove:
tabella1 è il nome della tabella di origine dati
il campo N è un campo contatore
Sappi che io non sono assolutamente un esperto e che probabilmente vi sono
modi più semplici, comunque questo funziona.
Ciao
Maurizio