Newsgroup: it.comp.appl.access
Titolo: Salvare un'immagine da OLE su disco...

 oggetti blob dal db con Ado oppure con Dao" di Pietro Bonaventi .
Ho provato a implementarla concretamente ma non funziona: perlomeno la
versione DAO.
In pratica viene creata una bitmap su disco, ma completamente vuota...
Qualcuno ha sottomano un link a un .mdb che implementi concretamente la
cosa?
Grazie a tutti.

Daniele ha scritto:

Stai dicendo una cosa diversa da quello che hai chiesto...!!
Il Demo che hai trovato sul SC parla di Campi BLOB(Binary Large Object)
nei quali il File(Immagine o qualsiasi altro formato di File, anche un
EXE o un Doc o ,......) vengono salvari come Binari...!
Di fatto per riesportarli sull'HD ri apre il campo BLOB e lo si
riscrive in Binario in un File...!!!
Non pensare però di avere un Oggetto OLE, che è tutt'altra cosa che,
peraltro, è una tecnica non consigliabile per legare file o immagini a
Records...!!
Tu che devi fare che non si è capito...????????????
@Alex

Stai dicendo una cosa diversa da quello che hai chiesto...!!
Il Demo che hai trovato sul SC parla di Campi BLOB(Binary Large Object)
nei quali il File(Immagine o qualsiasi altro formato di File, anche un
EXE o un Doc o ,......) vengono salvari come Binari...!
Di fatto per riesportarli sull'HD ri apre il campo BLOB e lo si
riscrive in Binario in un File...!!!
Aaaahhh: quindi avrei dovuto preventivamente salvarlo come binario (con
l'altra routine) e non inserirlo come OLE attraverso le opzioni di Access?
Non pensare però di avere un Oggetto OLE, che è tutt'altra cosa che,
peraltro, è una tecnica non consigliabile per legare file o immagini a
Records...!!
Tu che devi fare che non si è capito...????????????
In realtà una cosa banalissima (e solo a valenza estetica): vorrei
memorizzare una skin grafica .Bmp in un "contenitore" all'interno del
.MDB/E.
Quindi su apertura applicazione scaricare su disco l'immagine (nel Path del
FE, direi) e assegnarla a codice alla proprietà .Picture delle varie Forms
che si aprono.
Tutto questo per evitare d'associare fisicamente la skin per ogni Form (le
dimensioni del FE diventerebbero enormi: le maschere sono quasi 200)...
Ciao, Daniele

 Ciao, Daniele
Ma non conviene che ti porti gli Skins in una Cartella e li associ su
evento Load allaproprietà Picture...??
Non c'è nulla da inventarsi, ma quello che vorresti fare è,  amio
avviso poco pratico...!
@Alex

"Alessandro Baraldi" <
Ma non conviene che ti porti gli Skins in una Cartella e li associ su
evento Load allaproprietà Picture...??
Se le skins fossero molte, farei sicuramente così.
Ma dato che si tratta di un unico sfondino, abbastanza gradevole da
adattarsi bene a tutte le Forms, preferisco inglobarlo nell'applicazione.
Inoltre nessun pirla può eliminare la skin (cancellando la cartella) o
personalizzarla come gli pare.
Non c'è nulla da inventarsi, ma quello che vorresti fare è,  amio
avviso poco pratico...!
Ma no che è praticissimo   ;-)
Ciao.

Daniele ha scritto:

Se va bene a te a me cresce....
Detto questo non vedo la difficoltà...!
Metti un campo di tipo Blob nella tabella, lanci la funzione per
Importare il File e quando apri il Db lo devi risputare in una
posizione definita, solitamente è comodo usare la stessa
dell'Applicativo, quindi devi riassociare la proprietà Picture ....!
Visto in ogni caso che il file Immagine al 99% dei casi sarà presente
prima di sputarlo controlla se è esistente(verificane le dimensioni se
pensi che l'utente lo possa sostituire) ed
eventualmente lo sputi...!
Il codice del SC funziona perfettamente.
@Alex

 Ma no che è praticissimo   ;-)
Se va bene a te a me cresce....
?
Detto questo non vedo la difficoltà...!
Certo che non ci sono difficoltà ... chiarito il fatto che quell'immagine
doveva essere memorizzata in formata binario.
Non ho mai usato gli OLE di Jet e pensavo (sbagliando) che fossero già
memorizzati come BLOB.
Ciao

 doveva essere memorizzata in formata binario.
Eh, eh, eh: vabbè, la maledizione continua  ;-)
In pratica, la funzione putBlob() non funziona come dovrebbe: posto uno
stralcio di codice
Function putBlob(strFilename As String, fld As DAO.Field) As Long
    Dim intFile As Integer, lngCount As Long
    Dim lngFileLength As Long, lngLeftOver As Long, lngNumBlocks As Long
    Dim abytFileData() As Byte
    If Not fld.Type = dbLongBinary Then _
    Err.Raise ERR_INVALID_FIELD_TYPE, "GetBlob", "Il campo non è un oggetto
(OLE)."
    lngFileLength = fld.FieldSize()
    If Not lngFileLength > 0 Then GoTo Exit_Here
Ecco: l'intero lungo   lngFileLength  viene sempre restituito = 0 (e quindi
non prosegue la routine).
Il campo in cui cerco d'inserire l'immagine è un OLE, il motore di Database
Jet 3.5, l'immagine una Bitmpa di un centinaio di KB.
Forse la tecnica in oggetto richiede Jet 4.0?
Saluti.