Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Recupero immagine da campo LongBinary

Ho un database Access che in una certa tabella prevede un campo LongBinary
(tipo DAO, non so come si chiami in ADO o SQL Server), in questo campo č
archiviata un'immagine, banalissima BMP. L'immagine, non un percorso di un
file.
Devo recuperare l'immagine (il database, visti i tempi lo specifico, non ha
password e ho una commessa del cliente e l'autorizzazione scritta di chi ha
realizzato la procedura che gestisce quel database di origine) per metterla
in un file su disco che poi menzionerň in un normalissimo campo testo.
Ho visto e provato FieldSize, GetChunck e, passando dalla ClipBoard, anche
il SetData, ma non sono riuscito a recuperare l'immagine, nemmeno per
assegnarla a una Picture per poi salvarla con SavePicture dove voglio io.
Sapete come ho fatto, io (proprio io)? Non sono riuscito a fare altro che
usare lo stesso metodo adottato dal programma originale: Un controllo Data,
una PictureBox bound-ata a quel campo. Scandaglio il database a mio modo, al
momento opportuno cambio il RecordSource in modo che punti al record che mi
interessa e mi trovo l'immagine nella Picture bound-ata al campo. Una volta
che l'immagine sta nella Picture ne faccio quel che voglio.
Lo so che non puň essere cosě (ma, sinceramente, lo temo), sapete indicarmi
come fare senza usare un Data?
Al GetChunck ci arrivo e la mia variabile contiene della "roba", tanti bytes
pari a FieldSize.
Come assegno la variabile a una Picture per poi masturbarmela a manetta?
Grazie.

 realizzato la procedura che gestisce quel database di origine)
Sfotti? :-P
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
www.nicolaottomano.it

 Sfotti? :-P
No.

 No.
Intendevo la frase "visti i tempi lo specifico".
EDDAI! che stavo a scherzà!


 in un file su disco che poi menzionerò in un normalissimo campo testo.
Devi usare, come ho fatto io, ADODB.Stream:
Dim strFileName As String
Dim rsRecordSet As New ADODB.RecordSet
Dim strmStream As New ADODB.Stream
[...]
strmStream.Type = adTypeBinary
strmStream.Open
strmStream.Write rsRecordSet.Fields("Immagine").Value
strmStream.SaveToFile strFileName
strmStream.Close
Set strmStream = Nothing
Ciao!
Esteban

[*Lupo* = 
LupoOrmaiR...@libero.it
 in
news:buk5c9$iogko$
1...@ID-174464.news.uni-berlin.de
] ha scritto:
...
Ho trovato questo:
http://support.microsoft.com/?id=194975
in ADO, col database di prova nwind.mdb (occorre adattare la connessione)
che salva la foto del vicepresidente Fuller su un file .dat.
Lo fa, ma quel che ne esce non è una foto. A me vien da ridere...

 Devi usare, come ho fatto io, ADODB.Stream:
...
Ci proverň, grazie.

 ha scritto nel messaggio
news:bull4g$isust$1...@ID-174464.news.uni-berlin.de...

Ok, funziona. Provando ho capito che puň funzionare anche l'esempio
dell'altro post.
Fraintendevo e ritenevo il file prodotto come un'immagine.
Non č un'immagine, ma č assegnabile alla proprietŕ Picture con LoadPicture.
A questo punto, con DAO, basta fare (si puň usare anche il GetChunk, ma non
č necessario salvo grosse dimensioni):
Dim x() as Byte
x = rs!nome_campo_immagine.Value
canale=Freefile
Open "C:\file_x" For Binary As canale
Put canale, , x
Close canale
picture1.Picture=LoadPicture("C:\file_x")

 Lo fa, ma quel che ne esce non è una foto. A me vien da ridere...
Credo d'aver capito, anche se questo (si veda altro post) non l'ho più
provato:
Fraintendevo e ritenevo il file prodotto come un'immagine.
Non è un'immagine, ma è assegnabile alla proprietà Picture con LoadPicture.