Seite 1 von 1
Gelöst: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: Sa, 16.02.2008 15:23
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
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: Sa, 16.02.2008 16:44
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?
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: Sa, 16.02.2008 17:26
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
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 02:17
von komma4
Schildere Dein Problem bitte noch mal....
Du speicherst ein Jahr im DATE Feld und willst das mit einem Datum vergleichen?
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 13:40
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.
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 14:33
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
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 18:27
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)
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 21:10
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.
Re: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: So, 17.02.2008 22:42
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???
Gelöst: Spalte in Format JJJJ nimmt Werte nicht analog an
Verfasst: Fr, 22.02.2008 00:56
von geimist
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.