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 

Votre réponse

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
2
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.