Newsgroup: it.comp.appl.access
Titolo: per P.Bianchi (calendario)

Ciao P.Bianchi
purtroppo la routine mi si blocca quando deve cancellare il calendario
precedente, che io non ho ancora
Ti posso mandare la mia prova del DB privatamente perchè tu possa
verificare?
comunque grazie per la tua risposta
----------------------------------------------------------------------------
---------------
P.Bianchi wrote:
Copio una routine che avevo preparato per una mia maschera "MSK
calendario".
Opera su una tabella "TBL calendario" (campi data, day-of-week e note)
La maschera ha due controlli in input, caselle testo "dadata" e "adata"
entrambe formattate data.
poi ha un bottone "genera calendario", col seg. codice  associato
all'evento click:
---------------------------------------------------------
Private Sub GeneraCalendario_Click()
DoCmd.Hourglass True
Dim mydb As Database
Dim RScalend, RSfest As Recordset
Dim first, last, data_iesima As Date
Dim i, n As Integer
Dim ID As String
Set mydb = CurrentDb
Set RScalend = mydb.OpenRecordset("select * from [TBL calendario]")
'cancella il calendario precedente
RScalend.MoveLast
Let n = RScalend.RecordCount
If n > 0 Then
   RScalend.MoveFirst
   For i = 1 To n
    RScalend.Delete
    RScalend.MoveNext
   Next i
End If
'carica le date inizio fine e iesima
Let first = Me.dadata
Let last = Me.adata
' Genera il nuovo calendario
If first < last Then
   ' loopa attraverso le date
   Let data_iesima = first
   Do While data_iesima <= last
        ' per ogni giorno e per ogni dipendente aggiunge una riga
        RScalend.AddNew
        ' immette di dati
        Let RScalend!giorno = data_iesima
        Let RScalend!DOW = WeekDay(data_iesima, 2)
        If RScalend!DOW = 7 Then
           Let RScalend!Note = "domenica"
        ElseIf RScalend!DOW = 6 Then
           Let RScalend!Note = "sabato"
        Else
          Let RScalend!Note = " "
        End If
        ' li scrive in tabella
        RScalend.Update
      Let data_iesima = data_iesima + 1
   Loop
Else
   MsgBox "data fine inferiore a data inizio"
End If
Set mydb = Nothing
Set RScalend = Nothing
DoCmd.Hourglass False
End Sub

 comunque grazie per la tua risposta
[CUT]
Ecco come va fatta dall'inizio alla fine. Dopo aver cliccato
GeneraCalendario si vada a vedere la tabella: sarà aggiornata (ciao a tutti
smak Mia).
Il Database ha una tabella "TBL calendario" (campi testo: giorno, DOW, note)
La maschera "MSK calendario" (non associata) ha due controlli caselle testo
non associati:
"dadata" e "adata" entrambe con formato "data in cifre".
poi ha un bottone "GeneraCalendario", col seg. codice associato all'evento
click:
---------------------------------------------------------
Private Sub GeneraCalendario_Click()
DoCmd.Hourglass True 'attiva la clessidra
Dim mydb As Object
Dim RScalend, RSfest As Recordset
Dim first, last, data_iesima As Date
Dim i, n As Integer
Dim ID As String
Set mydb = CurrentDb
Set RScalend = mydb.OpenRecordset("select * from [TBL calendario]")
'cancella il calendario precedente
Let n = RScalend.RecordCount
If n > 0 Then
   RScalend.MoveLast
   Let n = RScalend.RecordCount
   RScalend.MoveFirst
   For i = 1 To n
    RScalend.Delete
    RScalend.MoveNext
   Next i
End If
'carica le date inizio fine e iesima
Let first = Me.dadata
Let last = Me.adata
' Genera il nuovo calendario
If first <= last Then
   ' loopa attraverso le date
   Let data_iesima = first
   Do While data_iesima <= last
        ' per ogni giorno e per ogni dipendente aggiunge una riga
        RScalend.AddNew
        ' immette di dati
        Let RScalend!giorno = data_iesima
        Let RScalend!DOW = Weekday(data_iesima, 2)
        If RScalend!DOW = 7 Then
           Let RScalend!note = "domenica"
        ElseIf RScalend!DOW = 6 Then
           Let RScalend!note = "sabato"
        Else
          Let RScalend!note = " "
