Gelöst: Spalte in Format JJJJ nimmt Werte nicht analog an

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Gelöst: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

In einer Tabelle habe ich eine Spalte mit dem Datumsformat JJJJ um einen Zeitraum vom 01.01. bis zum 31.12. eines jeden Jahres zu definieren. Wenn ich ein Jahr eingebe, wandelt Base es immer in das Jahr 1905. Wenn ich das Jahr als komplettes Datum speichere z.B. 01.01.2008 ist die Formatierung als 2008 zwar korrekt, aber in Base ist ja immer noch 01.01.2008 gespeichert. Das Problem liegt darin, das ich die Jahresangabe benötige, um sie in einer Abfrage mit einer anderen DAtumsangabe vergleichen möchte.

(Zur Veranschaulichung: Das Jahr steht mit einer Zeit für einen regelmäßigen Seminarzeitpunkt des örtlichen sowie von weiteren anderen Seminaren. Die Zeit ändert sich jedes Jahr. In einer anderen Tabelle liegt ein Plan, zu welchen Datum ein Gastredner zu einem Speziellen Thema spricht, bzw. eigene Referenten zu anderen Seminaren als Redner eingeladen werden. Von der Datenbank heraus werden Einladungen erstellt, die die Verbindung von u.a. Seminarort und der entsprechenden Zeit zu dem entsprechenden Datum aufweist.)

Hat jemand einen Tip, wie ich das mit der Jahresangabe realisieren kann?

Vielen Dank Stephan
Zuletzt geändert von geimist am Fr, 22.02.2008 00:58, insgesamt 1-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von komma4 »

geimist hat geschrieben:In einer Tabelle habe ich eine Spalte mit dem Datumsformat JJJJ
Das bezweifle ich:

Du hast eine Spalte, die *WIE* definiert ist (DATE?), und die Du (im F4 Browser? in einem Formular?) als "JJJJ" formatiert ausgibst?

Um einen Anteil (Monat, Jahr) aus einem DATE Feld zu ermitteln, nehme eine Funktion der Datenbank, bei HSQLDB: MONTH(date), YEAR(date)

In einer gesonderten Spalte das JAHR zu sichern, wenn es in einem Datenfeld vorhanden ist, ist redundant.


Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

komma4 hat geschrieben:Du hast eine Spalte, die *WIE* definiert ist (DATE?), und die Du (im F4 Browser? in einem Formular?) als "JJJJ" formatiert ausgibst?
Danke erstmal für die Antwort.

Die Spalte ist natürlich mit dem Feldtyp DATE und unter Feldeigenschaften habe ich für das Datumsformat JJJJ eingestellt. Was meinst du, wie ich die Funktion verwenden kann. (ich bin ein ganz lausiger Anwender und nicht gerade ein Pionier was Makros und SQL angeht)

Mir ist es halt wichtig, mit DATE nicht nur einen einzelnen Tag zu definieren, sondern alle Tage des angegebenen Jahres.

Stephan
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von komma4 »

Schildere Dein Problem bitte noch mal....

Du speicherst ein Jahr im DATE Feld und willst das mit einem Datum vergleichen?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

komma4 hat geschrieben:Schildere Dein Problem bitte noch mal....

Du speicherst ein Jahr im DATE Feld und willst das mit einem Datum vergleichen?
So ähnlich. Hier noch einmal auf das wesentliche beschränkt:
In der einen Tabelle sind die verschiedenen Seminare, das Jahr (JJJJ für die gesamten 365 Tage) und die entsprechende Uhrzeit vermerkt. Z.B. Seminar-X 2007 14:00 / Seminar-X 2008 18:00
In einer anderen Tabelle sind die Einladungen eingetragen. Z.B. für das Seminar-X der Referent-Y am 03.02.2007 Dafür soll eine Abfrage die entsprechende Uhrzeit von 14:00 ausgeben und für den 15.06.2008 eben 18:00. D.h. jedes Datum was zum entsprechenden Jahr passt soll die entsprechende Uhrzeit zugeordnet bekommen.
Das ganze funktoniert auch, sofern ich an Stelle der Jahresangabe (JJJJ) das korrekte Datum mit der entsprechenden Uhrzeit angebe. Aber auf diese Art und Weise müsste ich ja für jeden einzelnen Tag des Jahres die immer wieder gleiche Uhrzeit für alle 365 Tage eingeben. Das muss doch nicht sein, oder?

Ich hoffe, dass ich das einigermaßen verständlich beschrieben habe.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von Gert Seler »

Hallo Stephan,
wo ist denn in diesen Datensätzen ein "Primärschlüssel" verankert ? ? ?
Ohne die Grundsätze der "relationalen Datenbankerstellung" kannst Du Deine Daten in den "Müll" werfen.

http://www.tinohempel.de/info/info/date ... ierung.htm

Lies Dir das mal durch, dann verstehst Du , warum ich so forsch antworte.
Jedes "Seminar" in Deiner Datei müsste eine einmalige Nummer (Primärschlüssel), für das aktuelle Jahr oder Semester erhalten.
Und wenn das Seminar am "30. März 2008" um "14.00Uhr" und um "18.00Uhr" abgehalten wird, dann sind es 2Seminare, die bitteschön
durch 2SeminarNummern repräsentiert werden, nämlich der KursNr. 2008100295 und der KursNr. 2008100296. Wobei "2008" das Jahr und
"100" den OOo "Base_DBKurs" sowie "295" aussagt das es der "Kurs 295" ist, der am "30. März 2008 um 14.00Uhr" stattfindet.

mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

Gert Seler hat geschrieben:Hallo Stephan,
wo ist denn in diesen Datensätzen ein "Primärschlüssel" verankert ? ? ?
Jedes "Seminar" in Deiner Datei müsste eine einmalige Nummer (Primärschlüssel), für das aktuelle Jahr oder Semester erhalten.
Hallo Gert,

Ja, genauso ist es. In der Seminartabelle habe ich einen kombinierten Primärschlüssel bestehend aus dem Seminar und dem jeweiligen Jahr. Wie gesagt, die Relationen und Abfrage funktioniert auch richtig. Das Problem liegt nur darin, dass ich in der diskutierten Jahresspalte mit JJJJ keinen Zeitraum von 365 Tagen setzen kann. Verwende ich in der Jahresspalte ein einzelnes Datum, dann werden mir mit der entsprechenden Abfrage auch die richtigen Zeiten ausgespuckt, aber halt nur für Seminare dieses einzelnen Datums (ich müsste also wie gesagt für jeden Tag den Wert eingeben, der eingentlich für das gesamte Jahr gilt - das ganze also 365 mal mit jedem relevanten Datum, also 365 Datensätze wo einer reichen würde. Das will ich nicht wollen)
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von komma4 »

ich habe das Problem immer noch nicht erfasst (too much beer?)

...wenn nur das Jahr bei den SEMINAR Einträgen wichtig ist, warum interessiert Dich, ob der 01.01. gespeichert ist?

SELECT name, YEAR(jahr), uhrzeit FROM tabSeminar


Seminar-X, 2007, 14:00
Seminar-X, 2008, 18:00



SELECT referent, name, uhrzeit FROM tabSeminar as S, tabReferent as R WHERE YEAR( R.einsatztag) = YEAR(jahr)


Referent-Y, Seminar-X, 14:00
Referent-Y, Seminar.X, 18:00


Helfe mir doch bitte "vom Schlauch" . Danke.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

komma4 hat geschrieben:...wenn nur das Jahr bei den SEMINAR Einträgen wichtig ist, warum interessiert Dich, ob der 01.01. gespeichert ist?
Sorry, dass ich die Nerven so strapaziere.
Ich interessiere mich überhaupt nicht, ob ein einzelnes Datum gespeichert ist. Ich habe die Tabellenspalte mit dem Feldtyp "DATE" und durch die Eingabe der Jahreszahl möchte ich alle Tage des eingegebenen Jahres abdecken. Aber siehe Starteintrag, kann ich ein einzelnes Jahr nicht als solches eingeben. Wenn ich ein Jahr eingebe, z.B. 2008, so wandelt Base es immer in das Jahr 1905. Wenn ich ein beliebiges Datum eingebe z.B. 17.02.2008, so steht dann schon korrekt 2008 in dem Feld (Feld habe ich ja als JJJJ definiert). Aber evtl. Abfragen werden dann halt nur für den 17.02.2008 ausgegeben und nicht für die restlichen Tage von 2008.
komma4 hat geschrieben:
SELECT name, YEAR(jahr), uhrzeit FROM tabSeminar


Seminar-X, 2007, 14:00
Seminar-X, 2008, 18:00



SELECT referent, name, uhrzeit FROM tabSeminar as S, tabReferent as R WHERE YEAR( R.einsatztag) = YEAR(jahr)


Referent-Y, Seminar-X, 14:00
Referent-Y, Seminar.X, 18:00
Ich habe so die Vermutung, dass der Code den Du mir geschrieben hast, da irgendwie weiterhelfen kann, nur musst Du wissen, ich weiß überhaupt nicht wie. In meiner bisherigen Existenz konnte ich lediglich auf irgendwelche Tasten und Button drücken. Muss ich das bei der Abfrage (Entwurfsansicht) in die Zeile "FELD" eingeben???
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Gelöst: Spalte in Format JJJJ nimmt Werte nicht analog an

Beitrag von geimist »

:lol: :lol: :lol: :lol:

Vielen Dank für die Hilfe.

So habe ich es jetzt gemacht:
In der Entwurfsansicht der Abfrage habe ich eine neue, nicht sichtbare Spalte mit dem Wert: YEAR("Seminar"."Jahr") sowie das entsprechende Kriterium: YEAR ("Referent"."Datum") erstellt. Jetzt funktioniert es wunderbar. Ich wusste einfach nicht, dass ich das Datum in der Abfrage als YEAR interpretieren muss.

Danke nochmal.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten