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
Dans ce cas j'ai une viloation d'acces au niveau du constructeur de TBlobStream
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; }}
Si je decommante
j'ai cette exception de levée
Code : Sélectionner tout - Visualiser dans une fenêtre à part pBl->DataSet=pDs;
le problème est que je si je ferme pDs je perd mes donnéesLe 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'.
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
j'ai une erreur de compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part TIBBlobStream*pIBlobStream=new TIBBlobStream(pBl,bmRead);
[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
Partager