Newsgroup: it.comp.appl.access
Titolo: Come limitare il numero utenti ad un'applicazione Access ?

Sto cercando di creare una procedura per verificare il numero utenti 
attualmente collegati al db aziendale
Fronte end realizzato con Access ed installato su ogni postazione di lavoro, 
database server su postazione dedicata al quale si accede via odbc
Come fare per limitare ad X utenti il numero massimo di postazioni che 
possono collegarsi al gestionale ?
Attenzione, non posso distinguere pc pc perche' se i pc sono 10 e le 
autorizzazioni disponibili sono per 3 utenti, allora qualsiasi pc dei 10 
deve potersi collegare se ci sono meno di tre utenti collegati
Vorrei realizzare, se possibile, la cosa da lato front end, senza toccare il 
database
Ciao e grazie
RobertoA

 ha scritto nel messaggio 
news:476a69f7$1...@newsgate.x-privat.org...

dici che vuoi fare qualcosa lato FE senza toccare il database (credo tu 
intenda il BE)... ma io a questo punto mi chiedo "dove memorizzi il num max 
di autorizzazioni"?...
ci sono molte strade per far ciň, ma ti chiederei delucidazioni sul punto 
sopra riportato... 


Fai in modo che ogni Client registri lato Server(il BE) l'avvenuta
connessione.
Puoi usare una Tabella di Login per farlo.
Basta una Query INSERT su AutoExec per registrare il Login ed una Query
DELETE alla chiusura.
A questo punto fai una funzione che prima di fare l'INSERT legga il numero
di USER registrati...
e se > 5(per dire un numero) effettua la chiusura...
Non dimenticarti però di realizzare un file VBS da eseguire in schedulazione
in un'orario in cui presumibilmente
nessuno usa il SERVER e cancelli i Records della tabella Login... questo
perchè se un CLIENT va in Crash non
sarà mai effettuato il DELETE lato CLIENT ed il numero andrà in
saturazione(è una probabilità abbastanza remota
ma esiste).
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------


Potrei memorizzarlo sulle singole postazioni, tipo file ini o chiave nel 
registry, ovviamente opportunamente criptata
Il vero problema e' il sapere quanti utenti in quel momento sono collegati 
al database, che non e' un file mdb, potrebbe essere un Sql Server oppure un 
Postgresql o un Firebird o un Oracle o qualsiasi altro
Ciao
RobertoA

 ma esiste).
E' il primo sistema che mi e' vento in mente, ma c'e' il problema dei 
potenziali crash delle postazioni lavoro
O fai un giro di reset molto frequentemente oppure si rischia di occupare 
'licenze' anche senza avere la postazione lavoro collegata
Questo in linea di principio, probabilmente il sistema funzionerebbe lo 
stesso bene, non e' che una postazione di lavoro 'normale' si pianta 10 
volte al giorno, di solito non si piantano
Pero' resta il fatto di non aver trovato una soluzione elegante al problema
Grazie
RobertoA

 RobertoA
Bhè non ha senso memorizzare il num max di autorizzazioni all'uso del DB 
presente sul SERVER, sui client... è cmq il server che necessita di questa 
informazione, per cui se non vuoi TOCCARE il BE in cui inserire una tabella 
Login su cui conteggiare in mamiera certa gli user connessi, bhè bisognerà 
inventarsi qualcosa d'altro...
Tipo (vado a braccio) :
Sul server piazziamo una bella chiave di registro nella quale registriamo il 
num MAX di utenti da servire.
Poi avviamo dal server il nostro FE in Access... all'avvio leggiamo la 
chiave scrivendola su un file esterno (es txt) - visibile dal client 
(cartella lettura/scrittura) -
Prepariamo nella stessa cartella un file log nel quale scrivere gli accessi 
delle singole macchine...
All'avvio del client leggeremo il file delle autorizzazioni del server 
caricandoci il contenuto in una variabile locale
poi leggeremo il file di log preparato per gli accessi...
nel caso in cui (con un sistema tuo da inventare) risultino + di delle N 
autorizzazioni lette, neghi l'utilizzo, altrimenti accedi e scrivi una riga 
di file log relativa all'utente entrato...
ad ogni chiusura applicativo ovviamente il log dovrà essere modificato per 
chiudere l'utilizzo dello user.
Spero di aver scritto qualcosa di fattibile a volo :-D
-- 
---
Ciao
Pablitomf (Maurizio Facciuti)
Web Master 
www.accessgroup.it
 



Ha senso se ci poniamo l'obiettivo di non toccare nulla sul be
"..Poi avviamo dal server il nostro FE in Access.."  non se po fa', ogni 
client dispone della sua copia in locale del fe, altrimenti avrei 
semplicemente potuto leggermi l' ldb del file front-end e la' c'e' scritto 
(mi pare) il numero connessioni, ma nel mio caso sono file locali alle 
postazioni di lavoro
Sostanzialmente anche il tuo consiglio, ome quello di baraldi si basa sullo 
scrivere dati sul server per sapere il numero utenti connessi, pur 
funzionando e' soggetto al problema delle possibili sconnessioni brutali 
postazione lavoro, obbligandoci a resettare ogni tot di tempo
Quello che mi manca e' essenzialmente un qualcosa tipo una interrogazione da 
impartire al server che mi dica "..in questo momento ci sono 4 connessioni 
attive.."
E' questo che sto cercando di capire se sia possibile ottenere
Ciao e grazie
RobertoA


Ciao :)
Se i FE possono accedere ad un'area comune (ad es.: cartella condivisa
in rete), lì potresti avere un db esterno con la tabella dei pc
collegati.
La tabella conterrebbe i campi PcUtente, DataOraConnessione,
DataOraPolling.
Ogni FE dovrà:
1) se non ci sono licenze libere e ci sono utenti connessi con (Now()-
DataOraPolling)>1 eseguire MoCheFaccio(),
2) registrarsi in partenza,
3) aggiornare ogni minuto il campo DataOraPolling,
MoCheFaccio() è la funzione che (per esempio) dice chi è andato in
crash e da la possibilità di sganciarlo recuperandone la licenza ...
HTH Roberto

 Ciao e grazie
Ma se hai un server sql evoluto non e' possibile attivare questo 
controllo via "stored procedure"? Ed inoltre questi server evoluti non 
hanno in genere una tabella di sistema che indica i "task" attivi?
-- 
ac
y-1=x

 connessioni attive.."
Lo vedi che è allora il Server a dover rispondere ad una domanda? per cui 
per forza i dati devono risiedere sullo stesso... e io per dati intendo dire 
"n.connessioni max" e "n. user attualmente connessi"... questo che chiedi è 
di fatto una transazione di info normale tra client e server...
Non volendo personalizzare le procedure rispetto agli N "be" 
(Access,SQL,Oracle,etc..) che potresti avere a disposizione, l'unico sistema 
è inventarsi una cosa simile a quella che ho immaginato...
Se poi vuoi usare un DB access esterno alla procedura per conteggiare gli 
user, questa è un altra strada percorribile, ma mi sembra tu l'abbia 
scartata...


 ha scritto nel messaggio 
news:476a69f7$1...@newsgate.x-privat.org...

Con desktop remoto e xpunlimited...
Ciao.
-- 
Sergio MAZZA