Variabile comune a più database

di il
7 risposte

Variabile comune a più database

Buongiorno a tutti

Ho un database con una maschera con dei record in cui il primo campo è un contatore.

Clikkando sul record memorizzo il numero di contatore relativo in una variabile pubblica. Mi servirebbe poter utilizzare quel dato memorizzato, in un altro database, dove clikkando su un record di una maschera venisse copiato il valore in un campo.

So che le variabili hanno validità all'interno di un unico database...ma non so se è possibile con un escamotage o con qualce funzionalità che non conosco, avere un effetto simile.

Grazie

Stefano

7 Risposte

  • Re: Variabile comune a più database

    1- quando da programma1 vai ad aggiornare il contatore, potresti farlo anche sul db2 del programma2, istesso da programma2 verso db1

    2- potresti tenere memoria permanente dentro al classico file ini del tipo  c:\file_contatore.ini  che verrebbe usato sia in lettura che in scrittura da programma1 e programma2

    Una delle tre

  • Re: Variabile comune a più database

    Ciao,

    Puoi semplicemente creare una tabella dove memorizzare il tuo contatore ... per esempio poniamo di avere :

    • Database1
      • in questo database creare la tabella TblShared
    • Database2
      • in questo database colleghi la tabella TblShared che si trova nel Database1

    .
    Ovviamente vale anche il contrario, cioè creare la tabella Shared in Database2 e collegarla nel Database1. E' del tutto indifferente.

    Poniamo di avere una certa struttura per la tabella TblShared di questo tipo:

    dove :

    • la field SharedType - identifica il valore da memorizzare e aggiornare (in questo esempio poniamo di impostare questa chiave = 10)
    • la filed SharedConta - si legge e si aggiorna il valore del tuo contatore da condividere

    .
    Una struttura semplice e pratica come questa consente di crearsi diversi scenari e condivisione di diversi valori da interscambiare tra Database1 e Database2 e viceversa.

    Adesso poniamo di avere due textbox in una Form in entrambe i database e un button per aggiornare il valore del contatore da condividere:

    • TextBoxContaCurrent  (in questa textbox preleviamo il valore attuale del contatore e lo si visualizza- evento Form_Load)
    • TextBoxContaUpdate  (in questa textbox impostiamo il  nuovo valore del contatore da condividere tra i due database)
    • ButtonUpdateConta - al suo Click si aggiorna in tabella il nuovo valore del contatore da condividere tra i databases


    Sia in Database1 che in Database2, in questo esempio, si scriverà negli stessi eventi le stesse operazioni sia per prelevare il valore attuale del contatore che per aggiornarlo:

    ' LOAD FORM
    Private Sub Form_Load()
    
    ' Retrieve Conta current
    Me.TextBoxContaCurrent.Value = DBEngine(0)(0).OpenRecordset("Select SharedConta From TblShared Where SharedType = 10")(0)
    
    End Sub
    
    
    ' UPDATE CONTA
    Private Sub ButtonUpdateConta_Click()
    
    ' Check if numeric value
    If Not IsNumeric(Me.TextBoxContaUpdate.Value) Then
        MsgBox "Only numeric values are allowed.", vbExclamation
        Exit Sub
    End If
    
    ' Check update value
    If Val(Me.TextBoxContaUpdate.Value) > 0 Then
        DBEngine(0)(0).Execute ("Update TblShared Set SharedConta = " & Val(Me.TextBoxContaUpdate.Value) & " Where SharedType = 10;")
    End If
    
    ' Retrieve Conta current
    Me.TextBoxContaCurrent.Value = DBEngine(0)(0).OpenRecordset("Select SharedConta From TblShared Where SharedType = 10")(0)
    
    End Sub

    .
    Ecco fatto ... con due  righe di codice abbiamo condiviso un valore che entrambe i database possono condividere sia per visualizzarlo che per aggiornarlo.

    • La tabella Shared, se ben strutturata, può consentire di condividere anche altre informazioni tra ii databases
    • L'utilizzo della tabella collegata in uno dei due database, offre alcuni vantaggi:
      • non dover scrivere codice extra per accedere all'informazioni. Viene trattata come una qualsiasi tabella del database.
      • evitare problemi di blocco dei records e permessi per la lettura e scrittura dell'informazioni da condividere
      • facilita l'uso dei valori salvati nella tabella in qualsiasi scenario, come all'interno di Query, Form, Report, Sringhe Sql con Select/Join/etc...etc...

    .
    Insomma, risulta una tecnica estremamente facile, veloce e compatibile con tutte le funzioni di MsAccess.

  • Re: Variabile comune a più database

    Mmm... sono proprio necessari 2 database?

    non ti conviene creare un unico database che implementa le tabelle dei 2 db con 2 prefissi diversi?

    per esempio

    a.tabella1

    a.tabella2

    a.tabella3

    b.tabella1

    b.tabella2

    b.tabella3

    dove "a" è il prefisso delle tabelle del primo db

    mentre "b" è il prefisso delle tabelle del secondo db

  • Re: Variabile comune a più database

    Ciao,

    in modo moltosemplice .... ti lascio piccola demo che mostra come poter utilizzare i metodi di cui al post precedente: 

    https://1drv.ms/u/c/46aacde0762d4e68/EfEnEPNYQ2RFtZOpdZdvir4Bjf2Zaxt3_EjxAl9vY2IHqw?e=e2kEHh

    • Posizionare i due databases dove si desidera
    • Sarà possibile aprire e tenere aperti entrambe i databases
    • Inserire un numero nella TextBox Update Conta e premere il Button Update Conta
    • Una volta aggiornato il valore di Conta in uno dei due databases, spostarsi sul l'atro database e premere il button Refresh per vedere il valore aggiornato
    • Il collegamento della tabella Shared verrà rimosso e ricreato ogni volta che si accede alla Form. Vedere il codice posto nel Modulo MyUtilityShared in Database2
  • Re: Variabile comune a più database

    Grazie a tutti per la disponibilità. Provo a smanettare un po per vedere quale soluzione adottare.

  • Re: Variabile comune a più database

    11/04/2025 - Longer ha scritto:

    Grazie a tutti per la disponibilità. Provo a smanettare un po per vedere quale soluzione adottare.

    Se vuoi scaricare la demo riprendila da qui che  avevo dimenticato un close del db che viene utilizzato con il Dao per ricreare la tabella Shared

    https://1drv.ms/u/c/46aacde0762d4e68/EfEnEPNYQ2RFtZOpdZdvir4Bjf2Zaxt3_EjxAl9vY2IHqw?e=e2kEHh

  • Re: Variabile comune a più database

    11/04/2025 - By65Franco ha scritto:

    11/04/2025 - Longer ha scritto:

    Grazie a tutti per la disponibilità. Provo a smanettare un po per vedere quale soluzione adottare.

    Se vuoi scaricare la demo riprendila da qui che  avevo dimenticato un close del db che viene utilizzato con il Dao per ricreare la tabella Shared

    https://1drv.ms/u/c/46aacde0762d4e68/EfEnEPNYQ2RFtZOpdZdvir4Bjf2Zaxt3_EjxAl9vY2IHqw?e=e2kEHh

    Perfetto. Grazie ancora. L

Devi accedere o registrarti per scrivere nel forum
7 risposte