Database multiutente

di il
9 risposte

Database multiutente

Ho realizzato anni fa un database multiutente. Adesso vorrei inserire del codice all'evento che chiude il database (in pratica l'ultimo utente che chiude il db). Ma come faccio a distinguere la chiusura di uno degli utenti (il database resta aperto da altri) dall'evento che m'interessa cioe' della chiusura definitiva del database. Ovviamente potrei anche inserire il codice all'inverso cioe' all'apertura del database ma solo se e' aperto dal primo utente.
Grazie.

9 Risposte

  • Re: Database multiutente

    Per database MultiUtente, non significa solo che lo usano in tanti... la definizione di MultiUtente è ben più complessa.

    Ma a cosa serve questa cosa..?
    Cosa intendi chiudere definitivamente..?
    Io quando chiudo il client non ho bisogno di sapere se altri sono connessi...

    Sei certo di aver strutturato il sistema in modo client-server...? O Fronte end e back-end..?

    Spiegaci meglio l'esigenza perché qualche cosa non torna.
  • Re: Database multiutente

    Allora l'applicazione si trova in una cartella condivisa. Ogni utente dal suo PC entra nella cartella condivisa, apre il database e lo usa. Non c'e front-end back-end. Il database e' un puro .mdb e le utenze sono gestite tramite la funzione atcNames(). Quindi in pratica tanto per capirci:
    -Utente A apre il database dal suo PC e lavora
    -Utente B (mentre A sta lavorando al db) apre il database dal suo PC e lavora ecc.
    Ho bisogno di inserire un codice che faccia partire delle query che svuotano delle tabelle temporanee. E' ovvio che questa routine chiamiamola di "inizializzazione" deve partire solo quando l'utente A che e' il primo a usare il db, lo apre altrimenti non solo non avrebbe senso ma se per caso la routine partisse quando B apre il database si rischierebbe di compromettere i dati che A ha inserito nelle tabelle temporanee.
    Non so se mi sono spiegato bene.
  • Re: Database multiutente

    Sinceramente non ho mai sentito una cosa simile e ti suggerisco di riflettere perché è un metodo estremamente errato dal punto di vista tecnico.
    Fatico a pensare di poter dare una qualsivoglia idea di approccio...
  • Re: Database multiutente

    @Alex ha scritto:


    perché è un metodo estremamente errato dal punto di vista tecnico.
    Sviluppo in Access da un po' di anni e il database che ho realizzato viene usato da 5 anni a questa parte tutti i giorni da 4 utenti con profitto. Io questo posso dirlo, tu certamente non puoi dire il contrario. Il giudizio che dai sulla metologia della gestione degli utenti e' quanto meno arbitrario perche' giudichi senza conoscere minimamente il mio lavoro, il database, il codice e la logica che ci sta dietro.
    Mi e' bastata la tua risposta per capire che e' meglio chiuderla qua' e non rispondere piu' ad altri msg sull'argomento.
  • Re: Database multiutente

    Quanto ti ho esposto non è un mio giudizio arbitrario e per meglio capire quanto ti ho detto basterebbe studiare un minimo di basi sulla gestione di applicativi multiutente ma senza esagerare con pretese potresti approfondire quanto meno la teoria client server.
    Per il resto non son certo quello che obbliga nessuno a credere a quello che dico... I confronti si fanno solo su piani di conoscenza concreti ed il tuo concettualmente ed anche teoricamente non lo è.... e non pensare basti dire "funziona da 5 anni" per avvalorare qualche tesi.
    Buon lavoro.
  • Re: Database multiutente

    @Alex ha scritto:


    basterebbe studiare un minimo di basi sulla gestione di applicativi multiutente ma senza esagerare con pretese potresti approfondire quanto meno la teoria client server.
    Ma come ti permetti? Tu non sai niente di me e ti permetti di di sapere cio' che so e cio' che non so manco fossi l'ultimo degli HR recruiter che sta guardando il curriculum e mi sta facendo l'esamino delle conoscenze. Uno, lavoro nell'IT da un tempo che tu neanche immagini e sei l'ultimo che puo' darmi lezioncine. Due: Tanenbaum e Stevens te li posso declinare in tutte le lingue che vuoi, anche in aramaico. Tre: permettiti un'altra trollata del genere e di dare giudizi sul mio personale e ti segnalo agli amministratori del forum. Fine.
  • Re: Database multiutente

    Guarda gli approcci non tecnici basati sulla sterile suscettibilità del "tu non sai chi sono io..." a me fanno molto effetto...ma devo ammettere che mi hai convinto.

    Se ritieni di essere stato offeso rivolgiti agli amministratori ne hai pieno diritto... non serve tu me lo dica non crederai possa sentirmi intimidito..?
    Mmmmm so bene ciò che ho detto e non è nulla di offensivo... in quanto basato su concetti tecnici oggettivi e siccome non ho 20 anni sono sistemi che puoi usare altrove.

    Se e quando vorrai affrontare tecnicamente l'argomentazione lo faremo... ma ora ti vedo irritato... convinto di aver ragione ma di concreto... e di tecnico non mi dici nulla se non AutoIncensarti e con me ha poca presa.

    Quindi faccio così... "Hai ragione..."

    Detto ciò.... un caro saluto.
  • Re: Database multiutente

    X Dreamer456: approccio errato alla community.
    Da un punto di vista strettamente tecnico: mi trovo d'accordo con Alex, guarda a una soluzione client/server.
  • Re: Database multiutente

    Dreamer456,
    da quanto descrivi, stai impiegando il database, con un MDB unico (per dati ed applicativo insieme) ciò comporta che se aggiorni del codice devi preservare il contenuto delle tabelle; inoltre, in ambito di rete, non sfrutterai le potenzialità offerte da un sistema BackEnd sul server e Front End sul client.
    Da considerare che, per individuare l'utente collegato, impieghi la funzione atCNames, piuttosto datata, basata sulle API e ciò comporta le problematiche legate alle nuove versioni a 32 e 64 bit che potrebbe essere superata dalle nuove funzionalità offerte direttamente dalle ultime versioni di Access (come Environ GetUserName o Computername).
    http://www.databasedev.co.uk/get_username_or_computername.html
    https://social.msdn.microsoft.com/Forums/en-US/04ecae50-c85d-49ef-823c-03e4576a99e1/how-to-get-current-login-user-id-in-ms-access-2010-?forum=accessdev
    http://forum.freeaccess.de/YaBB.pl?num=117275338
    http://www.office-loesung.de/ftopic63986_0_0_asc.ph
    http://www.dbforums.com/showthread.php?1703378-GetUserName
    http://www.accessforums.net/showthread.php?t=4712
    http://www.utteraccess.com/forum/index.php?showtopic=1974186
    http://forum.masterdrive.it/microsoft-office-access-vba-23/conoscere-lusername-sessione-11807/

    Con queste premesse se devi controllare il file MDB in modo da valutare se sia impiegato dagli utenti puoi prendere in esame una serie di considerazioni come:

    - gestire il file LDB o LACCDB che, in base alla versione di Access, fornisce le informazioni di blocco
    https://support.microsoft.com/it-it/kb/96684


    - esaminare se il file è aperto in modo esclusivo
    http://forum.ialweb.it/forum_posts.asp?TID=1646359

    - ottenere l'elenco degli utenti connessi al database
    https://support.microsoft.com/it-it/kb/28582
    https://support.microsoft.com/en-us/kb/19875

    - valutare il numero di utenti collegati
    http://allenbrowne.com/func-ado.html#UserCoun
    https://bytes.com/topic/access/insights/684989-how-generate-user-list
Devi accedere o registrarti per scrivere nel forum
9 risposte