Newsgroup: it.comp.lang.vo-clipper
Titolo: mysql-Vo-Blob.......ancora!

So che ne abbiamo discusso a lungo ma dopo tanto tempo ho ripreso in mano le 
procedure e ci sono un po' di conti che non riesco a far quadrare. Ora 
descrivo con ordine quello che vorrei fare e come tento di farlo.
-->Vorrei semplicemente visualizzare a video un immagine contenuta in un 
campo blob di mysql
Per prima cosa leggo il contenuto del campo blob e lo trasformo in un ptr:
///////////////////////////////////////////////////////////////////
LOCAL oResult AS FabMySQLResult
LOCAL oRiga AS FabMySQLRow
LOCAL cRes AS USUAL
LOCAL cQuery AS STRING
LOCAL ptrImageStr AS PTR
LOCAL nLen AS DWORD
cQuery := "SELECT contenuto FROM scansioni WHERE cod_scan = 1"
  oResult := myQueryRes(cQuery)
  oRiga := oResult:fetch_row
  cRes := oRiga:GetData(1) // ho messo e tolto il filtro 
mysql_real_escape_string ma non cambia nulla!
  oResult:Free()
        nLen := Len(cRes)
        ptrImageStr := MemAlloc(nLen)
        MemCopy(ptrImageStr,  String2Psz(cRes), nLen)
RETURN ptrImageStr // dopo controllo se č un puntatore valido e mi dice di 
si!
/////////////////////////////////////////
Fatto ciň ottengo un puntatore che dovrei trasformare in DIB......
pBitMap := DIBCreateFromPTR(ptrImageString, PtrLen(ptrImageString))
ottenuto il dib provo a visualizzarlo ma non ne vuole sapere. Ho provato in 
diversi modi, utilizzando finestre create ad hoc e controlli custom ma 
niente!
Ho anche usato l'esempio DIBCreateFromPtr() di VO che funziona bene se apro 
un file ma se gli passo il puntatore ottenuto come sopra mi dice Error 
reading image.
Qualche anima buona puň dare un occhiata a quanto ho scritto e dirmi che 
cosa sto combinando? Non sarebbe male qualche esempio pratico, ad esempio 
come creare correttamente un puntatore e passarlo ad una finestra per 
visualizzare l'immagine, ammesso che io stia sbagliando :-(
Grazie della pazienza e dell'aiuto.
                                    Francesco Leo

Nessuno usa le immagini da mysql con vo? Che strano......... 

 Nessuno usa le immagini da mysql con vo? Che strano.........
Io uso le immagini con Vo e mysql ma utilizzo Vo2Ado mi 
trovo benissimo, salvo l'immagine su disco e poi la visualizzo.
 
Mi dispiace non poterti dare un aiuto per il tuo problema.
 Ciao Antonio 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ciao Antonio
Anche io, per ora, salvo l'immagine su disco e poi la visualizzo ma se il 
database è su di un altro pc come fai a salvarla sul tuo pc? Mysql non ti 
permette di dare un percorso......
Grazie cmq.
                            Francesco

 wrote in message
news:wkXme.1468745$
35.54...@news4.tin.it

L'applicazione è installata sul pc ed il database è in remoto,
tiro fuori l'immagine dal campo BLOB e la salvo su disco.
FUNCTION dbToFile(Fld AS AdoField,NomeFile AS STRING)AS LOGIC
   LOCAL FileLenght,LeftOver AS LONGINT
   LOCAL ptrFile AS PTR
   LOCAL NumBlock,j AS WORD
   LOCAL ByteData AS STRING
   LOCAL F_BLOCK AS DWORD
   F_BLOCK:=32768
 IF File(NomeFile)
    DeleteFile(PSZ(NomeFile))
  ENDIF
IF (ptrFile:=FCreate(NomeFile,FC_NORMAL)) = F_ERROR
    Msg("Il file "+Nomefile+" non è stato creato..","E")	
    RETURN FALSE
  ENDIF
  FileLenght:=Fld:ActualSize
  numBlock:=FileLenght / F_BLOCK
  Leftover:=Mod(FileLenght,F_BLOCK)
  ByteData:=Fld:GetChunk(LeftOver):Value
  FWriteText(ptrFile,BYTEdata)
  FOR j:=1 TO numblock
    ByteData:=Fld:GetChunk(F_BLOCK):Value
    FWriteText(ptrFile,BYTEdata)
   NEXT
 FClose(PTRfile)
RETURN TRUE


Mi sa che prenderò in esame Vo2Ado, con le funzioni mysql non si può 
fare.......
Grazie.
                        Francesco 

 wrote in message
news:iVXme.1469027$
35.54...@news4.tin.it

Dimenticavo puoi usare anche questo approccio:
 
METHOD Esporta(lModo) CLASS frmPazFoto
  LOCAL oRs   AS AdoRecordSet
  LOCAL oFld  AS AdoField
  LOCAL oStream AS AdoStream	
SELF:CurrentImage:=WorkDir()+"TMP001."+IIF(lModo,SELF:Server:FIELDGET(#Tipofoto),"jpg")
    oRs := AdoRecordSet{}
    oRs:Open([select fotoBlob from pazienti_fo Where
id_foto=]+NTrim(nLineNr)+[ and
id_paziente=]+NTrim(IDPAZIENTE_ATTIVO),goConn,adOpenForwardOnly,adLockReadOnly,AdCmdText)
    oFld:=oRs:FIELDs:[Item,"fotoBlob"]
    oStream:=AdoStream{}
    oStream:TYPE:=adTypeBinary
    oStream:Open(NIL,NIL,NIL,NIL,NIL)
    oStream:Write(oFld)
    oStream:SaveToFile(SELF:CurrentImage,adSaveCreateOverWrite)
    oStream:Close()
    oRs:Close()
    oFld:=NULL_OBJECT
    SELF:oDCFoto:Image:=FabPaintlib { SELF:CurrentImage , SELF }
RETURN SELF


 ha scritto nel messaggio 
news:ea03c843568b6a53901...@mygate.mailgate.org...

Mi sa che non va bene, se ho capito bene Vo2Ado usa l'Odbc, io no!
Ciao.
        Francesco

Ado usa o un provider OLEDB o un Driver ODBC, io lo utilizzo
su rete geografica, con connessioni anche dall'estero (iraq)
ed è molto veloce anche cosi.


 ha scritto nel messaggio 
news:iVXme.1469027$35.54...@news4.tin.it...

Si può fare come dimostrato nelle manifestazioni del 2003 e del 2004. Devi 
smanettare con le sequenze di escape e i buffer di memoria.
Se scarichi SqlManager vedrai che si visualiizano immagini.
Danilo Giuliani 

 Danilo Giuliani
Lo so che si può fare, il punto è come :-(
Sql Manager è per la 2.7, io ho la 2.5 e non parte...
Ciao.
                    Francesco 


Sono sicuro che vada bene, ma l'approccio ai dati è differente e dovrei 
riscrivere praticamente tutti i programmi, non credo sia il caso......
Ciao.
                                            Francesco 

 ha scritto nel messaggio 
news:%V%me.965666$b5.41...@news3.tin.it...


Ora me lo studio per bene, il fetch_lengths c'è anche nella libreria di 
Foray, ma non credo che sia solo quello, devo guardare bene il tutto, ti 
farò sapere.
Grazie!
                        Francesco