Exporter une base de donnée paradox vers fichier de format .txt?

Messages postés
3
Date d'inscription
mardi 26 mars 2019
Statut
Membre
Dernière intervention
10 avril 2019
- - Dernière réponse : getsource
Messages postés
5
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 avril 2019
- 20 avril 2019 à 02:21
comment exporter une base de donnée paradox vers fichier de format .txt?
Afficher la suite 

2 réponses

Messages postés
10
Date d'inscription
jeudi 31 décembre 2009
Statut
Membre
Dernière intervention
14 avril 2019
0
Merci
Je ne connais pas Paradox mais programme des SGBD depuis des decennies...

2 possibilités:

1 Exporter les données en fichier texte CSV (Comma Separated Values). Tous système de SGBD doit posseder une telle fonction. Je suis certaine que Paradox a au moins 2 formats texte vers lequels il "sais" exporter.

Sinon,
2 Imprimer vers une imprimante virtuelle: TEXTE ou FICHIER. Si cela existe toujours... c'est un vieux système.

EitanG
Commenter la réponse de eitang
Messages postés
5
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 avril 2019
3
0
Merci
 PROCEDURE datasetToTextFile(ds : TDataSet; nomFichier : string;separateur : string = ';'; delimiteur : char = #0);
                           {------------------------------------------------------------------------------------}
const
 sLineBreak = #10#13;
var
  i : integer;
  fichier : TextFile;
  bm : TBookmark;
  sCursor : TCursor;
  valeur : string;
  opENDS : boolean;



BEGIN
  TRY
    { Création du fichier de sortie }
    AssignFile(fichier,nomFichier);
    Rewrite(fichier);
  EXCEPT
    on e: EXCEPTion do
      raise EXCEPTion.Create('Erreur lors de  la création du fichier [' + nomfichier + '] : ' +   sLineBreak + e.message);
  END;

  sCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  TRY
    ds.DisableControls;
    opENDS := not ds.Active;
    bm := nil;
    TRY
      with ds do
      BEGIN
        IF opENDS THEN
          Open
        ELSE
        BEGIN
          { on sauvegarde la position de l'enregistrement courant dans }
          { le dataset afin de la restituer en fin de traitement }
          bm := ds.GetBookmark;
          First;
        END;
        { ligne d'en-tête : on met le nom des zones }
        for i:= 0 to FieldCount - 1 do
        BEGIN
          IF (i > 0) THEN
            write(fichier,separateur + ds.Fields[i].FieldName)
          ELSE
            write(fichier,ds.Fields[i].FieldName);
        END;
        writeln(fichier);  { passe à la ligne suivante dans le fichier }
        while not Eof do
        BEGIN
          { écriture de chaque colonne de l'enregistrement courant }
          for i := 0 to FieldCount - 1 do
          BEGIN
            { ajout du délimiteur si le champ est de type texte }
            IF (delimiteur <> #0) and
              (Fields[i].DataType in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString]) THEN
              valeur := AnsiQuotedStr(Fields[i].Text,delimiteur)
            ELSE
              valeur := Fields[i].Text;
            { à partir du second champ, on ajoute le séparateur }
            IF (i > 0) THEN
              write(fichier,separateur + valeur)
            ELSE
              write(fichier,valeur)
          END;
          writeln(fichier); { passe à la ligne suivante dans le fichier }
          Next;
        END; { while not eof }
      END; { with ds }
    finally
      { si on a ouvert le ds, on le ferme }
      IF opENDS THEN
        ds.Close
      ELSE
      { sinon, on se repositionne sur l'enregistrement initial }
      BEGIN
        ds.GotoBookmark(bm);
        ds.FreeBookmark(bm);
      END;
      ds.EnableControls;
      CloseFile(fichier);
    END;
  finally
    Screen.Cursor := sCursor;
  END;
END;


et on appelle la fonction

procedure TForm1.Button1Click(Sender: TObject);
begin
datasetToTextFile(Table1,'c:\dataset_textfile.txt',';',' ');
end;
Commenter la réponse de getsource