Creare una nuova tabella in un database diviso

di il
8 risposte

Creare una nuova tabella in un database diviso

Salve a tutti,

sicuramente è già capitato a tanti.

Ho un database diviso. oggi ho necessità di creare una nuova tabella e affiancarla alle altre sia nel front-end che nel back-end.

Ho provato a copiarle manualmente nelle due aree ma non c'è verso. Funziona solo quella in front-end.

Potete darmi un suggerimento?

grazie 

8 Risposte

  • Re: Creare una nuova tabella in un database diviso

    Per quello che ne so io, in un database diviso le tabelle risiedono solo nel back-end. Ciò serve per evitare manomissioni arbitrarie agli utenti che lavorano sul front-end i quali vedono solo altri oggetti quali maschere, report...

  • Re: Creare una nuova tabella in un database diviso

    Non è proprio così Osvaldo, 

    anche in front-end vivono le tabelle ma sono solo uno specchio, i dati originali e quindi anche le modifiche sono nel back-end.

    Dividere un progetto dai dati è cosa semplice ma aggiungere una nuova tabella che si armonizza nella stessa organizzazione mi diventa complicato. Non conosco e non vedo una procedura per ottenere il risultato.  

  • Re: Creare una nuova tabella in un database diviso

    20/04/2026 - antocuomo ha scritto:

    Dividere un progetto dai dati è cosa semplice ma aggiungere una nuova tabella che si armonizza nella stessa organizzazione mi diventa complicato. Non conosco e non vedo una procedura per ottenere il risultato.

    Non c'e' nulla di complicato: la tabella va creata nel database back end, poi con la procedura di collegamento dei dati (menu Dati esterni, nuova origine dati, da database, Access, selezioni il tuo DB backend, spunti la casella collega dati..., selezioni la nuova tabella e la colleghi...

    Niente di complesso....

  • Re: Creare una nuova tabella in un database diviso

    20/04/2026 - antocuomo ha scritto:

    Dividere un progetto dai dati è cosa semplice ma aggiungere una nuova tabella che si armonizza nella stessa organizzazione mi diventa complicato

    Sarebbe poi interessante sapere cosa intendi per "si armonizza nella stessa organizzazione..." ; la creazione di una tabella nel backend e' un conto e credo Tu sappia come fare, come peraltro le relative relazioni.

    Come invece creare query, maschere, report ed eventuali subforms nel front end per gestire i dati della nuova tabella e' tutto un altro "cinema..." 

  • Re: Creare una nuova tabella in un database diviso

    La struttura CLIENT-SERVER ha una sua base teorica ben strutturata, lato SERVER ci sono le Tabelle e lato CLIENT ci sono le interfacce.

    Con Access questo subisce qualche rivisitazione in quanto il prodotto Access è composto da Database+HMI, quindi Client-Server.

    Quando però si opera in modo più standard, ovvero si separano le 2 funzioni, Access consente di Collegare l'origine dati, quindi il Server in modo Visuale, creando quindi dei Collegamenti "Astratti" verso le tabelle.

    Questi collegamenti li ho definiti "Astratti" in quanto in realtà servono solo come puntatori alla tabella ma non si tocca mai nulla lato Client, non si fanno relazioni non si fanno modifiche... si accede solo ai dati di cui il riferimento è un Link.

    Detto questo, se devi creare una nuova tabella lo devi fare lato SERVER che con Access prende il nome di BackEnd, mentre lato Client che con Access prende il nome di FrontEnd, dovrai dirgli ovvero generare un nuovo Link ad una nuova tabella.

    La procedura di LINK da DB REMOTO è quella che ti ha indicato Mailman, tuttavia personalmente uso e suggerisco di fare altrettanto, una procedura da Codice per rigenerare i Link lato Client ad ogni apertura ed eliminarlo alla chisura, questo per 2 motivi:

    1. Sicurezza, se il Server o BackEnd ha la PWD dal Client aprendo una Tabella Linkata, viene skippata la richiesta di PWD in quanto già attivo il ink, e si possono fare danni ai dati non essendo implementati quei controlli di accesso o di validazione, nonchè di privacy.
      Una volta addirittura si leggeva la PSW in chiaro del Server dalle Tabelle di configurazione.
    2. Funzionalità, se domani apporti una modifica ad una Tabella nel Server, e non rigeneri il Link nel Client hai buone possibilità che non funzioni più bene il sistema, magari non consente più la modifica o non vedi eventuali implementazione di nuovi campi.

    Saluti

  • Re: Creare una nuova tabella in un database diviso

    Informazioni preziosissime che mi inducono a ringraziare tutti voi.

    Sarebbe utile come diceva Alex attivare anche una procedura da Codice che però mi vede abbondantemente disarmato.

    In pratica non saprei da dove cominciare. E' una funzione immagino. Posso chiedere di avere un approccio?

  • Re: Creare una nuova tabella in un database diviso

    Nel WEB trovi veramente un sacco di codice... ma, serve capire l'approccio in modo critico per non prendere ad occhi chiusi quello che molti hanno scritto in modo "semplificativo".

    Si trova molto relativo al RefreshLink, ovvero ripristinare le connessioni alle LinkedTables per rigenerare appunto il legame a valle di modifiche lato Server, ma questo da per scontato che le LinkedTable restino sempre le stesse e che rimanga l'oggetto nel Client... troverai infatti molto codice che cicla la collection Tabledefs, andando ad interrogare la proprietà Connect che se valorizzata contiene la connection string.

    Esempio semplificato:

    ' Da qualche parte salvi la connection string
    Const sConnect As String="........" 
    
    Dim tdf As DAO.Tabledef
    For Each tdf In dbs.TableDefs
        If Len(tdf.Connect)>0 And Left(tdf.Name, 1) <> "~" Then 'in questo caso è una Linked Table 
          tdf.Connect = sConnect
          tdf.RefreshLink
        End If
    Next

    Questo è il punto debole di questo approccio, oltretutto se aggiungi una Tabella con questo metodo devi aggiungerla a MANO... perchè nel client non esiste quindi non viene trovata nella Collection Tabledefs.

    Personalmente ho sempre privilegiato l'approccio più completo anche per salvaguardare gli aspetti di sicurezza, quindi:

    1. Su open del FE(Client) effettuo il RELINK da zero si può fare in diversi modi anche con TransfertDatabase(poi posto il codice)
      Per fare questo però serve sapere quali tabelle Linkare, spesso nel Server che non sempre è Access(JET) non tutte le Tabelle vanno linkate... quindi lato Server creo una Tabella di servizio con campo Testo contenente il nome delle sole tabelle da linkare(si può gestire anche eventuale livelli di accesso ecc.. ma diventa complesso), quindi creo una prima connessione da codice al Server sulla tabella di Servizio aprendo un RS e lo ciclo creando al volo le Linked ex-novo.
    2. Su Close le cancello tutte


    Questo evita che nel Client rimangano dati accessibili in modo semplice senza necessità di Login, perchè se lasci attivi i Link puoi fare da Bridge sul server senza autenticazione.

    Detto questo anni orsono avevo fatto un demo... che ti riporto, ma come sempre non aspettarti cose semplici, sono complicato di mio:
    https://1drv.ms/u/c/8285b3eb6cb0b6b7/IQC3trBs67OFIICCOhQAAAAAAcir0OwAuXx0HTEgBLuqfX8?e=5IitQA

    In modo più semplice altrimenti usi questo codice inserendo il TransferDatabase nel Ciclo delle Tables salvate nel Client:

    https://www.tek-tips.com/threads/transferdatabase-with-password.590760/

    Prova a giocarci, butta giù un po di codice se poi hai problemi ci si guarda...

  • Re: Creare una nuova tabella in un database diviso

    Ti ringrazio Alex, ti confermi il mio riferimento assoluto ma per starti dietro devo salire ancora di qualche livello.

    Apprezzo molto il tuo suggerimento semplificato.

    Ciao e a presto.

Devi accedere o registrarti per scrivere nel forum
8 risposte