Newsgroup: it.comp.appl.access
Titolo: Problema con file compressi da Db

Chiedo l'aiuto del group per un problema che non riesco a risolvere..
Ho un Db FE-BE di Gestione dei Curriculum Vitae. Secondo le nuove
normative in materia di privacy, i curricula (prevalentemente .doc) che
allego a ciascuna scheda nel Db devono essere in qualche maniera
criptati per evitare accessi indesiderati agli stessi.. Ho deciso
quindi di strutturare una routine che attraverso le ComDLG faccia
scegliere il file, lo comprime sotto password con lzh32 e lo sposta,
rinominandolo secondo un preciso schema
attribuendo al file il nome: Md5([idutente] & ".lzh").
Alla fine, nella directory "files", mi trovo tutti gli allegati delle
schede, compressi, con pwd e nomi file "criptati" con md5 .. ((piu' di
cosi')).
Problema::
APRIRE IL FILE QUANDO SI RICHIEDE LA VISUALIZZAZIONE DELL'ALLEGATO!!
Fin ora ho risolto che, con routine vb, l'utente accreditato poteva
tramite controllo,lanciare la decompressione del file lzh in una
directory temp poi - e scusate l'archibugio - una seconda routine si
preoccupava tramite comandi
retval= shell("lzh32.exe -v -nv " & nomefile & " > temp.txt")
di scrivere ( comando print su file da dos ) nel file .txt il nome del
file all'interno dell'archivio ottenuto da "lhz32 -v -nv"
il file temp.txt conteneva cosi' solo una riga del tipo
c:\temp\nome file.doc
leggendo la riga nel file .txt con INPUT... passavo alla routine
Startdoc() il nome del file da aprire ed il gioco era risolto
Se avete un consiglio migliore è bene accetto perchè per alleggerire
il codice ho "decentralizzato" la funzione dalla form a un modulo di
classe e ora il comando ">" (print to file da dos) NON FUNZIA PIU'!!!
Non ho voglia di rimettere tutto da capo.. sigh..



Se puo'  interessarvi ho risolto il mio problema..
Partendo da un file compresso in lha32 passare a una routine
Executefile() il nome esatto del file nel'archivio
Se avete migliorie da consigliarmi senno ecco a voi la mia soluzione
Public Function ViewLzH(file As String)
'***********************************************
' routine di visualizzazione del file
'***********************************************
On Error GoTo errore
Dim f, iss, lf, rf, filescd, filetoopen, strcmd, iss1, iss2, ir, b
dim retval as variant
iss = "" 'stringa dove registra il file lha
filescd = nomefile.lzh ' è il nome dell'archivio compresso
strcmd = "lha32.exe e c:\... nomefile...." 'lha32 estrae il
file "nomefile"
retval = Shell(strcmd, vbHide)
f = FreeFile
Open filescd For Input As #f
On Error Resume Next
Line Input #f, iss1
If InStr(1, iss, " A", vbTextCompare) = 0 Then
' ** cerca la fine del codice digimark di lha. Se non è presente nella
prima riga la unisce alla successiva. A volte il codice viene compresso
su due righe **
Line Input #f, iss2
iss = iss1 & iss2
Else
iss = iss1
End If
Close #f
'** ora iss contiene la stringa di identficazione archivio lha32
ir = 15 'start lha digimark
lf = Right(iss, Len(iss) - ir) 'mantiene solo la parte digimark
rf = Left(lf, InStr(1, lf, " A", vbTextCompare) - 1) 'rimuove i codici
lha dalla digimark
rf_clean: ' eventuale pulizia di codice dal nomefile
If InStr(1, rf, Chr(1)) Then
rf = Right(rf, Len(rf) - 1)
GoTo rf_clean
End If
b = 0
nofil: 'attende la completa decompressione del file
b = b + 1
If b > 10000 Then Exit Function 'timer per evitare loop infiniti nel
caso di errori
If fIsFileDIR(PathTemp & rf) Then Call StartDoc(PathTemp & rf) Else:
GoTo nofil
' il nomefile registrato dopo le varie pulizie nella variabile rf
vienepassato alla routine startdoc (o Executefile) o shell .. per
essere aperto!
Exit Function
errore:
End Function