Auswahlfeld in Calc an Abfrage in Base übergeben

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Klausi
Beiträge: 7
Registriert: Di, 17.02.2009 23:14

Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Klausi »

Hallo zusammen,

ich bin ganz frisch hier angemeldet und schreibe hier meinen ersten Beitrag. Genau so frisch bin ich in Sachen Base :D
Nur in der Arbeit habe ich gelegentlich ein bisschen mit Access zu tun, aber nix großes. Ich selbst bin 35 und Maschinenbautechniker. Programmieren kann ich gar nicht.

Ich habe jetzt das Projekt "Solarsteuerung" in Angriff genommen und bin gleich auf ein paar Fragen gestoßen. Aber kurz zum "Ablauf"

Ein Programm ließt meinen Heizungsregler jede Minute aus und schreibt die Daten in eine Textdatei. Über Calc importiere ich die Datensätze in eine Base DB. Dort habe ich eine Abfrage erstellt, die immer die gestrigen Datensätze herausfiltert und nach Uhrzeit sortiert. Dazu muß ich sagen, daß der "Timestamp" schon aus der Textdatei kommt und so: TT.MM.JJJJ HH:MM:SS aufgebaut ist.
Die Abfragedaten übergebe ich wieder an Calc und erstelle dort die Temperaturdiagramme. Das klappt schon wunderbar.

Jetzt möchte ich aber nicht nur die Diagramme von gestern sehen, sondern möchte in Calc ein Feld haben, in das ich ein Datum eingeben kann, oder wo über eine Auswahl ein Datum ausgewählt werden kann. Das soll dann eine Abfrage in Base dazu veranlassen die passenden Datensätze an Calc zu schicken. :D Hört sich doch ganz schön kompliziert an :-)

Kann das funktionieren?

Sollte das Thema schon mal dran gewesen sein tuts auch ein Link drauf. Ich lese seit ein paar Tagen hier im Forum blos dieses Problem konnte ich noch nicht lösen.

Außerdem wollte ich noch Fragen, ob die Diagramme, wenn sie einmal erstellt wurden auch in Base gespeichert werden können. Über die Bild Funktion hab ichs schon probiert aber die Qualität ist zu schlecht. Ideal wäre natürlich eine gewisse Automatik aber soweit bin ich noch lange nicht.

machts gut

Jochen
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Barlee »

Hallo Klausi,

willkommen im Forum!
Du importierst Daten in eine Base Datenbank; also in eine Tabelle.

Wie wäre es, wenn Du diese Tabelle als Datenbasis für den Datenpiloten nimmst? (in Calc "Daten">>"Datenpilot")
Du könntest dann die Spalte mit dem Datum als Seitenfeld definieren. Das ermöglicht Dir, dieses dann per Dropdown-Feld auszuwählen.
Datenpilot.jpg
Datenpilot.jpg (37.63 KiB) 3239 mal betrachtet
Auf Grundlage der Werte des Datenpiloten erstellst Du nun ein Diagramm. Wähle hierzu eine Zelle innerhalb des Datenpiloten und anschließend "Einfügen">>"Diagramm". Abhängig vom ausgewählten Datum sollte sich das Diagramm aktualisieren.

Vielleicht ja ein möglicher Weg für Dein Vorhaben?

Gruß Barlee
Klausi
Beiträge: 7
Registriert: Di, 17.02.2009 23:14

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Klausi »

Hallo Barlee,

Ich habs mit dem Datenpilot probiert. Ich konnte die Tabelle auswählen und auch das Datumsfeld als Seitenfeld definieren. Nach ca. 10 Min. warten waren die Daten dann da. Leider ist in dem Feld Datum nicht nur das Datum, sondern auch die Zeit mit drin. Daher taucht jetzt jeder Datensatz einzeln in der Dropdown Liste auf.

Außerdem wird bei deinem Weg die ganze Tabelle in Calc geladen. Ich hab jetzt 5 Tage in der DB drin und das sind schon 7200 Datensätze. Ich fürchte das wird bald zu groß für Calc.

Ich behelfe mir jetzt Damit in einer Abfrage die Datensätze eines Tages mit dem Kriterium: >=#08.02.2009 und <#09.02.2009" zu filtern. Die Daten der Abfrage werden dann an Calc übergeben. Das ist natürlich nicht sehr komfortabel.

Gibt es evtl. die Möglichkeit das Datenfeld mit dem Timestamp aufzutrennen. in ein Datenfeld mit dem Datum (alleine) und ein Datenfeld mit der Uhrzeit? Dann könnte dein Vorschlag vielleicht doch funktionieren.

Danke für deine Hilfe

mfG

Jochen
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Barlee »

Hallo Klausi,
Gibt es evtl. die Möglichkeit das Datenfeld mit dem Timestamp aufzutrennen. in ein Datenfeld mit dem Datum (alleine) und ein Datenfeld mit der Uhrzeit?
Ja! Du erstellst eine Abfrage. In dieser trennst Du Datum und Zeit heraus und benutzt sie danach an Stelle der Tabelle als Datengrundlage für den Datenpiloten.

Annahme: Spalte mit dem Timestamp heißt "Datum". Dann kannst Du wie folgt vorgehen. WICHTIG!
"SQL Kommando direkt ausführen" muss aktiviert sein. Tabellennamen, Spaltenbezeichner und Aliase in Anführungsstriche setzen.

Code: Alles auswählen

SELECT
CAST(SUBSTRING("Datum" FROM 1 FOR 10)  AS 'DATE') AS "Datum_extract",
CAST(SUBSTRING("Datum" FROM 12 FOR 8)  AS 'TIME') AS "Zeit_extract"
FROM
"[Deine_Tabelle]"
Ich behelfe mir jetzt Damit in einer Abfrage die Datensätze eines Tages mit dem Kriterium: >=#08.02.2009 und <#09.02.2009"
Änderst Du jedesmal manuell diese Datumsangaben?
Dann würde sich evtl. eine Erweiterung Deiner Abfrage anbieten, indem Du die Anzahl an Tagen definierst, die rückwirkend betrachtet werden sollen. Im Beispiel 7 Tage.

Code: Alles auswählen

.. where DATEDIFF('dd',"Datum", CURRENT_DATE) <= 7
Gruß Barlee
Klausi
Beiträge: 7
Registriert: Di, 17.02.2009 23:14

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Klausi »

Hallo Barlee,

ich hab deinen Code in eine Abfrage eingegeben, die ich mit "Abfrage in SQL Ansicht erstellen" gestartet habe, Das Feld "SQL direkt ausführen" hab ich auch aktiviert. Leider kommt eine Fehlermeldung.
Fehlermeldung SQL.jpg
Fehlermeldung SQL.jpg (72.76 KiB) 3177 mal betrachtet
Jetzt habe ich das Datum/Zeit Feld mit "Timestamp" als Typ gesetzt, soll ich das evtl. ändern?

Das mit DATEDIFF kenne ich schon, damit lasse ich immer das Diagramm für "gestern" und "letzte 7 Tage" erstellen. Jetzt gings mir darum gezielt ein bestimmtes Datum aufzurufen.

mfG

Klausi
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Barlee »

Hallo Klausi,

der Feldtyp Datum/Zeit [TIMESTAMP] ist schon in Ordnung.
Die Fehlermeldung kommt von der Typumwandlung des Strings in ein Datum, also durch das CAST. In einer erstellten Testtabelle mit diesem Feldtypen sind die CAST Anweisungen problemlos ausführbar. Ich nehme daher an, dass das TIMESTAMP-Feld ein "abweichendes" Format hat.
Was wird zurückgegeben, wenn Du folgendes eingibst?

Code: Alles auswählen

SELECT
SUBSTRING("Datum" FROM 1 FOR 10)  AS "Datum_extract",
SUBSTRING("Datum" FROM 12 FOR 8) AS "Zeit_extract"
FROM
"[Deine_Tabelle]"
Gruß Barlee
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von berndkli »

Hallo Jochen

Wenn es Dir in erster Linie um die Diagrammdarstellung geht, bist Du, glaube ich, mit Calc alleine besser beraten.
Ich bin in dem angehängten Beispiel davon ausgegangen, dass, wenn jede Minute ein Messwert genommen wird, man die Zeitintervalle (den Timestamp)einfach als feste Spalte hat und lediglich die Temperatur täglich in eine weitere Spalte kopiert.
Mit SVERWEIS() kann man sich dann auf einem anderen Tabellenblatt die Werte für jeden Tag anzeigen lasssen und einem Diagramm zuweisen.
Meine Testdatei simulierte 4 Monate, 1440 Messungen/Tag und lief flüssig, war aber zum hochladen zu gross; deswegen die abgespeckte.

Gruss Bernd
Dateianhänge
Minutentakt2.ods
(49.21 KiB) 56-mal heruntergeladen
Klausi
Beiträge: 7
Registriert: Di, 17.02.2009 23:14

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Klausi »

Barlee hat geschrieben: Was wird zurückgegeben, wenn Du folgendes eingibst?

Code: Alles auswählen

SELECT
SUBSTRING("Datum" FROM 1 FOR 10)  AS "Datum_extract",
SUBSTRING("Datum" FROM 12 FOR 8) AS "Zeit_extract"
FROM
"[Deine_Tabelle]"
Gruß Barlee
Hallo Barlee,

die Teilung in Datum und Zeit mit den SUBSTRINGs funktioniert. Ich habe eine Abfrage erstellt, die das erledigt. Verknüpfe ich danach allerdings diese Abfrage mit der Abfrage der benötigten Sensoren, dann rechnet Base eine ganze Weile geschätzte 15 Min. Bis dann die Meldung "Out of Memory" kommt. Kann es sein, daß Base die neuen Werte nicht den richtigen Datensätzen zuordnen kann? Ich weiß es nicht.

berndkli hat geschrieben:Wenn es Dir in erster Linie um die Diagrammdarstellung geht, bist Du, glaube ich, mit Calc alleine besser beraten.
Hallo Bernd,

so einfach ist es leider nicht. Ich habe mal eine "Tagesdatei" mit angehängt, die mir das Ausleseprogramm erzeugt. Mit Base, wollte ich diese Daten filtern und dann wiedr an Calc übergeben. Bei Calc wären die Datenmengen glaube ich ziemlich unübersichtlich.

Aber du hast recht, hauptsächlich geht es mir um die Diagramme. Später will ich aber auch noch evtl. Berechnungen über Solarlaufzeiten oder so was machen. Da hab ich momentan aber noch überhaupt keine Peilung wie ich das angehen soll.

Leider bin ich derzeit noch mit dem Bau beschäftigt und hab oft nicht die Zeit, an der DB weiter zu machen. Daher kann es schon mal länger dauern bis ich mich hier zurückmelde.

Danke euch für die Hilfe.

mfG

Jochen
Dateianhänge
TextData_20090220.zip
(32.42 KiB) 51-mal heruntergeladen
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Barlee »

Hallo Klausi,
Verknüpfe ich danach allerdings diese Abfrage mit der Abfrage der benötigten Sensoren, dann rechnet Base eine ganze Weile geschätzte 15 Min. Bis dann die Meldung "Out of Memory" kommt.
Hört sich so an, als wäre ein JOIN (die Verknüpfung zwischen den Tabellen) nicht in Ordnung.
Kannst Du die Abfrage hier einmal reinkopieren?

Gruß Barlee
Klausi
Beiträge: 7
Registriert: Di, 17.02.2009 23:14

Re: Auswahlfeld in Calc an Abfrage in Base übergeben

Beitrag von Klausi »

Hallo Barlee,

ich konnte die Diagramme jetzt so umbauen, daß das kombinierte Datum/Zeit Feld nicht mehr stört. Von daher brauche ich an den Timestamps nichts mehr verändern.

Nur die Übergabe eines Datums von Calc an die Abfrage in Base habe ich noch nicht hin bekommen.
Momentan mache ich das "manuell" funktioniert aber ganz gut.

Danke für deine Hilfe

mfG

Jochen
Antworten