Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Brunoz am Juli 03, 2013, 16:29:19

Titel: In Kombinationsfeld Datensätze ausblenden
Beitrag von: Brunoz am Juli 03, 2013, 16:29:19
Hallo Zusammen,
stehe total auf dem Schlauch. Hoffe ihr könnt mir weiterhelfen?

Habe ein Formular (Projektierung) mit folgenden Feldern:
-   Datum
-   Mitarbeiter
-   Maschine
etc.

Und eine Tabelle (Urlaub) mit folgenden Werten (als Beispiel)

Nr.    Name                      Datum              Dauer
1   MustermannA      01.07.2013    5 Tage
2   MusterfrauB             03.07.2013   5 Tage
3   MustermannA          10.07.2013   3 Tage

Nach Eingabe des Datums im Formular (Projektierung), sollen nun nur die Mitarbeiter in einem Kombifeld angezeigt werden, die in diesem Zeitraum keinen Urlaub haben.
Hatte dazu auch schon eine Abfrage erstellt (siehe weiter unten) die das Datumfeld aus dem Projektbuch heranzieht und somit die Mitarbeiter ausblendet die das Kriterium erfüllen.

Zum Beispiel, bei Eingabe von ,,01.07.2013" soll dieser  nur die MusterfrauB anzeigen und MustermannA komplett ausblenden.

SELECT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE (((tab_Urlaub.Urlaub) Not Between [Formulare]![tab_Projektierung]![Datum] And [Formulare]![tab_Projektierung]![Datum]-[Datum]));


In diesem Beispiel (Urlaub) wird Datensatz 1 ausgeblendet, 2 eingeblendet und leider auch 3 eingeblendet (dieser soll nicht angezeigt werden, weil Datensatz 1 das Kriterium erfüllt)!

Ich hoffe es ist einigermaßen verständlich rübergekommen

Vielen Dank vorab.
Gruß
Claudio
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: DF6GL am Juli 03, 2013, 16:54:19
Hallo,

eher so:



SELECT Mitarbeiter
FROM tab_Urlaub
WHERE [Forms]![tab_Projektierung]![Datum] not between [Datum] and [Datum] + [Dauer]
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: Brunoz am Juli 04, 2013, 14:11:21
Vielen Dank,

aber leider funktioniert der Code nicht. Jetzt erscheint gar kein Mitarbeiter mehr.

Hab es so abgeändert

SELECT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE (((tab_Urlaub.Urlaub) Not Between [Datum] And [Datum]+[Dauer]));


Aber leider passiert es wieder, das doppelte Einträge erscheinen.
In meinem Fall "MustermannA"

Gruß und Danke für die Mühen
Claudio
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: database am Juli 04, 2013, 14:45:20
Hallo,

wenn du in der Tabelle im Feld 'Dauer' oder im Formularfeld tatsächlich '5 Tage' drin stehen hast wird's mit einer Berechnung [Datum] + [Dauer] nicht gehen.

Ansonst zum 'Ausblenden' der doppelten Namen

SELECT DISTINCT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE (((tab_Urlaub.Urlaub) Not Between [Datum] And [Datum]+[Dauer]));

Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: Brunoz am Juli 04, 2013, 15:40:31
Wie ist es dann möglich, einem Mitarbeiter einen oder mehrere Urlaubsbereiche zu hinterlegen (von - bis)
und diesen dann im Formular abzufragen.

Beispiel:
MustermannA     Urlaub vom 01.07.2013 bis 10.07.2013
MustermannA     Urlaub vom 05.08.2013 bis 15.08.2013
MustermannA     Urlaub vom 10.12.2013 bis 24.12.2013
MusterfrauB        Urlaub vom 05.08.2013 bis 10.08.2013

Jetzt sollte im Formular (Projektierung) durch Eingabe von Datum (z.B. 04.07.2013)
nur MusterfrauB (im Kombifeld) erscheinen, weil MustermannA im ersten Datensatz das Kriterium erfüllt.

Grüsse


Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: database am Juli 04, 2013, 15:53:40
Hallo,

hast du jetzt die Tabelle geändert?

Wenn die Datumseinträge jetzt so in der Tabelle stehen sollte das so funktionieren:


SELECT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE [Forms]![tab_Projektierung]![Datum] not between [tab_Urlaub].[UrlaubVon]  and  [tab_Urlaub].[UrlaubBis]


Fügst du DISTINCT hinzu, wird jeder Mitarbeitername nur einmalig angezeigt.

Wenn aber der gleiche Mitarbeiter Urlaubsbereiche hat, die das Kriterium nicht erfüllen werden die auch angezeigt.
Unterscheiden kannst du die Einträge dann dadurch, dass du auch die Urlaubsdaten anzeigst.
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: Brunoz am Juli 04, 2013, 16:22:12
Erstmal möchte ich mich bedanken. Danke, das du dir die Zeit nimmst.  :)

Ich habe die Tabelle noch nicht abgeändert, werde dies aber noch tun.
Es funktioniert soweit, das doppelte Einträge ausgeblendet werden.

Wenn aber der gleiche Mitarbeiter Urlaubsbereiche hat, die das Kriterium nicht erfüllen werden die auch angezeigt.
Unterscheiden kannst du die Einträge dann dadurch, dass du auch die Urlaubsdaten anzeigst.

   Dies würde ich gerne vermeiden. Also, der Mitarbeiter soll ausgeblendet werden.
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: database am Juli 05, 2013, 07:37:45
Hallo,

dann sollte es eigentlich damit gehen, dass die Mitarbeiternamen ermittelt werden, die im Kriterienbereich liegen und deren Namen dann in der Liste auszuschließen.

Hmmm.... ein ungetesteter Schnellversuch


SELECT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE tab_Urlaub.Mitarbeiter NOT IN
   (SELECT DISTINCT tab_Urlaub.Mitarbeiter
     FROM tab_Urlaub
     WHERE [Forms]![tab_Projektierung]![Datum] BETWEEN [tab_Urlaub].[UrlaubVon]  AND  [tab_Urlaub].[UrlaubBis])



Mal sehen ...   ::)
Titel: Re: In Kombinationsfeld Datensätze ausblenden
Beitrag von: Brunoz am Juli 05, 2013, 08:58:28
Ab heute bist du mein ACCESS-GOTT!

GENIAL ES FUNKTIONIERT
mit einer kleiner Änderung :)

Der fertige Code
SELECT DISTINCT tab_Urlaub.Mitarbeiter
FROM tab_Urlaub
WHERE (((tab_Urlaub.Mitarbeiter) Not In (SELECT DISTINCT tab_Urlaub.Mitarbeiter       FROM tab_Urlaub        WHERE [Forms]![tab_Projektierung]![Datum] BETWEEN [tab_Urlaub].[UrlaubVon]  AND  [tab_Urlaub].[UrlaubBis])));


MILLE GRAZIE