Announcement

Collapse
No announcement yet.

ASCII Datei einlesen und als DBase Datei(*.dbf) wegschreiben?

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

  • ASCII Datei einlesen und als DBase Datei(*.dbf) wegschreiben?

    Hallo ers ma!

    Ich bin noch Anfänger und habe da ein kleines Verständnisproblem. Ich möchte gerne Ascii-Dateien einlesen und als
    DBase-Dateien(*.dbf) wegschreiben, so dass ich diese mit Access oder ein anderes Datenbankprogramm weiterverarbeiten
    kann. Mein Problem beschränkt sich hier auf das wegschreiben der Ascii-Datei.

    Wie muss ich eine Ascii-Datei in C++ wegschreiben, damit ich eine *.dbf Datei erhalte?

    Für Tip's und Anregungen wäre ich Euch sehr dankbar.

    Gruß Mike

  • #2
    Hallo, Du solltest einmal genau sagen, mit welcher Compilerversion Du arbeitest. Falls es Borland C++ 4.x oder 5.x ist: Ist die Borland Database Engine (BDE) dabei
    Günther

    Comment


    • #3
      Hallo Günther!

      Erst mal Danke dafür, dass sich jemand meldet! Ich arbeite mit Borland C++ 3.1, da ist leider keine BDE vorhanden. Ich habe mir dann den Borland C++ Builder 3.0 aufgespielt, dieser enthält die BDE 4.5. Ich kämpfe mich so durch, bisher leider ohne nennenswerte Erfolge, die BDE im Builder ist ziemlich umfangreich. Im Moment blick ich da noch nicht so durch. Weist Du event. eine andere Möglichkeit, die nutzen kann? Kann doch nicht so schwer sein eine ASCII Datei einzulesen und als DBase Datei wegzuschreiben.

      Gruß
      Mik

      Comment


      • #4
        <html>

        <head>
        <meta http-equiv="Content-Type"
        content="text/html; charset=iso-8859-1">
        <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
        <title>Normale Seite ohne Titel</title>
        </head>

        <body bgcolor="#FFFFFF">

        <p>Hallo Mike, ich nehme mal an, daß Du jetzt den Builder zu
        Problemlösung benutzen möchtest. Erstell Dir ein Formular mit
        einer TTable und einer TDataSource Komponente. (Table1,
        DataSource1). Unter DataSet im TDataSource kannst Du schon mal
        Table1 eintragen, alles andere bleibt wie es ist. Dann brauchst
        Du einen Button, um die neue Tabelle zu erzeugen, in die OnClick-Methode
        kommen folgende Zeilen:</p>

        <pre>
        Table1-&gt;Active=false;
        Table1-&gt;DatabaseName=&quot;c:\\temp&quot;;
        Table1-&gt;TableName=&quot;TEST.DBF&quot;;
        Table1-&gt;TableType=ttDBase;
        Table1-&gt;FieldDefs-&gt;Clear();

        // die einzelnen Datenbank-Felder erzeugen
        Table1-&gt;FieldDefs-&gt;Add(&quot;Feldname&quot;,ftString,FELDGROESSE, false);

        Table1-&gt;CreateTable();
        </pre>

        <p>Falls eventuell bestehende Daten erhalten bleiben sollen,
        darfst Du diesen Code darfst Du natürlich nur beim ersten Mal
        ausführen. Nun brauchst Du einen zweiten Button, um die ASCII-Datei
        einzulesen. In der OnClick-Methode ist folgender Code zu finden,
        ich beschränke mich dabei nur auf das &quot;Wegschreiben&quot;
        und hoffe daß der Rest kein Problem für Dich ist... (Andernfalls
        brauche ich genauere Informationen über die ASCII-Datei)</p>

        <pre>
        Table1-&gt;Open(); // Tabelle öffnen

        Table1-&gt;Append(); // Datensatz anhängen

        // die einzelnen Datenbank-Felder zuweisen:
        Table1-&gt;FieldByName(&quot;Feldname&quot-&gt;AsString=wasweisich;

        Table1-&gt;Post(); // Datensatz speichern
        </pre>

        <p>Schau Dir am Besten in der Hilfe zu TTable und TFieldDefs die
        einzelnen Methoden und Eigenschaften an. Zur Kontrolle kannst Du
        ja noch ein TDBgrid auf Deinem Formular plazieren, dessen
        Eigenschaft DataSource Du mit DataSource1 verbindest. Ich hoffe,
        daß ich Dir damit erst einmal helfen konnte - Günther</p>
        </body>
        </html&gt
        Günther

        Comment


        • #5
          Hallo Günther!

          Unglaublich klasse von Dir, hast ja ziemlich viele Infos reingepackt und mir sehr geholfen mit Deinen Tips und Programmauszügen. VIELEN DANK! Ich mach mich gleich am Wochenende dran und probiers aus. Sollte jetzt eigentlich kein Problem mehr für mich sein , d.h. ich bin ganz optimistisch gestimmt. Nochmals besten Dank. Vielleicht kann ich auch mal helfen oder den entscheidenden Tip geben. Wenn mein kleines Progrämmelchen funktioniert, kriegst 'ne Rückmeldung von mir.

          Mik

          Comment


          • #6
            Soweitsoschlecht!?

            Hallo Günther!

            Ich brauch noch mal Deine Hilfe oder einen fachmännischen Tip von Dir!
            Dank Deiner Hilfe legt das Programm die Table1.dbf mit dem String "wasweisich" an, dies wird mir auch in einem DbGrid korrekt angezeigt. Wau, welch Fortschritt! Nun, wenn ich die Table1.dbf mit Access'97 im DBase IV Format importiere bekomme ich die Meldung: "Die externe Tabelle hat nicht das erwartete Format". Import als Textdatei(*.csv) funktioniert und zeigt folgendes an: Zeile 1: |d|||u|DBWINWE0FeldnameC| , Zeile 2: wasweisich. Hast Du eine Idee, was ich falsch mache oder einen Anhaltspunkt für mich?

            Hellau!
            Mik

            Comment


            • #7
              Hallo Mike,

              Es gibt bei dBase unterschiedliche Versionen. Möglicherweise kann Access die Datei deshalb nicht einlesen. Klappts denn mit Excel ? Wenn ich Zeit habe, mach ich mal einen kleinen Versuch. ( Hab Office nur in der Firma, und dort noch weniger Zeit als zuhause )

              Gruß - Günthe
              Günther

              Comment


              • #8
                Hallo Mike,

                Es gelingt mir nicht mit Acess97 eine dBase Datei zu öffnen. Mit Excel97 ist das aber kein Problem.

                Ab BC++Builder 4.0 gibt es die Möglichkeit, Access-Datenbanken zu erzeugen, wenn man den entsprechenden Treiber geladen hat.

                Oder: warum erzeugst Du keine Paradox-Tabelle und bearbeitest die Datenbank mit Deinem Programm oder mit der Datenbankoberfläche ?

                Weitere Möglichkeit: Erzeug eine Textdatei in einem Format, das Acess importieren kann.

                Sowie ich das sehe, muß man erst einmal in Acess eine Datenbank erzeugen. Diese muß natürlich dann schon die entsprechende Struktur haben. Und dann kann man Daten von dBase Version III , IV un V sowie Textdateien oder Exceldateien oder FoxPro Dateien importieren. FoxPro kann man auch mit dem Builder erzeugen. Am Einfachsten ( wenn BCB4 / Acess-Treiber nicht in Frage kommt ) ist aber die Textdatei, denn dazu brauchst Du keine BDE.

                Gruß - Günthe
                Günther

                Comment


                • #9
                  Erst einmal vielen Dank für die Hilfestellung. Ich werde über die verschiedenen Möglichkeiten erst nochmal nachdenken, welche für meine Zwecke die effizientere und vor allem einfachste ist.

                  Gruß
                  Mik

                  Comment


                  • #10
                    Kurzinfo!

                    Grübeln und "Versuch und Irrtum" hat geholfen! Puhh!
                    Hallo Günther!
                    So schnell geb ich ja nicht auf. Halt dich fest, ich habe es mit der Tabellenstruktur ttFoxPro geschafft. Meine Tabellenstruktur läßt sich jetzt einwandfrei in MS-Access'97 importieren und erzeugt mir eine ersklassige *.dbf Datei.

                    Warum damit? Naja, da werde ich auch noch dahinterkommen! Jedenfalls, geht's jetzt erst mal weiter vorwärts.
                    Das Forum ist Klasse!!!! Hätten wir uns hier nicht getroffen, dann wäre ich wahrscheinlich noch nicht soweit.
                    Ich werde jetzt mit dem Forum "up to date" bleiben.

                    Hellau und Kamelle!

                    P.S. Bis zum nächsten Problemchen!?

                    Gruß
                    Mik

                    Comment


                    • #11
                      Na Na ! Hellau und Kamelle ist aber heute nicht mehr...

                      Warum ttFoxPro ? Na klar ! Stammt meines Wissens von MS, und Access muß ja wohl zu den eigenen Produkten abwärtskompatibel sein
                      Günther

                      Comment

                      Working...
                      X