Newsgroup: it.comp.lang.vo-clipper
Titolo: mysql e pdf

Ciao a tutti,
vorrei inserire in un campo blob un file pdf. Se seguo lo stesso metodo con 
cui memorizzo le immagini non va, mi memorizza solo la parte del testo, io 
vorrei il file cosě com'č.
Qualche suggerimento?
Grazie.
                                                Francesco Leo 

Strano comportamento, i campi blob prendono di tutto,
Ora due domande che ti sembreranno ovvie e cretine ma...,
Sei certo che la dimensione sia sufficiente?
Hai tratto prima il dati con il controllo delle sequenza di escape?
Danilo 

 Hai tratto prima il dati con il controllo delle sequenza di escape?
si, ho usato la stessa procedura che uso per le immagini, ossia:
LOCAL cQuery AS STRING
LOCAL cBuffer AS STRING
LOCAL ptrHandle AS PTR
LOCAL dwBytes AS FLOAT
LOCAL nLen AS DWORD
ptrHandle := FOpen2("c:\temp\scheda.pdf", FO_READ)
FFirst(PSZ(_CAST,  "c:\temp\scheda.pdf"), FC_NORMAL)
nLen := FSize()
cBuffer := Space(nLen)
dwBytes := FRead(ptrHandle, @cBuffer, nLen)
FClose(ptrHandle)
cQuery := "insert into scansioni set contenuto =" + Apici(cBuffer)
myQueryStr(cQuery)
l'inserimento avviene e leggo l'header del file come pdf, ma ora mi sorge un 
dubbio: come faccio a recuperarlo dal database e convertirlo nuovamente in 
file pdf? Non vorrei che la scrittura fosse corretta ma sono io che non 
riesco a leggerla come dovrei.
Grazie, sei come sempre prezioso e disponibile.
Francesco Leo

 riesco a leggerla come dovrei.
Non ti fare ingannare dal fatto che vedi solo pochi caratteri, questo 
avviene anche per le immagini.
Chiedi al server la lunghezza del campo:
select LENGTH(campo) from tabella
se è quello che ti aspetti o qualcosina in più è caricato.
Per recuperarlo fai un fieldget e scrivi il contenuto su un file.
Danilo 

 Danilo
Dunque, se io leggo da mysqlfront la lunghezza del blob mi dà 2.588, se la 
leggo da programma mi dà 10!
Ho usato questo codice per leggere il blob e metterlo in un file, con 
approccio odbc, dove ho sbagliato?
Grazie ancora.
                                                    Francesco
PtrFile := FCreate( "c:\temp\pippo.pdf")
oConnOdbc := SQLConnection{}
oConnOdbc:connect(cDatabase,"infoservice","fleo")
oS_Server := SqlTable{"scansioni",,oConnOdbc}
oS_Server:Where("cod_scan = 1")
uValue := oS_Server:GetData(3) // è il campo blob
FWrite(PtrFile, uValue,SLen(uValue))
FClose(PtrFile)
MemFree(myPtr)
oConnOdbc:Disconnect()

 oConnOdbc:Disconnect()
Non so cosa dirti, non uso ODBC.
Ma secondo me il problema è in slen() e fWrite(), prova a non indicate la
len o ad usare fputs() sempre senza len.
A meno che getdata non tronchi al carattere 10 scambiato per fine stringa,
che in un blob può essere ovunque.
Danilo

 Danilo
GetData() mi restituisce una stringa vuota di 10 caratteri, non capisco 
perchè, visto che la uso per leggere le immagini da blob e funziona 
perfettamente, farò qualche indagine........
Grazie.
                            Francesco 

Misteri del software.........
Nella stessa procedura, mi collego ad un database X e la lettura funziona, 
mi collego ad un database Y e non funziona!!! Le tabelle dei database sono 
identiche, cosě come le connessioni. Ho provato a ricreare la tabella 
scansioni del database che non va ma niente!
Quindi non č un errore mio di procedura, ma qualcosa che ha a che fare con 
il database, ma non so proprio cosa..........
                                            Francesco