Announcement

Collapse
No announcement yet.

Datenimport in dBase-Datei von txt-Datei

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenimport in dBase-Datei von txt-Datei

    Hallo zusammen,
    Ich brauche eine kleine Hilfe und zwar möchte ich eine Datei, deren Felder mit ; getrennt sind und die erste Zeile die Feldnamen darstellen in eine dBase Datei einspielen. Es ist leider keine einmalige Sache der Anwender sollte das möglichst einfach bewerkstelligen können. Gibt es vielleicht Tools oder Komponenten dafür? Oder muss ich das programmieren? Ich bin ein Neuling in Delphi habe aber schon viel mit Visual Basic gemacht.
    Ich hoffe es kann mir jemand dabei helfen.
    Danke schon mal im vorraus.
    Jürgen

  • #2
    Hallo,

    in diesem würde ich auf den <b>ODBC-Treiber für Textdateien</b> zurückgreifen. Wenn man dann einen eigenen ODBC-DSN anlegt, kann man im dortigen Konfigurationsdialog den Zeichensatz sowie die Feldtrennzeichen festlegen. Das eigene Delphi-Programm greift dann auf diese Textdatei als Tabelle zu.

    Alternativ zum ODBC-DSN kann der Standard-Treiber der BDE jedoch auch mit Textdateien umgehen (siehe Delphi-Hilfe zu TTable.TableType). Allerdings muss man dann als Entwickler die Schema-Datei selbst definieren

    Comment


    • #3
      Hallo,
      habe ich schon gemacht aber das Problem ist, das sich die Feldnamen ändern können und ich dem Benutzer nicht zumuten kann eine neue DSN anzulegen. Genauer: Ich habe Preislisten TXT-Dateien von versch. Lieferanten, die alle unterschiedlich sind. Ich könnte schon die Dateien einlesen und Zeilenweise analysieren nach Feldbezeichnung, Daten, Preise usw... nur habe ich das so noch nicht gemacht. Ich bräuchte hier nur einen Tipp wie man sowas am besten anfängt! Ich möchte auch die BDE dabei nicht benutzen, da ich auf die fertige Datenbank mit ADO zugreifen möchte. Ich hatte gedacht bevor ich das Rad zweimal erfinde gibt es vielleicht schon eine kleine Routine die das erledigt

      Comment


      • #4
        Hallo Jürgen,

        ich habe mir bei Imports immer mit dem direkten Zugriff auf das txt-File beholfen. Hier ein kleines Bsp.:<br>
        <br>
        function OpenTxtFile(var AFile: TextFile; const FName: string): Boolean;<br>
        begin<br>
        try<br>
        AssignFile(AFile, FName);<br>
        Reset(AFile);<br>
        Result := True;<br>
        except<br>
        Result := False;<br>
        end;<br>
        end;<br>
        <br>
        procedure CloseTxtFile(AFile: TextFile);<br>
        begin<br>
        try<br>
        CloseFile(AFile);<br>
        except end;<br>
        end;<br>
        <br>
        function ReadTxtFile(AFile: TextFile; var SL: TStringList): Boolean;<br>
        var<br>
        AString: string;<br>
        begin<br>
        try<br>
        ReadLn(AFile, AString);<br>
        Result := True;<br>
        except<br>
        Result := False;<br>
        end;<br>
        if Result then<br>
        begin<br>
        SL := TStringList.Create;<br>
        AString := StringReplace(AString, ';', #13, [rfReplaceAll]);<br>
        SL.SetText(@AString[1]);<br>
        end;<br>
        end;<br>
        <br>
        procedure Import;<br>
        var<br>
        FFile: TextFile; <br>
        SHeader: TStringList;<br>
        SL: TStringList;<br>
        I: Integer;<br>
        begin<br>
        if OpenTxtFile(FFile, 'kompletter Dateiname') then<br>
        begin<br>
        ReadTxtFile(FFile, SHeader);<br>
        while ReadTxtFile(FFile, SL) do<br>
        begin<br>
        Table1.Append; <br>
        For I := 0 to SHeader.Items.Count - 1 do<br>
        begin<br>
        Table1.FieldByName(SHeader[I]).AsString := SL[I];<br>
        end;<br>
        Table1.Post;<br>
        SL.Free;<br>
        end;<br>
        end;<br>
        CloseTxtFile(FFile);
        end;<br>

        Ich habe aus meinem Quelltext ein bißchen was rausgekürzt (ist in der Fassung also nicht getestet - müßte aber prinzipiell funktionieren.;-)

        Gruß Fal
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Hallo,

          wenn ADO verwendet werden soll, gibt es hier überhaupt kein Problem, da ADO direkt Textdateien als Tabellen einlesen kann:
          <pre>
          ADOConnImport.Properties['Extended Properties'].Value := 'Text';
          ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
          ADOTableImport.TableName := 'Export.txt';
          </pre&gt

          Comment


          • #6
            Hallo,

            ich danke Euch, Eure Beiträge helfen mir sehr viel weiter...

            Vielen Dank

            Jürge

            Comment

            Working...
            X