Gestione allegati

di il
6 risposte

Gestione allegati

Buongiorno a tutti, sti realizzando un database che servirà per la gestione dei contratti. Ho creato già tutte le tabelle e le maschere che servono per la gestione del contratto (inserimento,modifica,cancellazione). Per ogni contratto c'è la possibilità di allegare una o più scansioni del contratto. Ho utilizzato un campo ALLEGATO nella tabella contratti-allegati. Il tutto funziona bene, ma dovendo inserire almeno un migliaio di contratti ho la certezza che il database diventi troppo grosso anche impstando le scansione nel formato più piccolo possibile. Premetto che conosco abbastanza bene Access ma non conosco VBA. Al posto del campo allegato vorrei memorizzare nella tabella contratti-allegato il link che richiama la scansione del contratto.
Spero di essere stato chiaro e ringrazio sin d'ora per la collaborazione.

6 Risposte

  • Re: Gestione allegati

    colof62 ha scritto:


    ...Al posto del campo allegato vorrei memorizzare nella tabella contratti-allegato il link che richiama la scansione del contratto.
    Infatti è così che deve essere. Qual è il problema specifico?
    Parole "strategiche" che possono esserti d'aiuto, immaginando che tu debba partire da zero dal momento che non conosci vba: FollowHyperLink, FileDialog, Earlybindin-Latebinding.
  • Re: Gestione allegati

    Ti riepilogo la situazione.
    1) Abbiamo riordinato i contratti cartacei
    2) Li stiamo scansionado in una cartella CONTRATTI e assegnamo ad ogni scansione un codice che corrisponde al codice contratto.
    3) Teminate le scansioni dobbiamo inserire i dati del contratto tramite le maschere create e allegare al contratto NON il file come è adesso (il DB aumenterebbe di molto le dimensioni) ma il link alla cartella. Per esempio C:\CONTRATTI\SCANSIONE_1.PDF
    Grazie
  • Re: Gestione allegati

    Credo sia sufficiente inserire ciascun contratto in un Google document (ad esempio in formato Letter), condividerlo visibile per chiunque, copiare il link e incollarlo in una tabella di Access che poi potrai riportare in un form.
    Non vedo difficoltà.
  • Re: Gestione allegati

    colof62 ha scritto:


    2) Li stiamo scansionado in una cartella CONTRATTI e assegnamo ad ogni scansione un codice che corrisponde al codice contratto.
    3) Teminate le scansioni dobbiamo inserire i dati del contratto tramite le maschere create e allegare al contratto NON il file come è adesso (il DB aumenterebbe di molto le dimensioni) ma il link alla cartella. Per esempio C:\CONTRATTI\SCANSIONE_1.PDF
    Per essere chiari: di che cosa hai bisogno? Una soluzione pronta all'uso, detta in gergo "pappa pronta", è vietata dal regolamento.
    Se invece esponi domande specifiche, per problemi e/o consigli mirati, allora ci siamo.

    Già che scrivo ci metto anche qualcosa che può venirti utile per il tuo lavoro: se il codice del contratto che fa parte del nome che assegnate al file (anche parzialmente) è già presente in qualche tabella del db c'è la possibilità di popolare massivamente il campo in cui memorizzare il percorso del file. Devi valutare tu se vale la pena imparare un po' di vba o se è più semplice-comodo caricare tutto "a mano".

    Nel frattempo ho visto l'intervento di Vespa150PX: sulla "condivisione" prima di parlare di un Google document non è forse più "realistico" un percorso di rete (locale)?
  • Re: Gestione allegati

    Certamente un percorso di rete locale può essere sufficiente. Io suggerivo una modalità che fosse utilizzabile anche in mobilità, quindi esternamente alla rete locale. Sempre che l'utilizzo in mobilità sia richiesto ovviamente.
  • Re: Gestione allegati

    colof62 ha scritto:


    Buongiorno a tutti, sti realizzando un database che servirà per la gestione dei contratti. Ho creato già tutte le tabelle e le maschere che servono per la gestione del contratto (inserimento,modifica,cancellazione). Per ogni contratto c'è la possibilità di allegare una o più scansioni del contratto. Ho utilizzato un campo ALLEGATO nella tabella contratti-allegati. Il tutto funziona bene, ma dovendo inserire almeno un migliaio di contratti ho la certezza che il database diventi troppo grosso anche impstando le scansione nel formato più piccolo possibile. Premetto che conosco abbastanza bene Access ma non conosco VBA. Al posto del campo allegato vorrei memorizzare nella tabella contratti-allegato il link che richiama la scansione del contratto.
    Spero di essere stato chiaro e ringrazio sin d'ora per la collaborazione.
    Diciamo che se conosci Access, sarebbe indispensabile la conoscenza del VBA, in tutti i casi con qualsiasi DB in un sistema DESKTOP, non si inseriscono allegati di alcun tipo nel Database, ma si predispone una Cartella "Allegati" e gli si depositano tutti i File, registrando nel DB il NomeFile ed il Path possibilmente in modo separato, possono essere 2 Campi [Path] e [NomeFile], oppure, in caso di Variabilità del Path, predisporre una Chiave di Registro valorizzata in fase di Installazione o primo Utilizzo con il Path(si usa SaveSettings e GetSettings) o anche una Tabella dedicata con i Local Settings che preveda [NomePoperty]/[ValoreProperty] come si farebbe con un File INI, e forse questa potrebbe esere la soluzione migliore.
    In fase poi di utilizzo in Apertura si popola una Variabile Ambiente con il Path ottenuto leggendo il valore dal Registry o dalla Tabella, questo rende più veloce la concatenazione in Query invece di dover sempre andare a leggere nel Registry o nella Tabella...
    
    Function GetSetting(AppName As String, Section As String, Key As String, [Default]) As String
        Membro di VBA.Interaction[code]
    
    Sub SaveSetting(AppName As String, Section As String, Key As String, Setting As String)
        Membro di VBA.Interaction
    
    Quindi lanci il comando ONE SHOT:
    SaveSetting "MyApp","Startup", "PathName", "C:\TuaPath\"
    Poi su Avvio leggi e memorizzi in Variabili facilmente gestibili, i dati Ambiente di Sessione:
    
    Option Compare Database
    Option Explicit
    
    Private mPathName String
    
    Function LoadSettings()
        ' se usi il Registry
        Call PathName(GetSetting(appname := "MyApp", section := "Startup", _
                           key := "PathName", default := Application.CurrentProject.Path & "\"))
        ' oppure.... se hai la tabella
        Call PathName(Dlookup("PathName","tblSettings"))
    End Function
    
    Function PathName(Optional Value)
        If Not IsMissing(Value) Then mPathName = Value
        PathName= mPathName 
    End Function
    In questo modo ti basta memorizzare il NomeFile e per Concatenazione il FullPathName
    
    PathCompleto=PathName() & [NomeFile]
Devi accedere o registrarti per scrivere nel forum
6 risposte