Newsgroup: it.comp.appl.access
Titolo: controllo automatico di tutte le date in scadenza nelle varie tabelle del db

Salve a tutti, avrei questa esigenza.
lavoro in A97 ed all'interno di varie tabelle del mio DB, vi sono campi 
data, relativi a scadenze relative a diverse cose.
Ho bisogno quindi, che tramite una routine (che magari mando in esecuzione 
all'ingresso nella procedura), possa controllarmi tutte le date che sono in 
scadenza (tutte o quelle da me indicate).
Ribadisco però, che queste date si trovano su varie tabelle del db.
Se qualcuno avesse già avuto quest'esigenza, mi farebbe piacere sapere come.
Grazie anticipatamente a tutti
Marco 

 ha scritto nel messaggio 
news:U9rzk.2991$EP4...@tornado.fastwebnet.it...

Se si trovano su tabelle diverse allora ti consiglio di creare una tabella 
Temp che riunisca i dati tramite query di accodamento.
Esegui all'apertura quindi un accodamento di tutti i record nella tabella 
temp che ripondono ai tuoi criteri.
La tabella temp sarà l'origine della tua maschera.
Ripulisci sull'evento che desideri (chiusura db, chiusura maschera....) con 
una sql DELETE * FROM temp
Ciao
-- 
Roberto da Parma



Certamente si può fare.
Una strada:
crea una tabella con due campi (NomeTabella e CampoScadenza);
popola la tabella con i nomi delle tabelle che hanno una scadenza e con il 
nome del campo corrispondente che contiene la data da controllare.
A questo punto potresti anche aggiungere un terzo campo (Sì/No) che andrai a 
valorizzare con Sì se la tabella è da prendere in considerazione.
Un semplice (dipende dalle conoscenze) ciclo farà il resto.
In pratica si cicla su ciascuna tabella e si crea un recordset che verifica 
la data; se presente aggiunge ad una variabile di tipo testo il nome della 
tabella.
Alla fine, per esempio, una msgbox mostrerà l'elenco delle tabelle che hanno 
una scadenza.
Ciao, Carlo 

 ha scritto nel 
messaggio news:galhqu$cf3$1...@tdi.cu.mi.it...

Ti ringrazio molto Carlo, in effetti è ciò che stavo pensando, quale logica 
soluzione.
L'aspetto fondamentale però, è che il risultato prodotto con msgbox  (magari 
anche con query di accodamento su tabella temporanea, cosiccome mi 
suggerisce Roberto, in modo da proporre una form direttamente), deve far 
capire all'utente, di quale campo ed il soggetto interessato.
In pratica, ad esempio, una serie di date fondamentali, riguarda la tabella 
dei dipendenti di una azienda, che contiene anche le date di scadenza dei 
corsi di aggiornamento, i quali ad ognuno di loro deve esserne data 
comunicazione anzitempo.
Quindi, dovrò certamente inserire nella tabella di appoggio, anche il nome 
del campo relativo al soggetto 'Nominativo', oltre ad un campo 'memo', che 
descriverà il tipo di scadenza (dal nome del campo 'data' non sempre si può 
capire di cosa si tratta). Ovvero:
Nome_Tabella
Nome_Campo
Descrizione_Scadenza
Nome_Campo_Soggetto
Il mio problema, proprio come mi hai scritto.. "dipende dalle conoscenze..." 
è come poter creare la query ciclica, che possa produrmi i risultati 
dettagliati come ti ho detto.
Grazie ancora Carlo.
Marco 

 Marco
Ok.
Tutto dipende da come hai strutturato il db.
Se le tabelle da verificare sono al massimo tre non conviene fare la tabella 
con l'elenco di tabelle da verificare; ti basta un ciclo su ciascuna 
tabella.
Poi, se vuoi mostrare il risultato di tutte le scadenze in una maschera 
tabulare o foglio dati, potresti sicuramente realizzare una tabella di 
appoggio che svuoti e riempi a runtime e che sarà la Tbl che alimenta la 
maschera.
Questo un esempio di codice scritto in un modulo pubblico e che ha come 
riferimento DAO:
Public Sub AggiornaAvvisi()
Dim rcs As Recordset, i As Integer, Avviso As String
Dim Appoggio As Recordset
Set rcs = CurrentDb.OpenRecordset("TblCorsi")
Set Appoggio = CurrentDb.OpenRecordset("TblAvvisi")
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * from TblAvvisi;"
DoCmd.SetWarnings True
rcs.MoveLast
rcs.MoveFirst
For i = 1 To rcs.RecordCount
    With rcs
        If Format(!scadenza, "dd/mm/yyyy") = Format(Date, "dd/mm/yyyy") Then
            With Appoggio
            .AddNew
            !Avviso = "Dipendente " & rcs!Persona & " Corso in scadenza: " & 
rcs!Corso & " Data scadenza: " & rcs!scadenza
            .Update
            End With
        End If
    End With
    rcs.MoveNext
Next i
'Exit For
rcs.Close
Appoggio.Close
Set rcs = Nothing
Set Appoggio = Nothing
End Sub
Il codice utilizza due tabelle: TblCorsi e TblAvvisi. Nella prima sono 
elencati i corsi e la data di scadenza oltre all'ID dipendente; nella 
seconda un solo campo memo dove verranno scritti gli avvisi dal codice.
Immagino che per ogni dipendente nella TblDipendenti avrai previsto una 
seconda TblCorsi con il campo DataScadenzaCorso e con join su idDipendente.
In questo caso anzichè l'ID dipendente da accodare a tutto il resto potresti 
usare il cognome e il nome prelevandolo dalla tabella dipendenti, p.e. con 
un semplice dlookup nel codice.
Dimmi come va.
Ciao, Carlo 

 ha scritto nel 
messaggio news:galuqm$s82$1...@tdi.cu.mi.it...

Perfetto Carlo, mi sono ben letto il tuo esempio.
In effetti, le varie tabelle, contengono ognuna, sia il nominativo del 
soggetto, sia le scadenze, quindi non ho bisogno di relazioni.
Direi che è proprio ciò che mi serve.
Grazie 1000 ancora
Ciao Marco