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]