Table Temp per User Univoca [RISOLTO]

di il
10 risposte

Table Temp per User Univoca [RISOLTO]

Salve a tutti,

Esigenza: Multi Utenza - Tabella Temporanea Univoca per Utente 

Stato dell'Arte:  A tale scopo ho una tabella, sempre vuota con le Chiavi Univoche e no e tutte le Fields necessarie.
Ovviamente tutti gli oggetti Query, Form, Report, etc… vengono creati e manutenuti sulla base di tale tabella.
In esecuzione del progetto, da questa tabella, vado a creare la nuova tabella temporanea.
Il nome della tabella temporanea viene posto in una variabile stringa Public e con essa vado a sostituire i recordsourse là dove occorre. 
Le dimensioni : sono molto ridotte, 10/12 Fields per non più di un Centinaio di Records al massimo.

Per la tabella temporanea ho utilizzato e preso in considerazione :

  • Tbl_Tmp + UserName =>> scartato in quanto lo stesso utente può entrare in più stazioni di lavoro
  • Tbl_Tmp + PcName =>> in dubbio, se a due Pc mi danno la stesso nome? può essere? 
  • Tbl_Tmp + yyyymmdd + hhmmss =>> in dubbio, se allo stesso secondo viene creata da due User diversi?
  • Tbl_Tmp + macaddress =>> in dubbio, da macaddress di qualche scheda presente nel PC?
  • RecodsetClone =>> potrebbe essere una soluzione ma dovrei passarlo alle varie Function, Form, Query, Report, etc… oppure definirlo Public? 

Domande: 

  • una tabella può avere ambito e vita solo a livello locale, là dove è in esecuzione il programma ?
  • non vorrei creare la tabella temporanea nel front-end. Oppure è da prendere in considerazione?

In questo momento non mi vengono in mente soluzioni lineari e standard. 
Quale dovrebbe essere tecnicamente l'approccio migliore?

Grazie!  ;) 

10 Risposte

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - By65Franco ha scritto:


    Esigenza: Multi Utenza - Tabella Temporanea Univoca per Utente 

    La tua esigenza non è avere la tabella temporanea: l'esigenza è quella necessità per la quale hai pensato di implementare la tabella.

    Dicci qual è la problematica che devi risolvere, poi si vede se la tabella cosiddetta “temporanea” (non mi risulta che Access ne sia provvisto) è la scelta giusta, se conviene creare qualcosa di simile sul DB, sul frontend, in memoria o altrove, e che caratteristiche o nome potrebbe avere.

  • Re: Table Temp per User Univoca [RISOLTO]

    Ciao Franco, io onestamente non comprendo nel concreto cosa devi fare, ma concordo con Alka, anche perchè molti confondono la Tabella di Servizio con una Tabella Temporanea di cui appunto Access non dispone.

    In breve, partirei sempre dal concetto di NON creare a Runtime Oggetti, ma la dove servono come oggetti di Servizio, si creano a Design e si usano a Runtime, vuotandoli e riempiendoli, ovvio parlo di Tabelle in questo caso ma il concetto è allargabile.

    La scelta poi di fare una cosa nel FE o nel BE, dipende da cosa devi fare con i dati contenuti, e spesso da come gestisci la multiutenza che immagino coinvolga l'uso della tabella incriminata.

    Ti faccio un esempio, con un ERP famoso(ma sono tutti così io parlo di SAP R/3) ogni utente può salvare delle proprie preferenze sui moduli di gestione per quanto riguarda la gestione dell'interfaccia, se queste non venissero salvate nel Server a livello di Utente… secondo te come potrebbe spostarsi di postazione, o di sede e recuperare sempre le proprie impostazioni..?

    Quindi in linea di principio a livello di Client si salva solo quello che può servire nella Sessione locale aperta, e poi morire con la sessione stessa, e che non deve avere interazioni con altri…

    In ogni caso se capiamo meglio il tutto, i ragionamenti possono essere più centrati.

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - By65Franco ha scritto:


    Domande: 

    • una tabella può avere ambito e vita solo a livello locale, là dove è in esecuzione il programma ?
    • non vorrei creare la tabella temporanea nel front-end. Oppure è da prendere in considerazione?

    1- No, Access non prevede tabelle temporanee

    2- E' controproducente avere una tabella ad uso locale/temporaneo nel FE in quanto ti cambia le dimensioni del FE costringendoti a frequenti Compatta/Ripristina (del FE)

    Nel concreto, io ho approcciato la questione nel seguente modo :

    - dal FE, dopo l'accesso dell'utente, creo un DB temporaneo locale (nel PC nel quale è in esecuzione il FE). Questo DB temporaneo può essere tranquillamente cancellato se non serve (ovviamente ha senso cancellarlo quando non sei loggato nel FE). Per evitare problemi di ‘eccessivo’ spazio allocato dal DB temporaneo, se la creazione dello stesso è superiore a x giorni do la facoltà all'utente di ricrearlo vuoto o di mantenerlo

    - il DB temporaneo viene utilizzato dal FE per tabelle temporanee (o frutto di elaborazioni intermedie) che vengono create dal FE e linkate allo stesso all'abbisogna.

    - questo approccio assolve al mio scopo, accettando il fatto che le tabelle del DB temporaneo possano esporre dei dati visibili anche utenti diversi

    Utilizzando RDBMS veri, è più sensato usare le tabelle temporanee messe a disposizione dal DB stesso (che per loro definizione sono legate alla sessione - almeno così è per MySQL / MariaDB)

  • Re: Table Temp per User Univoca [RISOLTO]

    Grazie Alka
    Grazie @Alex

    per il caso in questione, vado a semplificarlo ed esporlo in questo modo:

    • Tabella Principale Valori 
      • Join con
        • Tabella Anni
        • Tabella Categorie
        • Tabella Clienti

    Non lo spiego a parole altrimenti mi incarto ;))) 
    In pratica lo schema è questo che sicuramente capirete al volo:

    La tabella Principale Valori contiene tutti i valori per Cliente/Anno/Categoria
    E per Anno e Categoria contiene solo i records valorizzati ( <> da 0)

    Supponiamo di avere 10 Categorie di Valori, dalla 10, 20, 30… 100
    Selezioniamo il Cliente Id 100
    Per tutte le possibili categorie si devono affiancare i Valori di un Anno (quello che si desidera selezionare) supponiamo il 2023
    Si affianca all'Anno selezionato i due Anni Precedenti… nell'esempio il 2022 e 2021

    A questo punto, con le dovute Select, genero la tabella con i valori così affiancati:
    Questa la mia "Tabella Temporanea

     

    Dove dalla Categoria 10 alla 100 vengono riportati i Valori per l'Anno Selezionato e gli Anni di Confronto

    Sempre per esempio, sulla Form, dopo aver selezionato il Cliente e l'Anno Principale da analizzare, si avrà una cosa di questo tipo:

    Con IdCliente i dati descrittivi dello stesso
    con IdCategoria le Descrizioni delle varie voci Disponibili
    In Giallo l'Anno Selezionato e a fianco gli anni precedenti di sola consultazione e confronto
    Ho tralasciato volutamente tutte le descrizioni ricavate dalle varie Join e l'ordinamento dei valori per categoria sulla base di un campo numerico denominato Sequenza che permette di avere l'ordinamento di presentazione come meglio desiderato.

    Operatività: (l'input è consentito solo per la colonna gialla)….

    • La Form consente di modificare solo i dati relativi all'Anno selezionato e in questo caso il 2023
      • se impostato un valore per una categoria = a zero
        • in AfterUpdate del campo:
          •  se il record esiste, si elimina il record nella Tabella Valori
      • se impostato un valore per una categoria <> da 0
        • in AfterUpdate del campo:
          • Se non esiste viene Inserito il record nella Tabella Valori
          • Se esiste viene Aggiornato il record nella Tabella Valori 
    • Tutti gli altri dati sono Bloccati e non modificabili. (solo Visualizzazione)
    • Se si vuole aggiornare gli Anni Precedenti è sufficiente selezionare l'anno che interessa
    • Se si vuole inserire i valori per un Anno Nuovo, per esempio il 2024, è sufficiente selezionare l'Anno 2024, etc… 

    Ovviamente Funziona tutto ;)) 
    Le prestazioni sono ottime, sembra di lavorare in un foglio Excel e anche il caricamento dei dati nella così detta Tabella Temporanea, è in pratica Istantaneo.

    Vi ringrazio per l'attenzione e per le considerazioni che già mi hanno fatto capire alcune cose in più.

    Che ne pensate?  mi conviene cambiare approccio? 

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - By65Franco ha scritto:


    Ovviamente Funziona tutto ;)) 
    Le prestazioni sono ottime, sembra di lavorare in un foglio Excel e anche il caricamento dei dati nella così detta Tabella Temporanea, è in pratica Istantaneo.

    Vi ringrazio per l'attenzione e per le considerazioni che già mi hanno fatto capire alcune cose in più.

    Che ne pensate?  mi conviene cambiare approccio? 

    Se funziona tutto e sei soddisfatto direi che non ha molto senso cambiare …

    Comunque la tabella temporanea dove la crei? Ogni volta che la crei/distruggi/riempi/svuoti con le istruzione SQL/DDL modifichi le dimensione del DB dove la tabella risiede e se questo è il FE alla lunga, se non lo compatti/ripristini, ti ritroverai dei problemi strani (che magicamente spariranno al compattamento/ripristino del FE). Per questo motivo ti ho suggerito di gestire questa tabella ‘temporanea’ in un DB temporaneo diverso dal FE e dal BE …

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - max.riservo ha scritto:


    Utilizzando RDBMS veri, è più sensato usare le tabelle temporanee messe a disposizione dal DB stesso (che per loro definizione sono legate alla sessione - almeno così è per MySQL / MariaDB)

    Grazie max.riservo

    Ottimo per MySql … dove non mi è mai capitato di gestire tali necessità…. 
    ottimi spunti 

    Io provengo da sistemi Ibm e quindi l'approccio e le tecniche sono molto diverse nell'organizzare il Db, librerie, file temporanei a go go con i multimenbri etc… 

    Altre tecniche ovviamente e,  in quest'altri linguaggi il mio approccio è influenzato dalle… "diciamo da queste abitudini” ;)

    Grazie mille!

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - max.riservo ha scritto:


    23/05/2023 - By65Franco ha scritto:


    Ovviamente Funziona tutto ;)) 
    Le prestazioni sono ottime, sembra di lavorare in un foglio Excel e anche il caricamento dei dati nella così detta Tabella Temporanea, è in pratica Istantaneo.

    Vi ringrazio per l'attenzione e per le considerazioni che già mi hanno fatto capire alcune cose in più.

    Che ne pensate?  mi conviene cambiare approccio? 

    Se funziona tutto e sei soddisfatto direi che non ha molto senso cambiare …

    Comunque la tabella temporanea dove la crei? Ogni volta che la crei/distruggi/riempi/svuoti con le istruzione SQL/DDL modifichi le dimensione del DB dove la tabella risiede e se questo è il FE alla lunga, se non lo compatti/ripristini, ti ritroverai dei problemi strani (che magicamente spariranno al compattamento/ripristino del FE). Per questo motivo ti ho suggerito di gestire questa tabella ‘temporanea’ in un DB temporaneo diverso dal FE e dal BE …

    Esatto … i miei dubbi sono proprio in merito a : dove, come e quando 
    Quindi vorrei usare un approccio più ortodosso o standard… Quando ho i dubbi amo il confronto per capire cosa è giusto e cosa è sbagliato.
    Da voi che avete molta più esperienza sul campo posso solo togliermi qualche dubbio e percorrere una strada più ovvia/corretta.
    Grazie!

  • Re: Table Temp per User Univoca [RISOLTO]

    23/05/2023 - By65Franco ha scritto:


    Io provengo da sistemi Ibm e quindi l'approccio e le tecniche sono molto diverse nell'organizzare il Db, librerie, file temporanei a go go con i multimenbri etc… 

    Anche io provengo da sistemi IBM degli anni 80-90 (Cobol + IMS/VS + DL/I) … 

  • Re: Table Temp per User Univoca [RISOLTO]

    Ma che spettacoloooo…

    tempi andati, ma mai trovato OS e Hardware più affidabili.
    Prestazioni e affidabilità senza pari.
    Giravano quelle macchine su milioni e milioni di records senza batter ciglio, Ricordo in una azienda che volevano avere dai 3 ai 4 anni in linea per l'archivio delle Fatture, oltre 30Milioni di Records… senza un problema e con prestazioni come se ci fossero solo 100 records. E con i dischi in Mirroring … neanche con il Raid che aveva prestazioni un attimo migliori. Che spettacolo….;)

    Ai tempi io e un mio carissimo amico per diversi anni, nella nostra regione, siamo stati tra i primi esperti programmatori in Rpg e IleRpg.
    Quante ne abbiamo fatte, quanti Km e Km di codice scritto… quante ore e ore e ore spese tra analisi e sviluppo.

    E invece con gli altri Server, anche delle marche più blasonate, non passava mese indenne…. ogni volta un problema diverso, ma quanto avranno speso di assistenze? ormai eravamo diventati amici intimi con i tecnici che venivano a riparare o l'hardware o il sistema operativo.

    Vabbè, tempi passati che ricordo molto piacevolmente… ma adesso basta, mi dedico al giochicchiare, al divertimento, ho già dato e anche tanto tanto tanto ;))

  • Re: Table Temp per User Univoca [RISOLTO]

    Metto Risolto…

    raccogliendo alcuni dei vostri spunti…

    • la "Tabella Temporanea" l'associo al nome Utente 
      • rimane sul BE
      • quando creata al primo accesso nuovo Utente, successivamente verrà sempre svuotata e riempita con i nuovi valori di ricerca
    • reso tutto parametrizzabile e per successive implementazioni o modifiche, risulterà molto semplice anche cambiare logica e approccio senza dover modificare il resto del codice.

    Grazie per consigli e info.

Devi accedere o registrarti per scrivere nel forum
10 risposte