Newsgroup: it.comp.appl.access
Titolo: trigger

Ciao a tutti,
vorrei fare in modo che in caso di inserimento, modifica o cancellazione di
un record in una tabella del mio db venga eseguito del codice ovvero una
query SQL che inserisca in un altra tabella del mio stesso db TBL_MODIFICHE
il nome della tabella modificata, il campo modificato e la data della
modifica perchè ho bisogno di tenere tutto sottocontrollo.
In SQL server avrei potuto risolvere con un trigger ma con access come
faccio? Potrei optare per una macro che mandi in esecuzione la query SQL ma
su quale evento o condizione? C'è qualcuno che potrebbe darmi un
suggerimento?
Grazie anticipate

 ha scritto nel messaggio
news:xtzgb.240555$R32.7...@news2.tin.it...

Crei una maschera che permetta di fare questo all'utente solo in maniera
controllata, tramite pulsanti.
Al clic, oltre alla funzione scelta, fai la registrazione
Antonio

 ha scritto nel messaggio
news:xtzgb.240555$R32.7...@news2.tin.it...

Credo che la cosa sia più complessa, ma se la gestisci dalla Form di accesso
ai dati ne consegue che puoi intercettare l'Evento Before Update di Maschera
e con una Qry Update salvare il RecordSource della Form nella tua Tabella,
questo ti darebbe la possibilità di crearti una Funzione Generica a livello
di DB.
Su Evento AfterUpdate inserisci:
=UpdateModdif() oppure da VBA Call NomeFunzione
Public Function UpdateModif(frm as Form) as Boolean
    CurrentDb.Execute "INSERT INTO TuaTabellaModifiche(NomeTabella) VALUES
('" & frm.Recorsource & "');"
End Function
Certo non è il massimo, credo che la cosa migliore sarebbe la gestione
dell'evento di
Salvataggio come Form non associata e quindi con la possibilità di seguire
la reale
modifica del Record, però forse la 1° è un buo compromesso.
@Alex.

 ha scritto nel messaggio
news:bluq6n$apd$1...@lacerta.tiscalinet.it...

Ciao Alessandro, ciao Antonio,
scusate il ritardo, sono stata poco bene ultimamente, volevo dirvi che
purtroppo non ho un form ma ho solo le tabelle di access in cui vengono
inseriti i valori tramite un programma esterno (non sviluppato da me)
scritto in un non so quale linguaggio di programmazione, e io vorrei capire
a quali tabelle e a quali campi del db fa riferimento ciascuna schermata di
questa applicazione in modo da poterla rifare da zero utilizzando i form di
access. Poichè le tabelle sono oltre 100 ho bisogno di sapere innanzitutto
quali tabelle sono effettivamente utilizzate e poi quali sono i campi
coinvolti in ciascuna funzione svolta da questo programma.
Quindi avevo pensato come vi dicevo a una nuova tabella TBL_MODIFICHE con i
seguenti campi:
- nometabellacoinvolta
- nomecampoaggiornato
che viene riempita run-time al momento dell'inserimento dei dati  tramite
quel programma. Forse sto chiedendo la luna nel pozzo, se proprio non è
possibile allora scusate la mia ignoranza ma se esiste un'alternativa simile
ai trigger di SQL server o un'escamotage senza ovviamente ricorrere alla
consulenza dei più esperti scienziati di astrofisica nucleare .......?!?!?!?
:-((   ne sarei veramente felice perchè alleggerirebbe di molto il mio
lavoro.
Grazie della disponibilità :-)
Ciao
Mariella

 quel programma. Forse sto chiedendo la luna nel pozzo, se proprio non è
Quello che tu chiedi non credo sia possibile.
Fai un check delle tabelle per vedere ogni volta cosa è stato aggiunto.
Magari potresti ciclare sulle tabelle vedendo il recordcount e poi
confrontando i numeri dopo l'uso delle form del programma esterno
Antonio