Konvertieren von Excel und Ascii Daten in verschiedene Formate

      Ok, eine konkrete Frage:

      Ich kann mir

      Quellcode

      1. CreateQueryDef
      eine Abfrage erstellen. Leider bekomme ich nicht raus, wie ich dieser Abfrage nun Spalten hinzufüge, die Typen der Spalten festlege und diese Spalten dann mit dem Recordset verknüpfe.

      Es gibt für die Auflistung Fields eine Methode Append. Mir gelingt es nur nicht, diese Methode korrekt anzuwenden. Vielleicht kann jemand mit einem Tipp helfen??
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Hallo Jens!

      Vielen Dank für Deine Mühe. Ich habe gerade die Formatierung der Zeitangabe und die Formatierung des Verfallsdatums eingefügt. Keine Meisterleistung, musste ja nur die bestehende Zeille kopieren und die Spaltennamen einsetzen.

      Deinen Code werde ich mir ansehen und ich denke auch schnell verstehen. Habe mir vorhin ein VBA in Access Buch gekauft. Ich bin je begeistert, wie einfach es letztendlich doch ist.

      Mein Weg sieht aber so aus:

      Nach dem verketten der Spalten Datum und Zeit und Verfall, werde ich eine neue Abfrage erzeugen, die nur die benötigten Spalten:

      Verfall;Datum;Zeit;Tick;Volume;Typ

      enthält.

      Die nächste Aufgabe besteht in der Selektion der einzelnen Kontrakte. Ich denke das bekomme ich hin.

      Ich danke Dir zunächst für Deine Mühe und auch den anderen hier, die geholfen haben.

      Ich stehe natürlich gerne für Equilla Fragen zur Verfügung!
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Hallo Rene,

      freut mich, daß es funktioniert.
      Ich habe dir noch eine Anregung gemacht, wie du die Ausgabe mit einem einzigen VBA-Programm erledigen kannst.
      Ich denke, du kannst dir die Ausgabezeilen selbst entsprechend modifizieren.

      Quellcode

      1. Sub GenOutput()
      2. 'erzeugt csv-Datei aus Tabelle Datenimport
      3. Dim db As Database, rs As Recordset
      4. Set db = CurrentDb
      5. Set rs = db.OpenRecordset("Datenimport2")
      6. Open "e:\temp\eurex.csv" For Output As #1
      7. rs.MoveFirst
      8. Do Until rs.EOF = True
      9. 'z.B. ohne Gänsefüsschen
      10. Print #1, rs!Product_ID + ";" + rs!Call_Put_Flag + ";";
      11. Print #1, Format(rs!Day, "00") + "/" + Format(rs!Month, "00") + "/" + Format(rs!Year, "0000")
      12. 'oder mit (für Ausgabe eines " immer "" schreiben!)
      13. Print #1, """" + rs!Product_ID + """;""" + rs!Call_Put_Flag + """;""";
      14. Print #1, Format(rs!Day, "00") + "/" + Format(rs!Month, "00") + "/" + Format(rs!Year, "0000") + """"
      15. rs.MoveNext
      16. Loop
      17. Close #1
      18. End Sub


      Viel Erfolg!

      Gruss, Jens
      Hallo Jens!

      Es war eine Active X Library aktiviert. Diesen verweis habe ich entfernt. Außerdem habe ich die Zeile geändert und siehe da, es kommt keine Fehlermeldung. Access arbeitet jetzt angestrengt. Ich kann leider noch kein Ergebnis sehen, also abwarten sind ja 2,5 Mio Zeilen.

      Ich habe gestern auch noch einen extrem unständlichen Weg gefunden:

      die einzelnen Spalten per Abfragen gruppieren, diese exportieren als textdatei, dann die Semikolons durch Schrägstrich fürs Datum, und Doppelpunkt für Zeit ersetzen, wieder importieren etc.

      Am Ende steht auch das richtige Format, ist aber wirkolich extrem umständlich
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Es muß m.E. an diesen verflixten Verweisen liegen - ist doch manchmal zum Mäuse melken....
      Es sollte kein Verweis der Art "Microsoft ActiveX Data Objects x.x Library" aktiviert sein.
      Ansonsten, setze mal in der Dim-Anweisung ausdrücklich DAO dazu:

      Quellcode

      1. Dim db As DAO.Database, rs As DAO.Recordset


      ... muß doch möglich sein !!

      Gruss, Jens
      Hallo Jens!

      Freut mich, dass meine Arbeit Dir auch etwas gebracht hat! :)
      So bleibt das ganze keine Einbahnstraße.

      Ich bin leider nicht weiter gekommen. Die entsprechenden Bibliotheken sind alle markiert. Ich verwende Access 2002 version 10 ist das glaube ich.

      Nun bekomme ich allerdings einen anderen Fehler als vorher:

      "Methode oder Datenbankobjekt nicht gefunden" und markiert wird die Zeile:

      Quellcode

      1. rs.Edit


      Gestern habe ich mehrere Stunden mit Access getestet und auch einen scheinbaren Weg gefunden:

      Ich habe Abfrage erstellt, die jeweils die Spalten vom Datum, der Zeit, dem Kurs, dem Volumen, dem Verfallsmonat und dem Tradetyp erfassen. Sind also mehrere Abfragen. DIese habe ich als einzelne Textdatein exportiert und dabei die Verknüpfung per Trennzeichen eingefügt. Fürs Datum habe ich das Semikolon in einem Texteditir gegen einen Schrägstrich getauscht, Access hat den Strich leider nicht als Trennzeichen angenommen. Für die Zeit habe ich das Semikolon auf gleiche Weise gegen Doppelpunkt getauscht, weil auch hier Access den Doppelpunkt nicht angenommen hat. Dann habe ich die einzelnen Textdateién in einzelne Tabellen geladen und diese per Kreuzabfrage in einer Tabelle zusammengefasst. Nun war das Format bereits perfekt und musste nur noch als einzelne Textdatei exportiert werden. Leider musste ich feststellen, dass irgendwo in diesem Prozess die Anordung der zeilen durcheinandergekommen ist. Die erste Zeile enthielt pülötzlich bei Zeit 11:04:10, obwohl der erste Tick meiner Datenbank um 8:04:05 aufgezeichnet wurde. Da ich die Funktion Sortieren nicht verwendet habe, ist mir rätselhaft, warum die Zeilenordnung verändert wurde.
      Mir scheint der Weg zwar umständlich, jedoch für den Anfang, bis die VB Probleme gelöst sind, gangbar. Ich muss also nur herausfinden, wo mir die Zeilenordnung zerwürfelt wurde!!!
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Hallo Rene,

      Zu deiner 1.Frage:
      Du brauchst die Tabelle "Datenimport" nicht zu öffnen. Also nur die Datenbank laden, dann gleich auf "Ext. daten - importieren". In dem folgenden Dialog kommt kurz vor Schluß die Frage: "in neue oder bestehende Tabelle importieren?", hier erst wählst du die Tabelle "Datenimport" aus.

      Zum Fehler 13:
      Ich bin mir nicht sicher, zum richtigen Access-Profi fehlt halt noch einiges...
      Habe aber folgende Vermutung: Access verwendet seit A2000 standardmässig die Datenzugriffstechnologie ADO. Ich war bislang zu faul, mich darauf umzustellen und arbeite weiterhin mit der DAO-Technologie - sonst könnte ich all meine Access-Programme umstellen. Damit das mit der alten DAO funktioniert, müssen die Verweise richtig gesetzt sein. Bitte sieh mal nach, ob im es Visual Basic Editor unter "Extras/Verweise" so aussieht wie auf dem Bild. Wenn nicht, ändere mal die Einstellungen entsprechend und probiere nochmal, die Routine zu starten. Geht’s jetzt?

      btw: mit welcher Access-Version arbeitest du?

      Aprospos TSe: da hab ich schon viel von dir gelernt - ich staune immer wieder, wo du die ganze Zeit hernimmst, diese ganzen tollen Artikel zu verfassen!

      Gruss, Jens
      Bilder
      • Verweise.gif

        41,88 kB, 617×465, 528 mal angesehen

      Quellcode

      1. Set rs = db.OpenRecordset("Datenimport")


      In dieser Zeile wird der Laufzeitfehler 13 gemeldet. Leider kann ich der entsprechenden Hilfedatei nichts entnehmen, was mir weiterhilft..

      mein Gott, ich komme mir wie ein totaler Computerneuling vor.

      So ungefähr müssen sich diese armen frischen TSe Anwender fühlen, wenn Sie das erste mal vor dem Programm sitzen!
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Hallo tradie!

      Ich sitze nun schon einige Zeit an Access und beschäftige mich mit der Hilfedatei. Ich habe ein merkwürdiges Problem:

      Ich lade Deine erstellte Tabelle "Datenimport", diese ist ja leer. Nun klicke ich in die erste leere Zeile und wähle aus dem Menü Datei->externe Daten - Importieren

      Jetzt öffnet sich der Assistent und ich lade die Importspezifikationen. Wenn dann der Importvorgang abgeschlossen ist, habe ich eine zweite Tabelle mit dem Dateinamen der importierten Eurex Datei. Wieso werden denn die Daten nicht in die erste Tabelle importiert??

      Ich lese gerade einige Tutorials über VB, werde also auf diesem Weg bleiben!
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Hallo Rene,

      Ich schlage vor, das mit einem kleinen VBA-Programm zu erledigen.
      Beispiel:
      Du erweiterst die Tabelle "Datenimport" um ein neues Feld, z.B. "Datum" (Text, 10).
      Dann legst du ein neues Modul an und gibst dort folgenden Code ein:

      Quellcode

      1. Sub CreateDate()
      2. Dim db As Database, rs As Recordset
      3. Set db = CurrentDb
      4. Set rs = db.OpenRecordset("Datenimport")
      5. rs.MoveFirst
      6. Do Until rs.EOF = True
      7. rs.Edit
      8. rs!Datum = Format(rs!Day, "00") + "/" + Format(rs!Month, "00") + "/" + Format(rs!Year, "0000")
      9. rs.Update
      10. rs.MoveNext
      11. Loop
      12. End Sub


      Die Funktion Format(...,"00") liefert die Werte mit Vornullen, wenn du das nicht brauchst, reicht auch (..., "0") aus. Ausführen der Routine mit F5, debuggen mit F8.
      Bitte kontrolliere im Visual Basic Editor unter "Extras, Verweise", dass der Punkt "Microsoft DAO 3.6 Object Library" angekreuzt ist.

      Viel Erfolg!

      Gruss, Jens
      Hallo Kollegen!

      Inzwischen hat sich ein netter Mensch gefunden, der mir Teile von seinen selbst entwickelten Programmen abgibt.

      Aber parallel dazu möchte ich doch mit Acess weiterarbeiten.

      Ich habe es per Abfrage jetzt schon geschafft, einzelne Verfallsmonate aus den Tabellen zu isolieren. Nun müssen die Spalten für Datum und Zeit zusammen geführt werden.
      Ich habe bereits begonnen, mich ein wenig mit dieser SQL Sache zu beschäftigen. Wahrscheinlich komme ich aber schneller ans Ziel, wenn ich eine Frage stelle:

      Welche Befehle muss ich verwenden wenn ich drei Spalten in eine zusmmanlegen möchte, durch Schrägstrich getrenn??
      8) --- sonnige Grüße -> von Rene --- 8)

      Rene Rose online
      Jetzt habe ich nochmal nachgebessert.
      Du findest jetzt eine Tabelle "Datenimport" in der .mdb-Datei.
      Hier habe ich die Felddefinitionen so eingestellt, dass sie möglichst wenig Speicherplatz benötigen, aber noch gerade für deine Daten ausreichen.
      Bitte beim Importieren bitte vorgehen wie neulich beschrieben, zum Schluss aber angeben, die importierten Daten der Tabelle "Datenimport" hinzuzufügen.
      Ich habe mir mal eine Testdatei mit 2,5 Mio Datensätzen erstellt. Sie war in ca. 2min importiert, die .mdb-datei hatte dann eine Grösse von ca. 270MB. Ging einwandfrei.
      Wenn deine Daten erst mal im Access drin sind, sehen wir weiter, wie wir sie wieder rauskriegen - aber das sollte kein Problem sein.

      Gruss, Jens
      Dateien
      • AsciiImport.zip

        (18,59 kB, 198 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tradie“ ()

      Hallo Rene,

      Ich habe mal anhand der Beispieldaten von der Eurex eine A2000-Datenbank erstellt mit einer entsprechenden Datenimportspezifikation.

      Vorgehensweise:
      Du gehst auf "Tabelle importieren" (btw: dass du Originaldaten nicht ändern konntest, lag vermutlich daran, dass du die Daten verknüpft, nicht importiert hattest), wählst deine Datei aus und gehst dann im Importdialog auf "Weitere...". Hier kannst du unter "Spezifikationen" die von mir erstellte "Sample File Eurex Importspez.." laden. Dann noch ein paar mal weiter klicken, das wars.
      Ich bin mal gespannt, ob es klappt.

      ... und jetzt werde ich mal die traumhafte Sonne geniessen gehen, meine Frau wartet schon ...

      Gruss, Jens
      Dateien
      • AsciiImport.zip

        (27,26 kB, 190 mal heruntergeladen, zuletzt: )