Supportnet / Forum / Datenbanken
Mitarbeiterabfrage nach Datum sortiert
Frage
Ich habe eine Datenbank mit einem Feld von und einem Feld bis. Nun möchte ich wissen, wie ich es herausbekomme, welche Mitarbeiter in der Zeit von bis gearbeitet haben (nicht die Zeiten, sondern Beginn des Arbeitsverhältnisses und Ende) . Ich möchte es flexibel gestalten, da ich immer wieder andere Daten suche.
Antwort 1 von Teddy7
Meinst Du sowas :
von <= Suchvon and ( bis >= Suchbis or bis is null )
Gruß
Teddy
von <= Suchvon and ( bis >= Suchbis or bis is null )
Gruß
Teddy
Antwort 2 von berta1
Hallo Teddy,
weiß nicht, ob ich sowas meine. So in etwa schon, aber habs mal so ausprobiert, aber hat nicht geklappt.
Versuche, es noch mal genauer zu erklären. Also ich habe eine Datenbank, in der ich Mitarbeiter mit Namen usw. habe. Außerdem habe ich eine Spalte (nennt man es eigentlich Spalte?) mit "von" bezeichnet, in der ich den Arbeitsbeginn mit dem Datum (Datum, kurz) eintrage. Dann habe ich noch eine Spalte mit "bis" und gebe auch dort das Datum ein. Nun möchte ich wissen, wer z. B. vom 01.02.2004-31.10.2004 Mitarbeiter war. Es sollen aber auch die mit aufgeführt werden, die z. B. seit dem 31.01.2004-30.09.2004 Mitarbeiter waren. Ich weiß nicht, wie ich in der Abfrage die Kriterien eingeben muss. Ich möchte es auch flexibel haben, da ich immer wieder verschiedene Abfrage diesbezüglich habe. Vielleicht habe ich mich jetzt etwas besser ausgedrückt und man kann es verstehen, wo mein Problem ist. Wäre schön, wenn mir jemand helfen könnte.
Vielen Dank, berta1
weiß nicht, ob ich sowas meine. So in etwa schon, aber habs mal so ausprobiert, aber hat nicht geklappt.
Versuche, es noch mal genauer zu erklären. Also ich habe eine Datenbank, in der ich Mitarbeiter mit Namen usw. habe. Außerdem habe ich eine Spalte (nennt man es eigentlich Spalte?) mit "von" bezeichnet, in der ich den Arbeitsbeginn mit dem Datum (Datum, kurz) eintrage. Dann habe ich noch eine Spalte mit "bis" und gebe auch dort das Datum ein. Nun möchte ich wissen, wer z. B. vom 01.02.2004-31.10.2004 Mitarbeiter war. Es sollen aber auch die mit aufgeführt werden, die z. B. seit dem 31.01.2004-30.09.2004 Mitarbeiter waren. Ich weiß nicht, wie ich in der Abfrage die Kriterien eingeben muss. Ich möchte es auch flexibel haben, da ich immer wieder verschiedene Abfrage diesbezüglich habe. Vielleicht habe ich mich jetzt etwas besser ausgedrückt und man kann es verstehen, wo mein Problem ist. Wäre schön, wenn mir jemand helfen könnte.
Vielen Dank, berta1
Antwort 3 von Teddy7
Mal sehen:
Beispiel:
Hugo Maier von 01.01.2003 bis 30.04.2004
Sepp Maier von 01.05.2003 bis (=Null, weil noch nicht zu ende)
Suchkriterium:
Suchvon 01.01.2004
Suchbis 31.12.2004
Eingabe in der Abfrage als Kriterium:
von <= Suchbis and ( bis >= Suchvon or bis is null )
Also bei Hugo: 01.01.2003 <= 31.12.2004 erfüllt
und 30.04.2004 >= 01.01.2004 erfüllt
bei Sepp: 01.05.2003 <= 31.12.2004 erfüllt
und bis ist Null erfüllt
Gruß
Teddy
Beispiel:
Hugo Maier von 01.01.2003 bis 30.04.2004
Sepp Maier von 01.05.2003 bis (=Null, weil noch nicht zu ende)
Suchkriterium:
Suchvon 01.01.2004
Suchbis 31.12.2004
Eingabe in der Abfrage als Kriterium:
von <= Suchbis and ( bis >= Suchvon or bis is null )
Also bei Hugo: 01.01.2003 <= 31.12.2004 erfüllt
und 30.04.2004 >= 01.01.2004 erfüllt
bei Sepp: 01.05.2003 <= 31.12.2004 erfüllt
und bis ist Null erfüllt
Gruß
Teddy
Antwort 4 von berta1
Hallo,
vom Prinzip meine ich es so. Aber ich möchte nicht immer in der Abfrage (arbeiten mehrere Leute mit) die Kriterien ändern sondern ich würde gerne eine Parameterabfrage machen.
Außerdem möchte ich, um mit dem Beispiel weiterzumachen, nicht noch jemanden angezeigt haben, der z. B. vom 31.12.2002-31.12.2003 da war. Wie mache ich solch eine Paraeterabfrage?
Gruß
vom Prinzip meine ich es so. Aber ich möchte nicht immer in der Abfrage (arbeiten mehrere Leute mit) die Kriterien ändern sondern ich würde gerne eine Parameterabfrage machen.
Außerdem möchte ich, um mit dem Beispiel weiterzumachen, nicht noch jemanden angezeigt haben, der z. B. vom 31.12.2002-31.12.2003 da war. Wie mache ich solch eine Paraeterabfrage?
Gruß
Antwort 5 von Teddy7
Wie meistens gibt es mehrere Möglichkeiten.
Ich mache das i.d.R. so, daß ich ein Selektionsformular habe, auf dem ich die Kriterien in ungebundene Felder eingeben kann.
Dann rufe ich daraus (nach Klick auf einen Button) ein Endlosformular oder einen Bericht auf.
Ich gebe dabei die Selektionskriterien mit. Dadurch wird automatisch die Datenquelle des Formulars/Berichts entsprechend eingeschränkt.
Das kann dann im klick-Ereignis des Buttons so aussehen:
dim suche as string
suche = "von <= " & Suchbis & " and ( bis >= " & Suchvon & " or bis is null )"
DoCmd.OpenForm "FrmÜbersicht", acNormal, , suche, acFormReadOnly
Möglicherweise muß man dazu noch das Datum in eine spezielle Form bringen - ich kann das hier im Moment nicht testen. Das würde dann so aussehen:
dim suche as string
suche = "von <= " & Format(Suchbis, "\#yyyy\-mm\-dd\#") & " and ( bis >= " & Format(SuchVon, "\#yyyy\-mm\-dd\#") & " or bis is null )"
DoCmd.OpenForm "FrmÜbersicht", acNormal, , suche, acFormReadOnly
///////////////////
Wenn Du in Suchevon wie in meinem Beispiel den 01.01.2004 eingibst, dann wirst Du mit dieser Abfrage keinen bekommen, der am 31.12.2003 ausgeschieden ist, weil ja bis NICHT >= Suchvon ist
////////////////////
Gruß
Teddy
Ich mache das i.d.R. so, daß ich ein Selektionsformular habe, auf dem ich die Kriterien in ungebundene Felder eingeben kann.
Dann rufe ich daraus (nach Klick auf einen Button) ein Endlosformular oder einen Bericht auf.
Ich gebe dabei die Selektionskriterien mit. Dadurch wird automatisch die Datenquelle des Formulars/Berichts entsprechend eingeschränkt.
Das kann dann im klick-Ereignis des Buttons so aussehen:
dim suche as string
suche = "von <= " & Suchbis & " and ( bis >= " & Suchvon & " or bis is null )"
DoCmd.OpenForm "FrmÜbersicht", acNormal, , suche, acFormReadOnly
Möglicherweise muß man dazu noch das Datum in eine spezielle Form bringen - ich kann das hier im Moment nicht testen. Das würde dann so aussehen:
dim suche as string
suche = "von <= " & Format(Suchbis, "\#yyyy\-mm\-dd\#") & " and ( bis >= " & Format(SuchVon, "\#yyyy\-mm\-dd\#") & " or bis is null )"
DoCmd.OpenForm "FrmÜbersicht", acNormal, , suche, acFormReadOnly
///////////////////
Wenn Du in Suchevon wie in meinem Beispiel den 01.01.2004 eingibst, dann wirst Du mit dieser Abfrage keinen bekommen, der am 31.12.2003 ausgeschieden ist, weil ja bis NICHT >= Suchvon ist
////////////////////
Gruß
Teddy

