2014-09-05 4 views
0

J'utilise Delphi XE7, Firemonkey Mobile. J'ai essayé à la fois sur W32 ainsi que mon Nexus4 (Android 4.4.4). Problème: lors du chargement d'une image à partir du jeu de données client, j'obtiens les erreurs suivantes 1. Erreur distante: [FireDAC] {Phys] [fB] -306. Le texte de la commande ne doit pas être vide. (Connexion) 2. Erreur de socket, même si le CDS contient déjà les données (pas de connexion)Erreur lors du chargement de l'image de clientdataset en utilisant datasnap [Delphi XE7, firemonkey mobile]

Firebird DB -> Firedac -> Datasnap [serveur] -> Connexion DBX -> DSProviderconnexion - > Clientdatasets

le DataSetProvider sur le serveur a les options suivantes set: - poFetchBlobsOnDemand - poAllowCommandText

le champ chargé est en effet un champ blob et ne contient des données.

if DM_OD.CDS_QEmballage.FieldByName('AFBEELDING').IsBlob then 
begin 
    if DM_OD.CDS_QEmballage.FieldByName('AFBEELDING').IsNull then 
    begin 
    showmessage('Empty!'); //for testing puropses 
    end 
    else 
    begin 
    try 
     BF := DM_OD.CDS_QEmballage.FieldByName('AFBEELDING') as TBlobfield; 
     BS := DM_OD.CDS_QEmballage.CreateBlobStream(BF, bmRead); //error message 
     self.Items[i].EmbalPic.LoadFromStream(BS); 
    finally 
     BS.Free; 
    end; 
    end; 
end; 

Répondre

0

Essayez ceci:

var 
    ms: TMemoryStream; 
begin 
    ms := TMemoryStream.Create; 
    try 
    TBlobField(DM_OD.CDS_QEmballage.FieldByName('AFBEELDING')).SaveToStream(ms); 
    self.Items[i].EmbalPic.LoadFromStream(ms); 
    finally 
    ms.Free; 
    end; 
end; 
Questions connexes