PDA

Vollständige Version anzeigen : Bestimmte Werte aus Tabellenfeld in Formular anzeigen


sveddi
10.10.2011, 09:08
Hallo,
wie wäre es möglich, wenn ich in einer Tabelle eine Spalte Teilnehmer und eine Spalte Termin(Datum) habe, in einem Formular alle Termine für jeden Teilnemer anzeige und zwar, das Jahr in einem getrennten Feld?
Ich möchte dann noch ein Feld "Halbjahr" im Formular einfügen.Wenn ein Termin vor 01.07. stattfinden, soll im Feld 1.Halbjahr erscheinen und danach 2.Halbjahr.
Danke für die Vorschläge!

Atrus2711
10.10.2011, 09:44
Hi,

du könntest in einer Abfrage, die auf der Tabelle basiert, alle Felder der Tabelle sowie ein zusätzliches, berechnetes Feld mit dem Jahr ermitteln.

SELECT *, Year(DeinDatum) AS Jahreszahl FROM DeineTabelle
Auf dieses Feld kannst du dann zugreifen, als sei es ein normales Feld. Auch ein Filter darauf ist möglich.

Die ganze Geschichte lässt sich aber auch einfacher gestalten. Das erste Halbjahr beginnt typischerweise am 01.01. und endet am 30.06. Diese Grenzwerte könntest du in der Abfrage direkt ansetzen, so dass du effizienter Indizes nutzen kannst:

SELECT * FROM DeineTabelle WHERE DeinDatum Between DateSerial(2011,1,1) and DateSerial(2011,6,30)

Das Jahr könntest du auch aus dem Formular übernehmen:
SELECT * FROM DeineTabelle WHERE DeinDatum Between DateSerial(Forms!DeinForm!Deinjahrestextfeld,1,1) and DateSerial(Forms!DeinForm!Deinjahrestextfeld,6,30)

sveddi
10.10.2011, 12:12
Hallo, vielen dank!Dies mit dem 1.Halbjahr und 2 Halbjahr möchte ich aber so machen, dass in einem Feld "Halbjahr" 1.Halbjahr bzw. 2.Halbjahr erscheint wenn dass Datum zw.01.01 und 30.06 bzw. 01.07 und 31.12 ist. Die Tabelle wird auch Vergangenheitsdaten beinhalten so dass auch Jahr Datum von 2009 und 2010 in der SQL beahtet werden muß.

sveddi
10.10.2011, 16:28
Wie kann ich in der Abfrage ein Berechnetes Feld erstellen.
Aus dem Feld MeinDatum soll in dieses Feld das Halbjahr berechnet werden. Wenn Datum < 30.06.. 1.Halbjahr sonst 2.Halbjahr?

maikek
10.10.2011, 16:36
Moin,
für ein berechnetes Feld musst du in deiner Abfrage ein neues Feld anlegen.
Die Berechnung selbst kannst du mit der Switch-Funktion erledigen, Prinzip in etwa:
DeinHalbjahrFeld: Switch(month(MeinDatum) < 7; "1. Halbjahr"; month(MeinDatum) > 6; "2. Halbjahr")
maike

Atrus2711
10.10.2011, 16:37
Hi,

denkabre Lösung
SELECT *, IIF(Format(DeinDatum,"mmtt") < "0630", "1. Halbjahr", "2. Halbjahr") AS Halbjahr FROM DeineTabelle

Wenn möglich ist, dass auch andere Intervalle (Quartale etc) relevante werden könnten, wäre eine Kalendertabelle sinnvoll, die jedes Datum (!) enthält und den Intervallen zuordnet.

sveddi
11.10.2011, 09:16
Hallo, vielen Dank!Wäre es dann möglich, das Jahr in MeinDatumFeld auszubleneden, sprich nur tt.mm sichtbar zu machen, da das Jahr in Feld Jahr zu sehen ist?

Atrus2711
11.10.2011, 10:13
Das kannst du mit Hilfe eines Formats erledigen, analog zu meinem geposteten Code (tt.mm.)

Übrigens sehe ich gerade, dass das erste Halbjahr doch eigentlich bis inklusive 30.06. geht, also ein <= statt < anzusetzen wäre.

sveddi
11.10.2011, 11:07
Hallo, es klappt nicht, wo soll ich die Code eingaben?

maikek
11.10.2011, 11:11
Entweder direkt in der Abfrage (neues Feld) oder für das Formularfeld (Steuerelementinhalt).
maike

sveddi
11.10.2011, 11:25
Leider immer bekomme ich eine Fehlermeldung der Ausdruck ist syntatisch falsch wenn ich in der Abfrage in einem neuen Feld die Code eingebe.Wie wäre es korrekt?

Atrus2711
11.10.2011, 11:36
WIe sieht es denn bisher aus? Bildschirmfoto wäre hilfreich.

maikek
11.10.2011, 12:14
Vielleicht reicht es auch schon, die Kommas durch Semikolons zu ersetzen. Der Abfrageentwurf will ein Semikolon.
maike

sveddi
11.10.2011, 12:35
Hallo, was soll ich genau in dem neuen Feld in der Abfrage eingeben?
Datum:Format(Meinedatum "tt.mm") ist wohl nicht korrekt.

Atrus2711
11.10.2011, 12:50
Wenn du das in der ersten Zeile einer freien weißen Spalte im Abfrageentwurf eingibst, sollte es gehen:

DatumTTMM: Format([Meinedatum]; "tt.mm.")

Das vor dem Doppelpunkt wird der Name des neuen berechnetes Felds. Das danach ist die "Formel". Benutzte Feldnamen wie Meinedatum am besten immer eckig einklammern. Das tt.mm. innerhalb der Anführungsstriche gibt das gewünschte Format an, in das der zu foramtierende Wert aus Meinedatum gebracht werden soll.

sveddi
11.10.2011, 13:52
Hallo, das Ergebnis steht im Bild!Die Code ist wohl nicht korrekt!

Atrus2711
11.10.2011, 13:59
Hi,

sei so gut und wähle mal aus dem Abfrageentwurf den Befehl Ansicht/SQL, kopiere die dort erscheinenden Zeilen hierher.

Und: ist das wirklich ein Datumsfeld, was du da formatierst?

sveddi
11.10.2011, 14:09
hallo, es hat geklapp!statt tt habe ich dd eingegeben!