Newsgroup: it.comp.lang.visual-basic
Titolo: Salvataggio..."Allegato"

Lo so...lo so... io per settimane mi limito a leggervi 
silenziosamente...poi, d'un tratto... ;-)
Programmino VB6 per protocollare dati.
Database Access 2003
ADO
Orbene, uno dei campi del Db � il path assoluto nel quale verr� conservato 
un qualsiasi documento, sia esso
in formato word, che in pdf che foto etc. Ci� vuol dire che nella cartella 
aperta CARTELLAESEMPIO sotto C:\
verranno conservati tutti i dati relativi al cliente Esempio, e che 
dall'interno in una form baster� cliccare il link
che il programma crea in automatico quando viene creato l'archivio.
Ma se quel file viene eliminato? O peggio L'intera cartella? O se venisse 
spostata?
Panico!
Il quesito: E' possibile archiviare ogni allegato nel database? Esattamente 
come farebbe outlook, dal quale
puoi o estrapolare l'allegato, o eliminare l'intera mail e chiusa la 
parentesi.
Se si...come occorrerebbe procedere?
Grazie a voi tutti
 

 Il quesito: E' possibile archiviare ogni allegato nel database?
...
di solito, per gestire questi dati si usa un campo BLOB.
Non so pero' se access ha la possibilita' di gestire BLOB, e comunque se i 
file che maneggi sono tanti e/o di grandi dimensioni, la vedo difficile.

 Se si...come occorrerebbe procedere?
[snip]
Ci sarebbero varie considerazioni da fare monte di questo ragionamento.
Intanto � facile dire 'cartella'.
E se ci metti 500.000 files?
Altrettanto facile dire 'tutto nel db'.
E se ci memorizzi mezzo tera di allegati?
Cosa accade con volumi di dati significativi?
Nel primo caso, specie se in rete, le prestazioni in lettura/scrittura 
decadono ad un livello tale da rendere il sistema inutilizzabile.
Nel secondo (parliamo di access) i tempi di accesso, copia, backup 
diventano insostenibili.
Generalmente i sistemi di archiviazione di documenti utilizzano una 
struttura di cartelle ad albero per la memorizzazione degli allegati. 
Del tipo 'ogni nnn files ne creo una nuova'. Non utilizzano una tecnica 
di embedding per gli allegati.
E l'integrit� del db (dati <> allegati) viene risolta gestendo i diritti 
di accesso alle cartelle dei documenti ed effettuando dei backup 
incrementali, che si potrebbero realizzare anche consultabili 
singolarmente.
Inoltre la disponibilit� di un db 'agile' consente di accedere comunque 
alle singole informazioni ed una gestione degli allegati batch. Del tipo 
'L'allegato aaBBcc non � al momento disponibile. Inserisci il volume 
2007 per visualizzarlo'.
Detto questo dai miei pochi ricordi il campo blob di access pu� 
incorporare oggetti esterni, se pur con dei limiti. Ad esempio le 
immagini solo in BMP (provai con quelle). Hai presente un sistema di 
archiviazione di documenti? Un A4 in TIFF G3/4 sta in 20/50 kb ma se � 
un BMP diventa 1 mb. Inaccettabile.
-- 
-> GbC|
www.gbcweb.com
www.chiappori.com
 

Aggiungo solo che con SQL Server 2008 c'ï¿œ la possibilitï¿œ di utilizzare
un filestream, per cui si uniscono i pregi di entrambi gli approcci.
Nicola

 ha scritto nel messaggio 
news:4b7abcb9$0$6838$5fc...@news.tiscali.it...

Spiegazione letteralmente splendida! Vi ringrazio davvero tanto per questo 
chiarimento molto importante.
L'idea comunque, mi � venuta ascoltando persone che parlavano delle 
caratteristiche di un software di archiviazione,
disponibile con poche decine di euro, che fa esattamente quello che io 
chiedevo. Mi sa che il prodotto
si chiami archidoc, e consente di immagazzinare il soggetto da protocollare 
in diversi formati trai quali
pdf e tiff o giu di li...(almeno cos� dicono...io non l'ho visto in azione!)
Ecco tutto.
Buona serata e grazie ancora 

 Se si...come occorrerebbe procedere?
Come ti han detto devi sfruttare i campi BLOB. 
Da utilizzatore per� gli sconsiglierei. Il DB diventa grande (magari non
lento, ma grande si).
Preferisco affidarmi al file system per quanto riguarda i backup degli
allegati, e non al DB (per cui di solito sono responsabile per la
configurazione di copie e simili).
Inoltre con i permessi del file system dovresti essere in grado di gestire
comunque gli accessi.
Se proprio vogliamo usare utenti interni del DB puoi fare un'applicazione
che sul server gestisce una cartella "invisibile" a cui gli chiedi:
Scaricami il file
Ti invio il file aggiornato
Cancella il file
ecc.
In modo che sia solo lei che pu� fare qualcosa su quei file.
Certo non sar� banale.

 azione!) Ecco tutto.
Un po' datato e pi� orientato all'archiviazione di documenti cartacei 
(quella era la richiesta):
http://www.gbcweb.com/_d-Protocol5/


"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:p5n75fwxapd6.10...@40tude.net...

Vedr� di capirci meglio...d'altro canto, la grandezza del DB non � un 
problema che mi impedisce di andare avanti...
Forse magari la lentezza...ecco quello sarebbe il problema maggiore...
Vedremo.
Grazie

 Vedremo.
Come ti ha gi� indicato Nicola, se usi SQL 2008 (anche in versione 
express quindi gratuita) puoi utilizzare un nuovo tipo di dati che 
sfrutta il filesystem.
http://community.ugiss.org/blogs/abenedetti/archive/2008/01/29/sql-2008-filestream.aspx
http://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/
ciao
stefano