Tabellendaten aus Datenbank auslesen



  • Hallo,

    also ich stehe vor folgendem Problem.

    Ich möchte gerne ein Berechnungsprogramm erstellen, welches mir meine Arbeit um einiges erleichtern soll.

    Die Berechnungen an sich, sind keine Herausforderung, jedoch der Input für diese Berechnungen macht mir Schwierigkeiten.

    Eingabe Werte sind vorgegeben. Normalerweise muss ich dann aus diesen Angaben, in mehr als 30 Tabellen Überschneidungen finden und mit den resultierenden Werten aus den Tabellen weiter rechnen.

    Um das ganze besser zu veranschaulichen ein kleines Beispiel:

    Eingabe-Werte:

    Länge 200m
    Gefälle 3%

    Tabelle:

    -------- 100m --- 150m --- 200m --- 250m

    2% --- 0,05 ------ 0,03 ------ 0,02 ------ 0,01

    3% --- 1,22 ------ 2,34 ------ 2,55 ------ 2,67

    5% --- 2,98 ------ 3,21 ------ 3,45 ------ 3,35

    Nun will ich, dass in der Datenbank die Abfrage mit den Eingangswerten gemacht wird, also 200m und 3% ergeben laut Tabelle den Wert 2,55.

    Ist sowas überhaupt möglich??
    Oder muss ich alle Werte aus den vielen Tabellen in meinen Quellcode mit unzähligen if-Abfragen packen?

    Welche Datenbank ist für solche Aufgaben am besten geeignet?

    Würde mich sehr, über eure Hilfe freuen.

    Lg Kaiza



  • Die Frage hat wohl ganz offensichtlich nichts mit C++ zu tun.

    Jedes SQL fähige RDBMS kann das.



  • Die ganze Berechnung soll mit einem C++ Programm gemacht werden, nur das suchen der Werte soll über die Datenbank und den darin abgelegten Tabellen geschehen.



  • Kaiza25 schrieb:

    Die ganze Berechnung soll mit einem C++ Programm gemacht werden, nur das suchen der Werte soll über die Datenbank und den darin abgelegten Tabellen geschehen.

    Welche Berechnung?
    Ich hab Dich bis eben so verstanden, dass Du 30 Tabellen hast und dort mit Zeile und Spalte (Gefälle und Strecke) den richtigen Wert raussuchst? Da ist doch nix zu berechnen?



  • Also, ich habe meine Anfangswerte, welche ich in mein C++ Programm eingebe, dann sollte das Programm eine Berechnung durchführen, die sehr umfangreich ist.
    Grundlage dieser Berechnung sind zum Teil die Eingabeparameter und eben die Werte aus der Tabelle (ergeben sich aus den Eingabeparametern), welche in einer Datenbank abgespeichert sind (ist eine MS Access-Datei)

    Als Ergebnis bekomme ich dabei rund 50 verschiedene Werte, die dann ausgegeben werden sollen.

    Ich möchte gerne wissen, ob man nun die Tabellen in das Programm einlesen muss, oder ob das Programm auf die Datenbank zugreifen kann und dort den Wert "suchen" kann?



  • In was für einer Datenbank hast Du denn Deine Werte?



  • Die Werte sind in einer Microsoft Access Datei abgelegt, allerdings wäre es kein Problem, alles in eine andere Datenbank zu packen, sofern es für die Berechnung einfacher ist.



  • Muß es unbedingt C++ sein? Die Aufgabe wäre mit C# und dem .NET-Framework (und dessen ADO.NET) recht einfach zu erledigen, s. z.B.
    ADO.NET Tutorial
    Using ADO.NET for beginners (hier wird sogar MS Access benutzt 😉

    In C# gibt es natürlich auch fortgeschrittenere Techniken, um auf Datenbanken zuzugreifen (z.B. mittels ORMs wie EF, Hibernate etc.).



  • Kaiza25 schrieb:

    Die Werte sind in einer Microsoft Access Datei abgelegt, allerdings wäre es kein Problem, alles in eine andere Datenbank zu packen, sofern es für die Berechnung einfacher ist.

    Wenn die Tabellen alle von dem Kaliber sind, wie Dein Beispiel oben. Und die Datenbank auch sonst nicht viel macht, könntest Du die Daten als Text exportieren und einfach in Deiner Applikation einlesen.
    Ein paar Klassen gebastelt und schon fliegt das ganze - ohne Datenbank.

    Evtl. ist aber auch das genaue Gegenteil der Weg: Alles in die Datenbank knallen - inklusive Berechnungen. Ein bisschen SQL und ein paar stored procedures und los geht's - ohne C++. (jedenfalls in der Theorie - vielleicht bin ich hier etwas naiv.)

    Oder wirklich ein Programm, dass via Schnittstelle xyz auf eine Datenbank zugreift. Also ein bisschen von beidem.
    Das scheint mir etwas "overengineered". Jedenfalls nach Deiner bisherigen Beschreibung.

    Ich schätze es kommt darauf an, worauf Du am meisten Lust hast und wie die sonstigen Rahmenbedingungen sind - also das konkrete Problem, Zeit, Geld etc. pp..



  • Naja, also C++ hab ich gewählt, weil ich da schon paar Grundkenntnisse habe, und es für die Berechnung mehr als ausrechend ist. auch die Ausgabe der Werte in ein Excel File ist möglich.

    Nur diese Tabellen bereiten mir Schwierigkeiten. Vor allem soll das Programm auch weiterhin funktionieren, wenn die Tabellen einmal aktualisiert werden, sprich die alte Datenbank durch eine neue ersetzt wird.

    Würde ich eine andere Datenbank als die vorgegeben MS Access Datei nehmen, müsste ich sie halt händisch aktualisieren, wäre auch kein Problem, wenn dadurch die Programmierung leichter wird.

    Wenn die Aufgabe mit C# leichter zu lösen ist, müsste ich mir das halt mal genauer anschauen^^



  • Hallo

    Ich würde dir zwar auch vorschlagen C# zu nutzen, weil es da schon einige Klassen gibt mit denen du sehr einfach auf Access zugreifen kannst.

    Wenn es aber doch C++ sein soll, dann hier ein Tutorial aus der msdn, wie man einen Zugriff via odbc aufbaut: https://msdn.microsoft.com/en-us/library/cc811599.aspx

    Mag Marco



  • Aber wenn schon mit C++, dann DAO oder OLE DB, aber nicht das komplett veraltete (und langsame) ODBC.



  • Danke für die Antworten, hab mir das jetzt mal alles angesehen und werd es demnächst mal testen, falls ich Probleme damit habe, melde ich mich wieder 😉


Anmelden zum Antworten