Bonjour suite a ce post
http://www.developpez.net/forums/d76...irebird-2-1-a/

Je suis sur la partie finale ou je me mets en cache la partie de champs blob
J'essaie d'extraire la valeur du champ "IMAGE" et l'ajouter au IBClientDataSet
J'ai regarde l'aide en ligne de TBlobFIeld, et TBlobStream


J'ai fait ceci

Première Solution

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
case ftBlob:{
 
TBlobField *pBl=new TBlobField(pDs);
pBl->FieldName=pDs->Fields->Fields[i]->DisplayLabel;
//pBl->DataSet=pDs;
 
TBlobStream*pBlobStream=new TBlobStream(pBl,bmRead);
 
            TStream*pStreamLu=pDs->CreateBlobStream(pDs->Fields->Fields[i],bmReadWrite);
 
                             pStreamLu->CopyFrom(pBlobStream,pBlobStream->Size);
break;
 
}}
Dans ce cas j'ai une viloation d'acces au niveau du constructeur de TBlobStream

Si je decommante
j'ai cette exception de levée

Le projet TestConectionFirebird4.exe a provoqué une classe d'exception EDatabaseError avec le message 'IBQuery1: Impossible d'effectuer cette opération sur un ensemble de données ouvert'.
le problème est que je si je ferme pDs je perd mes données
pDs est aliment comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 TDataSet *pDs=GetQueryResult(pQuery)

Questions :
comment affecter pEnreg[i] ?

J'ai essaye aussi avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TIBBlobStream*pIBlobStream=new TIBBlobStream(pBl,bmRead);
j'ai une erreur de compilation

[C++ Erreur] TIbSGBD.cpp(193): E2285 Impossible de trouver une correspondance pour 'TIBBlobStream::TIBBlobStream(TBlobField *,TBlobStreamMode)'

Seconde solution que j'ai essayé

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
TStream *pStreamLu=pDs->CreateBlobStream(pDs->Fields->Fields[i],bmReadWrite);
pCache->SaveToStream(pStreamLu);


Le projet TestConectionFirebird4.exe a provoqué une classe d'exception EIBClientError avec le message 'Pas en mode édition'.


Le première solution me plaisais car avec cette méthode TBlobField::AsVariant je contais convertir cecie en variant
est l'affecter a pEnreg[i] qui est un TVarRec
mais je ne vois pas comment dans mon code

question est possible de convetir un Variant en Blob
pour la lecture ?

Je vous remercie de m'avoir lu
et si vous pouvez m'aider.....


Ps si c'est pas assez clair je peux fournir plus de code