IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

[BLOB]Enreg Stream dans Field


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 144
    Points
    144
    Par défaut [BLOB]Enreg Stream dans Field
    Salut.
    Je réussis à enregistrer un composant dans un flux de fichier(TFileStream)
    Mais j'aimerais le stocker dans une bdd. Voici mon code actuellement:
    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
     
    procedure TForm1.SaveObjet;
    var
      Data : TFileStream;
    begin
       Query1:=TQuery.Create(Self);
       With TQuery1 Do
       Begin 
        .......
       Data:= TFileStream.Create('MonFichier.dat', fmCreate);
       Data.WriteComponent(RichEdit1);
       ParamByName('commentaire').LoadFromStream(Data,ftFmtMemo);
       ExecSql
       Data.Free;
    end;
    Ca marche trés bien. J'arrive à recharger le flux à partir de la base. Mais mon problème vient du fait que je passe par un TFileStream, et que le fichier 'MonFichier.Dat' ne sert à mon avis à rien. Je voudrais éviter de passer par un fichier. Mais quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
    MonBlobField:TBlobField;
    Data:TBlobStream;
    Begin
             MonBlobField:=TBlobField.Create(Self);
             MonBlobfield.SetFieldType(ftFmtMemo);
             Data:=TBlobStream.Create(MonBlobField,bmWrite);
    End;
    J'ai une erreur sur : Data:=TBlobStream.Create(MonBlobField,bmWrite);
    POURQUOI???
    Merci

    De plus, je n'arrive pas à conserver les infos de mise en forme du RichEdit!

  2. #2
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut test comme ça
    Tiens essai ça !

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    procedure TForm1.SaveObjet; 
    var 
      Data : TMemoryStream; 
    begin 
       Query1:=TQuery.Create(Self); 
         With TQuery1 Do 
            Begin
                Active:=false;
                SQl.Clear;
                SQl.Add('Select ton_fichier from ta_table where id_ta_table=ton choix');
                ExecSQL;
                Active:=True;
            End;
     
      Data:= TMemoryStream.Create
      Try
          TBlobField(Query1.FieldByName('ton_fichier')).saveToStream(Data);
          DATA.Position:=0;
          Data.WriteComponent(RichEdit1);
      Finally
        Data.Free; 
      End;
    end;
    Demande si ça va toujours pas :

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 144
    Points
    144
    Par défaut OK Mais...
    Merci.
    Apparamment, ça enregistre bien dans la base de données (pas d'erreur...)
    Mais je n'arrive pas à recharger le composant. J'ai un msg d'erreur qui dit:
    Erreur de lecture de flux
    A la ligne:
    Obj:=Data.ReadComponent(RichCommentaire);

    Voici mon code:
    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
     
    var
    Obj:TObject;
    Data : TblobStream;
    If Fieldbyname('Commentaire_general').Value<>Null Then
                 Begin
                      Data:= TBlobStream.Create(TBlobField(Fieldbyname('Commentaire_general')),bmRead);
                      try
                         Obj := Data.ReadComponent(RichCommentaire);
                         RichCommentaire := Obj As TRichEdit;
                      EXcept
                            //Si ça ne marche pas, signifie que l'objet n'a jamais été enregistré dans cet enreg.(=null) OU que le format de flux n'est pas bon...
                            on e:exception do showmessage(e.Message);
     
                      end;
                 End;
    Comment dois-je faire pour recharger le composant correctement?
    MErci

Discussions similaires

  1. [JSP]Lecture Blob par streaming
    Par JohnBlatt dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/06/2006, 17h11
  2. [FLASH MX2004] Vidéo en streaming dans Flash ?
    Par micatmidog dans le forum Flash
    Réponses: 5
    Dernier message: 30/04/2006, 20h51
  3. Réponses: 5
    Dernier message: 07/04/2006, 03h49
  4. [MySQL] Champ inconnu dans field list
    Par student007 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/02/2006, 18h09
  5. Réponses: 2
    Dernier message: 03/11/2005, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo