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 :

PB avec WriteAnsiString pour un export de blob


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut PB avec WriteAnsiString pour un export de blob
    Bonjour

    J ai récupéré une fonction d export, mais c est fait en Lazarus, et ca ne passe pas avec mon Delphi 7
    qui pourrait m aider ??

    c est B.WriteAnsiString et B.WriteDWord , qui ne passe pas

    merci

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    procedure TFHistoire.btnExportClick(Sender: TObject);
    var
      QueryRead: TibQuery;
      dossier: string;
      B: TFileStream;
      T: TMemoryStream;
    begin
      //dossier := 1;
      QueryRead := TibQuery.Create(Application);
      QueryRead.Database := dm.ibd_BASE;
     
      QueryRead.SQL.Clear;
      QueryRead.SQL.Add('select hi_dicorigine'
        + ',hi_date_texte'
        + ',hi_cat'
        + ',hi_titre'
        + ',hi_texte'
        + ',hi_image'
        + ' from ref_histoire'
        + ' where hi_dossier=' + intTostr(dm.NumDossier) );
     
      //  if cxComboBox1.ItemIndex > 0 then
      //    QueryRead.SQL.Add('and hi_dicorigine=''' + ComboBoxDico.Text + '''');
     
      QueryRead.SQL.Add('order by hi_date_debut');
      QueryRead.Open;
     
      if QueryRead.RecordCount = 0 then
        begin
          ShowMessage('Rien à exporter');
          QueryRead.Close;
          QueryRead.Free;
          exit;
        end;
     
      B := TFileStream.Create(ChangeFileExt('dede.txt', '.dica'), fmCreate);
      T := TMemoryStream.Create;
     
      while not QueryRead.EOF do
        begin
     
          B.WriteAnsiString(QueryRead.FieldByName('hi_dicorigine').AsString);
          B.WriteAnsiString(QueryRead.FieldByName('hi_date_texte').AsString);
          B.WriteDWord(QueryRead.FieldByName('hi_cat').AsInteger);
          B.WriteAnsiString(QueryRead.FieldByName('hi_titre').AsString);
     
          T.Clear;
          TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(T);
          B.WriteDWord(T.Position);
     
          if not QueryRead.FieldByName('hi_texte').IsNull then
            TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(B);
     
          T.Clear;
          TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(T);
          B.WriteDWord(T.Position);
     
          if not QueryRead.FieldByName('hi_image').IsNull then
            TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(B);
     
          QueryRead.Next;
        end;
     
      B.Free;
      T.Free;
     
      QueryRead.Close;
      QueryRead.Free;
    end;

  2. #2
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    J ai reussi a résoudre le pb

    mais est ce correct

    procedure TFHistoire.btnExportClick(Sender: TObject);
    var
    QueryRead: TibQuery;
    dossier, sChaine: string;
    iVal: integer;
    B: TFileStream;
    T: TMemoryStream;
    L: Longint;
    aFHistoireExport: TFHistoireExport;
    bImport: boolean;
    iNumDossier: Integer;
    sDico, sFichier: string;
    begin

    aFHistoireExport := TFHistoireExport.create(self);
    try
    aFHistoireExport.ShowModal;
    bImport := aFHistoireExport.bImport;
    iNumDossier := aFHistoireExport.iNumDossier;
    sDico := aFHistoireExport.sDico;
    sFichier := aFHistoireExport.sFichier;
    finally
    FreeAndNil(aFHistoireExport);
    end;

    if bImport then
    begin
    if length(sFichier) < 5 then sFichier := 'Histoire.dica';

    QueryRead := TibQuery.Create(Application);
    QueryRead.Database := dm.ibd_BASE;

    QueryRead.SQL.Clear;
    QueryRead.SQL.Add('select hi_dicorigine'
    + ',hi_date_texte'
    + ',hi_cat'
    + ',hi_titre'
    + ',hi_texte'
    + ',hi_image'
    + ' from ref_histoire'
    + ' where hi_dossier = ' + intTostr(iNumDossier));

    if Length(sDico) > 0 then
    QueryRead.SQL.Add('and hi_dicorigine=''' + sDico + '''');

    QueryRead.SQL.Add(' order by hi_date_debut');
    QueryRead.Open;
    QueryRead.Last;
    QueryRead.First;

    if QueryRead.RecordCount = 0 then
    begin
    ShowMessage('Rien à exporter');
    QueryRead.Close;
    FreeAndNil(QueryRead);
    exit;
    end;

    sFichier := ChangeFileExt(sFichier, '.dica');
    B := TFileStream.Create(sFichier, fmCreate);
    T := TMemoryStream.Create;

    while not QueryRead.EOF do
    begin
    sChaine := '';
    sChaine := (QueryRead.FieldByName('hi_dicorigine').AsString);
    L := Length(sChaine);
    B.WriteBuffer(L, SizeOf(L));
    B.WriteBuffer(Pointer(sChaine)^, L);

    sChaine := '';
    sChaine := (QueryRead.FieldByName('hi_date_texte').AsString);

    L := Length(sChaine);
    B.WriteBuffer(L, SizeOf(L));
    B.WriteBuffer(Pointer(sChaine)^, L);

    iVal := QueryRead.FieldByName('hi_cat').AsInteger;
    B.WriteBuffer(iVal, sizeOf(ival));

    sChaine := '';
    sChaine := (QueryRead.FieldByName('hi_titre').AsString);
    L := Length(sChaine);
    B.WriteBuffer(L, SizeOf(L));
    B.WriteBuffer(Pointer(sChaine)^, L);

    T.Clear;
    TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(T);
    iVal := T.Position;
    B.WriteBuffer(iVal, 4);

    if not QueryRead.FieldByName('hi_texte').IsNull then
    TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(B);

    T.Clear;
    TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(T);
    iVal := T.Position;
    B.WriteBuffer(iVal, 4);

    if not QueryRead.FieldByName('hi_image').IsNull then
    TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(B);

    QueryRead.Next;
    end;

    FreeAndNil(B);
    FreeAndNil(T);

    QueryRead.Close;
    FreeAndNil(QueryRead);

    showMessage('Le fichier Histoire créé porte le nom : ' + sFichier);

    end;

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2015, 19h18
  2. Réponses: 1
    Dernier message: 05/05/2014, 16h05
  3. Réponses: 3
    Dernier message: 21/05/2003, 11h44
  4. Réponses: 19
    Dernier message: 24/05/2002, 16h36

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