Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Textfile in DB einlesen (https://www.delphipraxis.net/22817-textfile-db-einlesen.html)

Christian18 24. Mai 2004 14:50


Textfile in DB einlesen
 
Hallo,

ich habe ein kleines Problem. Ich habe eine Paradox7 Tabelle und eine Textdatei. Die Textdatei wollte ich in die DB einlesen. Hatte auch schon mal gegonnen. Das ; soll aber nicht in die DB rein. wie mache ich das

Delphi-Quellcode:
procedure TForm1.bClick(Sender: TObject);
var

  F: TextFile;
  S: string;
begin
  if OpenDialog1.Execute then         { Dialog zum Dateiöffnen anzeigen }
  begin
    AssignFile(F, OpenDialog1.FileName);  { Datei ausgewählt }
    Reset(F);
    Readln(F, S1);                         { Erste Zeile der Datei lesen }
    Edit1.Text := S1;                      { String in ein TEdit schreiben }
    CloseFile(F);
  end;
end;

alcaeus 24. Mai 2004 16:48

Re: Textfile in DB einlesen
 
Zitat:

Zitat von Christian18
Das ; soll aber nicht in die DB rein.

Wie genau meinst du? Ein ; am Zeilenende? Wenn ja dann:
Delphi-Quellcode:
if DeinText[Length(DeinText)] = ';' then
  Delete(DeinText,Length(DeinText),1);

Christian18 15. Jun 2004 12:10

Re: Textfile in DB einlesen
 
hieraus werde ich nicht schlau. wie kann ich denn jetzt eine txt datei einlesen???

shmia 15. Jun 2004 12:36

Re: Textfile in DB einlesen
 
Zitat:

Zitat von Christian18
wie kann ich denn jetzt eine txt datei einlesen???

"txt datei" ist viel zu ungenau.
Es gibt im Prinzip 2 Grundformate:
  • fixed Text Format
    Alle Felder haben eine fest definierte Länge; damit hat auch der Datensatz eine feste Länge
  • CSV (Comma Separated Values)
    Die einzelnen Felder sind durch ein Trennzeichen (meist Strichpunkt) getrennt.
    Stringfelder werden meist in Anführungszeichen eingeschlossen
In beiden Fällen werden die Datensätze meistens durch CR-LF (#13#10) getrennt.
Der Zeichensatz kann ASCCI (MS DOS-Welt), ANSI (Windows-Welt) oder ein sonstiger Zeichensatz sein.
Ausserdem kann beim CSV-Format die 1. Zeile die Feldnamen enthalten (oder auch nicht).

Man kann den Import hart codieren oder man verwendet Importkomponenten, die durch Parameter
gesteuert werden; es kommt drauf an, ob man öfters versch. Dateien importieren muss oder nur einmal.

Christian18 15. Jun 2004 12:41

Re: Textfile in DB einlesen
 
hallo,

meine textdatei ist duch ein ; getrennt wie kann ich diese jetzt einlesen und in eine paradox7 tabelle speichern???

Michael80 16. Jun 2004 21:17

Re: Textfile in DB einlesen
 
Hi Christian,

also ich hab das gleiche problem, bin mittlerweile so weit, das die daten in eine
TStringlist eingelesen werden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var TempList: TStrings;
begin
    Templist := TStringlist.Create;
    with Templist do begin
    loadfromFile('C:\Datei.TXT');
    try
    finally
    end;
    end;
    end;
end.
so jetzt muss die string list nur noch zerpflückt werden nach dem ; ( hab ich noch nicht gefunden)
und dann über SQL (da ich interbase benutze müsst aber mit paradox auch gehen) mit ungefähr diesem Code in die DB geschrieben werdne
Delphi-Quellcode:
insert into TABLE(FELD1, FELD2) VALUES ('wert1','wert2')
hoff ich konnt dir nen ansatz geben.


Gruß

Michael

hacki 16. Jun 2004 22:40

Re: Textfile in DB einlesen
 
Hallo Christian,

bei deinem Problem ist es völlig egal, welche Trennzeichen deine Datensätze trennen. Du möchtest ja ohnehin die gesamte Textdate in die Datenbank schreiben - und nicht die Textdatei nach Datensätzen parsen. Paradox ist da ziemlich easy.

Du richtest Dir zunächst eine Table-Komponente (ich nenne sie "TextTable") ein und verbindest sie mit deiner Zieltabelle. Die Tabelle muß ein Feld (ich nenne es kurzerhand einmal "dbtextfeld") enthalten, in dem der Text zukünftig gespeichert wird. Dieses Feld ist vom Typ BLOB(240,1).

Delphi-Quellcode:
 TextFileDataLines := TStringList.Create;

 TextFileDataLines.LoadFromFile('C:\Datei.TXT');

 try
  TextTable.Edit;
  TextTable.FieldbyName('dbtextfeld').AsString := TextFileDataLines.Text;
  TextTable.Post;
 except
 end;

 TextFileDataLines.Free;

So, das war's

übrigens lesen klappt dann wieder genau so einfach:

Delphi-Quellcode:
 TextFileDataLines := TStringList.Create;

 try
  TextFileDataLines.Text := TextTable.FieldbyName('dbtextfeld').AsString;
 except
 end;

 // verwende hier deine Stringliste, zb. zum parsen...

 TextFileDataLines.Free;

Ich hoffe, ich konnte dir helfen.

Bis denn
hacki


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz