Newsgroup: it.comp.appl.access
Titolo: E' possibile far eseguire un programma vba in access da una cpu  remota ?

Ambiente intranet, windows xp professional, m pc collegati in rete.
E' possibile, in questo contesto, "comandare" da un certo pc della
rete ad un altro pc della rete l' esecuzione di un programma vba
che si trova nell' "altro" pc della rete ? Come si fa ?
cosi' ? :
c = createobject(\\pxf001400\Access_01.mdb , access.application) ?
Troppo facile ... Non ci posso credere.
Ma supponiamo che sia vero.
Allora io prendo un programma P, lo divido in 100 pezzi autonomi,
li spargo su 100 pc diversi, li mando tutti in esecuzione, e
qualunque
sia il tempo d' elaborazione del programma originario T, lo riduco
a CALCI, MORSI E PUGNI a T/100 !
Un sogno !

 singola istanza.
E certo ! Questo lo davo per scontato.
Devo scrivere programmi che *collaborino* tra loro.
E' tutta un' altra filosofia.
Mi piacerebbe MOLTO pero' costruire una cosa del
genere.
Non so pero' cosa siano l' FE e quell' altra cosa, francamente.

 Non so pero' cosa siano l' FE e quell' altra cosa, francamente.
Ah ... Scusa ...
Non e' che gentilmente potresti buttare un occhio sul mio 3D
con titolo :
"Aiuto ! : da Access 2003 a Access 2007 non funziona la "stampa
lettere"
... Non sia mai che mi potessi aiutare. Diavolo, quello e' un grosso
problema, per me.

 Non so pero' cosa siano l' FE e quell' altra cosa, francamente.
FE = Front end. Normalmente contiene la parte attiva (forms, report, 
modules)
BE = Back end. Contiene i dati (tabelle).I dati vengono acceduti dal/i 
BE via collegamento ("link" dinamico o statico)
Normalmente 1 BE  n FE (1 FE per ogni stazione)
(*) se per qualche motivo, in versioni diverse del prodotto, 
Dc,Content,Find, Execute hanno comportamenti diversi quella istruzione 
va rivista.

radicale.002 ha scritto:

Mi sembrava di avercelo "buttato"
Se hai problemi prosegui quel 3D
"SCHIODA senza alcun ritegno in access 2007. Strasob."
Non e' che indichi molto del comportamento.
Hai provato a seguirlo cn il  Debugger?
E prova a dare una occhiata al sito di Karl per vedere se c'e' qualche 
indicazione al riguardo (probabimente cose che riguardano la automazione)
Uhmmmmmm....... comunque nell'oggetto del messaggio cose come:
Help, Aiuto, Mi ammazzo, Salvatemi,Non ci riesco....etc sono fortemente 
aborrite dai "guardiani" del NG. Meglio evitare.


devi fare un rootkit in access? :-)
BFS

 Se hai problemi prosegui quel 3D
Oddio scusa ... Hai ragione. Ieri stavo nel pallone.

BE = Back end. Contiene i dati (tabelle).I dati vengono acceduti >dal/i BE via collegamento ("link" dinamico o statico)
Ah, sono quelli ? Non sapevo che si chiamassero cosi !
A me 'ste cose non le ha insegnate mai nessuno ... Ma
ci sono arrivato da solo e infatti ho costruito :
un FE, che contiene i programmi e le maschere e che
risiede su ogni macchina e che parla con l' utente.
Ad ogni FE corrisponde un BE locale, sempre sulla
stessa macchina, che contiene una copia esatta dei
dati del BE server (piu' altri che gli servono per
funzionare bla bla bla), che invece e' unico.

 
e' una cosa che si fa gia'; imo farla con access non ha senso...
http://it.wikipedia.org/wiki/Calcolo_distribuito
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 Ma supponiamo che sia vero.
Supposizione non vera, quindi non supponiamolo :D

 
http://it.wikipedia.org/wiki/Calcolo_distribuito
Ok! Ma........
Ognuno usa cio' che ha a disposizione e/o conosce.
Se ho un archivio cartaceo e 100 segretarie non uso di certo il "c" per 
esaminarlo. E questo nel massimo rispetto di wiki.

 Perlomeno, io ho capito cosi' ... :-)
in questo caso oserei dire che la comprensione e' approssimativa ;-{)

 wrote in 
news:r2f2o.215655$
813.1...@tornado.fastwebnet.it
:

se ti chiedono di sviluppare un web server e conosci solo access lo scrivi 
in vba dentro un mdb?
imo ti conviene renderti conto che access per quanto versatile ha qualche 
limite e prenderne atto, guardandoti poi intorno per trovare un'altra via.
ne caso specifico, a mio parere access non e' uno strumento indicato per lo 
sviluppo di un sistema di calcolo distribuito.


 
(*) il lavoro di base che fa il web server, di fatto, non e' altro che 
leggere un file sul locale e spedirlo all'indirizzo che lo ha richiesto
non e' che richieda grosse capacita' computazionali e' solo I/O.
Hanno scritto web server in Java che e' tutto tranne che prestazionale.

 Troppo facile ... Non ci posso credere.
No, non è troppo facile, ma qualcosa del genere ;)
Metti il codice sotto in un modulo, apri il task manager e lancia la
routine senza passare il nome di un pc: vedrai che fra i task attivi
ci saranno 2 MSACCESS.EXE, il primo sei tu che hai aperto il modulo,
il secondo è l'applicazione generata con la CreateObject, che sparirà
chiudendo la MsgBox.
A questo punto apri il task manager anche su un pc della rete e
rilancia la routine dal tuo pc passandole il nome del pc che hai
scelto("\\NomePcInRete") : il tuo task manager continuerà a mostrare
un solo task, mentre sul pc che hai scelto comparirà quello della
CreateObject associato al nome utente con cui ti sei loggato sul tuo
pc.
Le due limitazioni che ho trovato (almeno qua, con una situazione
corrispondente a quella che hai indicato tu) sono:
1) il gioco funziona solo se su entrambi i pc c'è la *stessa* versione
di Access,
2) probabilmente bisogna inventarsi un ciclo di attesa in chiusura
perché il task sul pc remoto non termina.
HTH
Popi
Public Sub AppInRemoto(Optional ByRef NomePc As String = "")
    Dim ApplicazioneRemota As Access.Application
    On Error Resume Next
    Debug.Print "Avvio ..."
    Set ApplicazioneRemota = CreateObject("Access.Application",
NomePc)
    Debug.Print "Caricamento db ..."
    ApplicazioneRemota.OpenCurrentDatabase "X:\Archivi\TestRemoto.mdb"
    Debug.Print "Messaggio ..."
    MsgBox ApplicazioneRemota.SysCmd(acSysCmdAccessDir) & vbCrLf &
ApplicazioneRemota.SysCmd(acSysCmdAccessVer), , "Avviata"
    Debug.Print "Chiusura ..."
    ApplicazioneRemota.Quit acQuitSaveNone
    On Error GoTo 0
    Debug.Print "Termine ..."
    Set ApplicazioneRemota = Nothing
    Debug.Print "Finito."
End Sub

 
non c'entrano le prestazioni...
access e' adatto per tante cose e non e' adatto per tante altre.
che mi risulti, fare da server o restare attivo h24 per lunghi periodi 
(per lunghi periodi intendo giorni) non e' uno dei compiti per cui e' 
stato pensato access.
puoi usarlo ugualmente, puoi mettere in piedi comunque tutto quello che 
vuoi, ma poi non ti devi lamentare se ti mangia tutta la memoria in due 
ore oppure ti obbliga a riavviare il server ogni paio di giorni.
si chiamano scelte di progetto: le fai all'inizio e se le fai male poi ne 
paghi le conseguenze.
e se le scelte di progetto le fai considerando solo cio' che conosci 
(conosco access e quindi uso access), oltre a non crescere 
professionalmente imo rischi anche di prendere cantonate.


 
Tanto ed esclusivamente per la cronaca, non conosco solo access e forse 
questo e' un mio limite perche' tendo a ricondurre tutto a bit on bit off.
Trovo comunque normale che ognuno, puo' informarsi certo, ma fa le cose 
in base alle conoscenze che ha. Trovo complicato che riesca a fare cose 
che non conosce e non c'e' niente di peggio che una conoscenza 
superficiale per prendere cantonate ed ancora peggio se le cose si fanno 
per sentito dire.
Mia nipote voleva far girare un server web sul commodore 64, era 
fattibile ma, ovviamente, era un gioco.
.....e in quanto a leak di memoria(*), in access ed anche in altri 
ambienti, modestamente, sono un esperto ed il monitor di utilizzo 
memoria e' un mio fraterno amico  ;-{)
(*) ci dovrebbe essere anche un mio vecchissimo post sull'argomento

 
ovvio che ognuno fa in base a quello che sa fare.
per come la vedo io pero' bisogna anche conoscere i limiti dello 
strumento che si usa.
tanto per tornare al post originale, se devo sviluppare un sistema di 
calcolo distribuito e conosco solo access, posso ignorare l'esistenza di 
strumenti piu' adatti e andare avanti con access: conosco quello, uso 
quello.
oppure faccio un passo indietro e faccio fare il lavoro a chi sa 
programmare in altri linguaggi piu' adatti per questo particolare 
compito. o se e' giustificato dalla portata del progetto imparo questi 
lignuaggi piu' adatti (vedi crescita professionale).
se pero' parto da 'uso cio' che so usare' imo mi avvio di slancio verso 
il disastro e non cresco...
beninteso, opinione personale, non dogma di fede.


 
Non credo ai dogmi. Neanche a quello della Trinita' (non Terence Hill).
In nome del professionismo della scalabilita' della ricerca della 
prestazione ho visto spendere fior di fiorini con risultati spesso 
discutibili.

Metti il codice sotto in un modulo,
(omissis)
Accidenti ... Ci devo provare.
E se funziona con access, allora funziona con qualsiasi
altro componente.
P.S.
Vuoi ridere ?
Leggevo : "metti il codice sotto in un modulo"
tutto insieme, e non capivo che volesse dire.
"sotto in un modulo" ... ? E che significa ?
Poi dopo qualche secondo ho capito che dovevo
leggere : metti il codice (che sta in fondo al
post) in un modulo ...  :D

centrale, lancerei quando devo, messaggi subliminali ai pc remoti, >che l' "ASCOLTATORE" decifrerà capendo cosa fare...
Notevole.
Ma cosi' funziona solo se su ogni remoto c'e' una
applicazione perennemente attiva.
Senno' i messaggi subliminali chi te li ascolta ?
Dunque penso che la via giusta sia un opportuno
mix tra la tua notevole idea e la tecnica di Popi :
un "centro" lancia le proc sui vari pc, le quali
a quel punto si che le metto in ascolto.
Fatto cio' subentra la tua idea.
Problema : per mandare i messaggi potrei scrivere su
dei piccoli file posti su ogni macchina, letti a
intervalli regolari.
Oppure chiedere ai pc remoti di leggere, sempre a
intervalli regolari, un file centrale.
Oppure ?

ne caso specifico, a mio parere access non e' uno strumento >indicato per lo sviluppo di un sistema di calcolo distribuito.
*NON* Access, per l' appunto.

 No, non è troppo facile, ma qualcosa del genere ;)
Funziona, funziona.
Eccome se funziona. ;-)
Purtroppo, mi dice "autorizzazione negata" ,
il che vuol dire che funziona. Ci "prova"
ad avviarlo sulla macchina.
Ma questo e' un problema di grant.
Devo chiedere ai nostri sistemisti.
Grazie.

 Purtroppo, mi dice "autorizzazione negata" ,
Ho risolto anche questo problema.
Mi sono messo su un' altra macchina e ho fatto
partire l' access sopra la macchina di cui ho
grant da amministratore.
E FUNZIONA ... ;-)
Ma non riesco a visualizzare l' applicazione sullo
schermo del server.
Qualche dritta ?

 schermo del server.
In realta' si riesce solo a creare una istanza
di Access, ma non a manovrarla.
Non si apre.
E' come aver fatto, sul server :
dim A as new access.application
Questo lo fa, ma non si riesce ad aprirlo.

 Questo lo fa, ma non si riesce ad aprirlo.
NO !
Invece riesco a manovrarlo.
Ho provato : gl' ho fatto aprire una maschera
(dal remoto) che nell' evento aperura crea un
nuovo file di testo e ci scrive dentro.
Il file di testo e' stato creato.
Posso fare cio' che voglio.
*tranne* visualizzarlo sullo schermo.
Poco male, ma mi piacerebbe sapere perche'.
Non ho "accesso" sullo schermo di un altro
pc, e' chiaro.

Oppure ?
Oppure il Server (su cui magari setti IIS) scrivi su un DB con una sola 
tabella "Messaggi" (ID,DESCRIZIONE) consultabile via ASP... ogni pagina 
consultata dona all'utente una risposta... la risposta è il messaggio 
subliminale...
L'ID sarà quello del PC remoto (PC1, PC2, PCn...) e la DESCRIZIONE sarà 
l'azione che il Client dovrà eseguire...
Se sull'applicazione CLIENT temporizzerai un controllo di recupero dati (usa 
il mio demo 
http://lnx.accessgroup.it/community/access-web/recuperare-dati-da-server-remoto.html
), 
da utilizzare come comando, vedrai che qualche risultato lo otterrai ;)

 da utilizzare come comando, vedrai che qualche risultato lo otterrai ;)
Francamente (meglio non bluffare) :
non ho le competenze sufficienti per capire DAVVERO
quelo che hai scritto. Intuisco solo che e' una gran figata. :-)

Francamente (meglio non bluffare) :
non ho le competenze sufficienti per capire DAVVERO
quelo che hai scritto. Intuisco solo che e' una gran figata. :-)
-------------
se hai almeno XP Professional o meglio ancora Win2003 server (sul PC 
server), e vuoi provarci, fą un fischio... t'aiuto tranquillamente ;) 

 server), e vuoi provarci, fà un fischio... t'aiuto tranquillamente ;)
Ma ... Grazie ! Sei davvero gentile e disponibile.
Ok, la prossima settimana in ufficio cerco di fare qualcosa.

 
beh, buon lavoro nello sviluppo di un sistema di calcolo distribuito in 
access...


 


 access...
L'unico sviluppo che ho da fare, in questo momento, e' che il caffe' sia 
con le tre "c" famose ed il cornetto con la panna "fornato" al punto giusto.


Ciao!
A me, invece, non è chiaro perché sull'help di CreateObject sia
scritto "Per ulteriori informazioni su come rendere visibile
un'applicazione in un computer in rete remoto, consultare la
documentazione COM (vedere Microsoft Developer Network). Potrebbe
essere necessario aggiungere una chiave per l'applicazione nel
registro di configurazione."
Buon divertimento ;)
Popi


LOL!
Popi

 registro di configurazione."
E se non t' e' chiaro a te, pensa a me ... ;-)