Announcement

Collapse
No announcement yet.

Übernahme aus externer ADODB und manipupieren der Daten

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

  • Übernahme aus externer ADODB und manipupieren der Daten

    Zu aller erst einmal... Halllo, bin neu hier

    Ich bin ein ziemlicher Neuling in VBA (seit etwa 2 Monaten erst). Habe zwar in den 80ern viel in Basic und auch Assembler programmiert, aber das noch auf dem guten alten C-64..... Also ein gewisses Grundverständis ist vorhanden, aber Basic hat sich ja doch, na sagen wir mal sehr erweitert

    Mein Problem ist nun Folgendes:

    Ich baue gerade eine kleine Haushaltsbüchführung für meinen alten Herren. Das manuelle Buchen klappt schon ganz prima. Nun ergeben sich für mich aber einge Dinge, an denen ich mir gerade etwas die Zähne ausbeiße.

    1. Da wir auf den Philippinen Leben und mein Dad mit insgesamt 3 Währungen zu dealen hat (EUR, PHP und USD), möchte ich jeweils die aktuellen Währungskurse von der EZB übernehmen. Der Download der XML Datei von Access aus klappt auch schon. Die EZB bietet 2 XML Dateien an. Einmal die mit den aktuellen Tageskursen für den Tag und eine mit den Kursen der letzten 90 Tage. Da das Internet hier nicht immer verfügbar ist, benötige ich Kurse der letzten 90 Tage, da ich ansonsten Löcher in meinem Kursverlauf bekommen könnte. Ich möchte also eine Tabelle Wechselkurse führen die die Wechselkurse kummuliert aufnimmt. Ich stelle mir nun vor, die XML in eine temporäre Tabelle zu importieren, diese dann nach Kursen zu durchsuchen, die in meiner Kurstabelle fehlen und dann nur diese Kurse an meine Kurstabelle anzuhängen. Danach die temporäre Tabelle wieder löschen. Ist diese Vorgehensweise sinnvoll oder hat jemand vielleicht auch noch andere Ideen?

    2. Zugriff auf Daten aus der Bankinganwendung "Alf Banco". Alf Banco schreibt beim Beenden jeweils eine ADODB. Damit sollte, wenn ich richtig einschätze, der Zugriff gein großes Problem sein. Aber die DB is voll geballert mit Daten die ich nicht benötige. Deshalb würde ich auch gerne eine eigene Tabelle führen und die Bankbewegungen kummulieren. Auch das habe ich noch nicht gelöst, auch wenn es vermutlich eifach ist Das wirkliche Problem bei der Datenübernahme ist, dass die Tagesdaten in der Form "20161020" angeliefert werden. Da ich aber im gesamten Rest meiner DB mit dem üblichen deutschen Format arbeite, möchte ich diese Daten bei der Übernahme umformatieren. Meine Idee war jetzt, jedes Datum in einer Schleife auf eine Variable zu lesen und mit LEFT, MID und RIGHT zu zerlegen um es dann neu zusammen zu bauen. Gibt es eine kürzere bessere Variante?

    Für Ideen und ggf. das eine oder andere Code Sniplet wäre ich sehr dankbar.

    Grüße aus den wunderschönen Philippinen

    Markus

  • defo
    replied
    Originally posted by Markussi View Post
    Ich habe schon gelesen, dass es die Möglichkeit gibt das in SQL zu machen. Wie gesagt, ich muss sicher sicher stellen dass mein Boss (also mein alter Herr) einfach in der Lage ist ABfragen zu erstellen. Und zwar mit dem Abfrageassistent. Insofern sehe ich keine ALternative zum Ändern des Datums bei der Datenübernahme.
    Gut also wo ist das Problem mit einer Abfrage (SQL) ein Datum zu konvertieren?
    Die Funktionen, die dazu nötig sind, unterscheiden sich vermutlich nicht sehr von den oben von Dir genannten, mid, left, substr. Insbesondere, da es MS Access ist. Der SQL Ausdruck dürfte sich nicht sonderlich von einem VBA Ausdruck unterscheiden. Evtl. besitzt Access aber auch eine Funktion zur Konvertierung, der man das Quellformamt als Maske mitgeben kann.

    So oder so ergeben sich dann folgende Möglichkeiten:
    - Import der Daten per SQL in eigene Tabelle oder
    - unkonvertierte Übernahme, Datum und vielleicht andere Infos werden in weiterer Abfrageschicht bei Verwendung on the fligh angepasst.
    (Der Abfrageasstent geht also nicht gegen eine importierte Tabelle, sondern gegen eine Abfrage, die die Aufbereitung vornimmt.)
    - Das könnte man noch auf die Spitze treiben und diese Abfrage nicht auf eine importierte Zwischenmenge aufsetzen, sondern direkt auf die externen ADODB Daten, ggf. spart das etwas Datenschieberei.

    Leave a comment:


  • Christian Marquardt
    replied
    zu 1.
    Ok...und was ändert das?

    zu 2.
    Dann mach das halt... du hast nach Alternativen gefragt....
    Zuletzt editiert von Christian Marquardt; 30.10.2016, 08:52.

    Leave a comment:


  • Markussi
    replied
    Hi Christian.

    Zu 1.
    Ich benötige keine Aktienkurse, sondern Währungskurse.

    Zu 2.
    Ich habe schon gelesen, dass es die Möglichkeit gibt das in SQL zu machen. Wie gesagt, ich muss sicher sicher stellen dass mein Boss (also mein alter Herr) einfach in der Lage ist ABfragen zu erstellen. Und zwar mit dem Abfrageassistent. Insofern sehe ich keine ALternative zum Ändern des Datums bei der Datenübernahme.

    Leave a comment:


  • Christian Marquardt
    replied
    zu 1.
    Es gibt eine Tabelle mit den Aktienkursen (ID, DATUM, WKN, KURS)
    Für die Auswertungen wird stets der neuste Kurs genutzt.

    Beim Start der Anwendung wird geprüft, ob neue Kurse geholt werden können (Internetverbindung)
    Wenn ja, werden Kurse älter als 90 Tage gelöscht.
    Wenn ja, werden die neuen Kurse (nicht älter als 90 Tage) geholt und in die Tabelle geschrieben. Ggf. werden auch schon vorhandene Kurse überschrieben
    Wenn nein startet die Anwendung und arbeitet mit den vorhandenen Daten.

    zu 2.
    Es ist eine Alternative, mehr nicht. Und so lang wird der nun auch nicht

    Leave a comment:


  • Markussi
    replied
    Zu 1.
    Das klingt ziemlich cool! Jetzt muss ich aber ganz ehrlich sagen dass ich schon mit Import der XML erhebliche Probleme.... Ich bin halt leider echt ein Novice, sorry. Daher vielleicht mein etwas kompliziertes Gedankengerüst Wie bekomme ich denn eine XML sauber rüber und das auch noch so wie von Dir genannt? (Sorry, ich schäme mich fast etwas.)

    Zu 2.
    Ich muss doch das übergebene Datum auf jeden Fall zerlegen, in umgekehrter Reihenfolge wieder zusammen setzen und dabei die Punkte einfügen. Würde aber doch bedeuten, dass ich da eine ellenlange SQL schreiben muss. Oder verstehe ich etwas falsch?

    Leave a comment:


  • Christian Marquardt
    replied
    zu 1.
    Ich sehe da nichts, was es erforderlich macht mehrere Tabellen zu führen. Und nur um deine ursprüngliche Frage zu beantworten:
    Nein, das ist nicht sinnvoll
    Anwendungen aktualisieren/mergen/update-insert Datensätze und führen nicht extra Tabellen mit.

    zu 2.
    Das ist kein VBA Problem, sondern wenn dann ein SQL-Problem. Ene Konvertierung erfolgt im SQL-Statement.

    Leave a comment:


  • Markussi
    replied
    Hallo Christian,

    erstmal danke für Deine Antwort.

    Zu 1.
    Die Kurse müssen alle zu jedem verfügbaren Tag, also natürlich nicht an Wochenden weil kein Handel) mitgeführt werden. Weil Bilanziert wird und dafür Kursverluste bzw. Gewinne ermittelt werden und auf einem entsprechenden BH-Konto ermittelt werden. Das Problem mit der XML die nur den aktuellen Tag enthält ist, dass es hier passieren kann, dass ich dann einen Tag oder auch mehr verliere. Wir sind hier in der philippinischen Provinz (Aklan, in der Nähe von Boracay). Die Infrastruktur hier ist weit weg von den Standards in Deutschland. Wir haben laufen Stromausfälle (was für uns leider auch trotz Generators Verlust des Internets bedeutet). Auch die ISPs hier fahren nicht im Ansatz die Zuverlässigkeit die man in Deutschland erwarten darf. Ein gutes Beispiel ist der Taifun "Hayan", der uns hier in 2013 auch voll erwischt hat. 45 Tage garnichts mehr keinen Strom, kein Fernsehen, kein Internet, etc. Daher muss ich sicher stellen, dass die Kurse nachgezogen werden können.

    Zu 2.

    Ich schreibe die Basisanwendung. Allerdings soll mein Vater später in der Lage sein zumindest Auswertungen selber zu schreiben. Wenn ich ihm aber ein VBA Problem aufbürde, geht das ins Auge. Er hat schlicht keinen Bock sich mit VBA zu beschäftigen Und es ist ja nicht nötig, wenn ich es bei der Übernahme schon regeln kann.

    LG aus Kalibo

    Markus

    Leave a comment:


  • Christian Marquardt
    replied
    Zu 1.
    Warum 2 Tabellen (aktuell und 90 Tage)?
    Warum nicht eine Tabelle, die zu jedem Tag den Kurs enthält. Per SQL wird halt der neuste Kurs genutzt (für Berechnungen usw.). Aktualisiert werden immer nur Tageskurse die noch fehlen bzw. der neuste Kurs

    Zu 2.
    Das "falsche" Format in die DB schreiben und beim auslesen formatieren
    Zuletzt editiert von Christian Marquardt; 28.10.2016, 07:34.

    Leave a comment:

Working...
X