Newsgroup: it.comp.appl.access
Titolo: Scusate : è' possibile (in Access) intercettare eventi provenienti dall' oggetto "tabella" ?

Ossia : 
 
se io ho una normale tabella di un  DB  Access,  la chiamo TB, è 
possibile intercettare gli eventi (e quali  sono questi eventi?)
che  eventualmente  provengono  da  questa  TB  considerata come 
oggetto (sempre che Access abbia oggetti tabella ma da quel poco
che ho capito ieri mi sembra che l' abbia)  
 
Se si, come dovrei procedere ? Potreste gentilmente  farmi un es.
pratico ? E' sufficiente lo scheletro, un es.  ridotto al minimo.
 
Non parto completamente da zero : 
 
dovrò costruire una classe, dunque creo un nuovo modulo di classe
dentro il  quale   sottopongo a  withevents la TB (non ricordo la 
sintassi del withevents) alchè mi dovrebbero  apparire sotto  gli
eventi e a quel punto è fatta. 
 
Piu' o meno. Mi  serve  solo  una  "spinta",  una  rinfrescata. 
 
Vi ringrazio molto
 
 

Nel suo scritto precedente, 
radica...@gmail.com
 ha sostenuto :

Ciao,
 
Da Access 2010 ci sono gli "eventi tabella".
Non li ho mai usati ma credo che sia quello che serve a te.
Trovi molte informazioni su Access da zia Cin(zia) qui:
https://accessdaziacin.wordpress.com/2009/10/18/access-2010-gli-eventi-tabella/
 
 
Facci sapere.
 
Ciao
 
Silvio


Arg :-) 
 
E' scritto tutto piccolissimo, è sfocato e c' ho l' audio rotto :-) 
Una cosa un po' meno approfondita ma più chiara non si rimedia ? 
 
(scusa eh ... )

 Silvio
 
? L'originale...?
 
@Alex

radica...@gmail.com
 wrote on 24-03-16 :

Apri una tabella qualunque in modalità design, nel Ribbon
trovi Table Tools, di fianco Create Data Macros: lì dentro
gli eventi...
 
Bruno

 
 
LOL 
 
L' ho capita solo ora :-) 


Ahhhh !  Ecco  perchè  non ci capivo un cazzo ! Cè il "giro 
strano", fuori standard ! 
 
Grazie Brù. Domani a mente fresca (dopo aver tolto un bug da una 
mia applicazione che ho fatto per i colleghi) mi ci metto ... :-)
 
Grazie ancora
 
 

Nel suo scritto precedente, @Alex ha sostenuto :

...beh, certo!

 ...beh, certo!
 
Ben risentito allora... è un piacere.
 
@Alex

Il giorno giovedì 24 marzo 2016 20:15:45 UTC+1, Bruno Campanini ha scritto:

Scusa : modalità "design" intendi modalità struttura, immagino. 
 
Ma mi sa tanto che  quella  cosa che hai detto è presente dall' 
Access 2010, perchè qui a casa c' ho il 2007 e mi pare proprio 
che non ve ne sia traccia. 
 
In ufficio ho il 2010, piu' tardi vedo e ti/vi  faccio sapere. 
 

Il giorno giovedì 24 marzo 2016 20:15:45 UTC+1, Bruno Campanini ha scritto:

Visto.
 
Ma non mi consente di programmare in VBA. Solo di fare stupide 
macro; 
 
E la finestra "traduci in vb" è visibile ma mnon cliccabile.
 
Cè modo di associare una routine vba scritta da me a un evento 
tabella ? 
 
 
 
 
 

 ? L'originale...?
 
 
 
Se per "originale" intendi il sottoscritto ... non ero io quel Silvio!
Comunque ho saputo che mi cercavi    ;-)
 
Salutoni pasquali 
 
 

 tabella ? 
 
Da una stupida macro puoi però richiamare del codice VBA.
È la prima volta che m'imbatto in tale problema; ci do
un'occhiata e se scopro qualcosa di utile te lo comunico.
 
Bruno

 Salutoni pasquali
 
Ecco appunto... il soprascritto...!
Ciao Silvio auguroni a te, ben risentito.
 
@Alex

 Bruno
 

radica...@gmail.com
 has brought this to us :

Io pensavo che le non-VBA-macro fossero ancora quelle delle
prime versioni di Access, delle quali ho comunque scarsa
memeoria. Invece sono novità introdotte pare con Access 2010
delle quali, in prima lettura, non ho capito proprio nulla.
 
Né intendo applicarmi con una seconda lettura, per il
momento almeno.
 
Quindi a te di nuovo la palla.
 
Buona Pasqua.
Bruno


Ok, ma almeno dimmi dove devo leggere. Poi se ci capisco qualcosa
ti/vi faccio sapere
 
Buona Pasqua anche a te
 

 ti/vi faccio sapere
 
Se fai una ricerca per "Access macro" trovi, fra l'altro:
 
https://support.office.com/it-it/article/Introduzione-alle-macro-a39c2a26-e745-4957-8d06-89e0b435aac3
 
 
che sono poi le "vecchie" macro.
 
 
Se la ricerca la fai per "Access data macro" trovi:
 
https://support.office.com/en-us/article/Create-a-data-macro-B1B94BCA-4F17-47AD-A66D-F296EF834200
 
 
che sono quelle introdotte da Access 10.
 
Se trovi qualcosa di bello, utile, interessante e che non
costi niente... comunicalo!
 
Bruno


Certamente, non mancherò. 
 
Anche perchè (ma da una rapida occhiata non credo) se dovessi riuscire
a  fare in modo che una macro possa chiamare una routine vba qualsiasi
altro  che  interessante ... ti rendi  conto di quello che si potrebbe 
fare ? Eh.
 
Ciao.
E grazie per il link. "data macro" dovevo cercare ! Ecchecazz ... :-) 
 
 

 tabella ?
 
È possibile ma non veramente consigliabile perché i data macro non sono 
intesi per funzionare/collaborare con VBA. Per questo si puo chiedere 
funzioni di VBA solo con "trucchi indiretti" come usare SetLocalVar con 
il nome della funzione come espressione o aprire una query che contiene 
la funzione.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 contiene la funzione.
 
Potresti gentilmente farmi vedere un esempio /pratico/, semplice, dei
due casi da te citati ? Come *si fa* ? 
 
Grazie

 due casi da te citati ? Come *si fa* ?
 
1. In un modulo standard ti crei una funzione incredibilemente pratica come:
 
Public Function fctDataMacroVBA1()
     MsgBox "Hello, World!"
End Function
 
e in un data macro fai questo:
 
SetLocalVar
    Name   varGrandeVBA
    Expression = fctDataMacroVBA1()
 
 
2. Crei un'altra funzione molto pratica:
 
Public Function fctDataMacroVBA2()
     fctDataMacroVBA2 = "Radicale"
End Function
 
Crei e salva una query "qryRadicale" con:
 
SELECT fctDataMacroVBA2() AS Programmatore
FROM msysObjects
WHERE Name='msysObjects'
 
e in un data macro BeforeChange fai:
 
LookUpARecordIn qryRadicale
 
      SetLocalVar
          Name  varVBA
          Expression = qryRadicale.Programmatore
 
SetField
      Name = TuoCampoNellaTabella
      Value = [varVBA]
 
 
QED
Certo siamo d'accordi che sarebbe molto più semplice di lasciar perdere 
la query e assegnare il valore al campo tabella con un solo SetValue e 
la funzione nel espressione. --> Metodo 3


 la query e assegnare il valore al campo tabella con un solo SetValue e
 
Ah, l'azione non si chiama "SetValue" ma "SetField", come si vede più sopra.


After serious thinking Karl Donaubauer wrote :

Bravo Karl, ma questo l'abbiamo letto tutti
e sperimentato negativamente.
Da me non funziona né con SetLocalVar né con LookupRecord,
funziona solo con SendMail... un po' poco!
(Windows 10 Pro, Windows 10 LTSB, Access 2016, 64bit).
 
Poi, che cosa significa si può fare ma è sconsigliabile?
sembrano i consigli dati a una massaia per una torta di mele...
 
Quindi mi associo completamente a quanto ribadisce
radicale001: please explain by example!
 
Bruno

Karl Donaubauer brought next idea :

Questi metodi, come già detto, da me non funzionano.
Se tu li hai provati e da te funzionano, elenca le
tue working conditions.
 
Bruno


Non c' ho capito  al  momento granchè,  ma  mi è chiaro che se una cosa 
del genere riuscissimo a farla funzionare praticamente avremmo simulato
i trigger. E scusa se è poco. 
 
Poi  potremmo utilizzare la cosa anche in altre maniere che non ti dico 
sennò ti incazzi :-)

 sennò ti incazzi :-)
 
Credo d'immaginare correttamente ciò a cui ti riferisci.
Ma non m'incazzo mica... sorrido, un riso sardonico.
 
Bruno


ih ih :-) 
 

     Expression = fctDataMacroVBA1()
 
fatto (ho scelto la macro "dopo inserimento record") ma niente
Non succede niente

 Non succede niente
 
Peccato. Qui se lo faccio con A10 mi apre il MsgBox quando salva il 
nuovo record.
 
Fai la prova p.e. nella finestra immediata se si apre il MsgBox con:
fctDataMacroVBA1
 
+ Enter


      Expression = fctDataMacroVBA1() 
 
Ma se io scrivessi questo : 
 
Public Function UBER_ALLES() 
       MsgBox "Hello, World!" 
End Function 
 
e nella data macro 
 
SetLocalVar 
     Name   CAVOLI_AMARI 
     Expression = UBER_ALLES() 
 
dovrebbe funzionare lo stesso, no ? 
NON PUO' dipendere dai nomi che assegno ! 
-----------------------------------------------
 
Oppure ancora 
 
Public SUB UBER_ALLES() 
       MsgBox "Hello, World!" 
End Function 
 
e nella data macro 
 
SetLocalVar 
     Name   CAVOLI_AMARI 
     Expression = UBER_ALLES ' senza parentesi perchè è una SUB
 
Ossia se metto una sub invece di una function ? 
 
Dimmi, dimmi ! 
 
 

 Ossia se metto una sub invece di una function ?
 
No. Come sempre nelle espressioni si puo solo chiamare delle funzioni 
non delle sub. È una limitazione dell'Expression Service di VBA che fa 
questo lavoro.


 questo lavoro.
 
Ooook 
 
Grazie !

 Non lo sapevo 
 
Deutschland, Deutschland über alles
über alles in der Welt
erano le prime strofe del loro inno nazionale
prima e durante il periodo nazista.
 
Sembrava troppo inneggiare a uno spirito nazionalista,
a quello che una volta si chiamava Amor di Patria.
Adesso in Italia se parli di Patria ti danno del
fascista.
Tu che ne pensi Karl?
 
Bruno

 Tu che ne pensi Karl?
 
già