collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 48
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13799
  • stats Beiträge insgesamt: 63494
  • stats Themen insgesamt: 8604
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Abfrage in Access 2016: leeren Datensatz anzeigen  (Gelesen 243 mal)

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Abfrage in Access 2016: leeren Datensatz anzeigen
« am: November 21, 2017, 10:47:55 »
Hallo Zusammen,

ich muss mich mal kurz vorstellen, bin ganz neu hier und habe leider (wie der Name schon sagt) keine Ahnung von Access. Da ich arbeitsbedingt ein wenig damit arbeiten soll, habe ich mir ein Anfänger Buch gekauft und das durchgearbeitet. Da stehen super Sachen drin, aber leider nicht alles.

Ich hänge jetzt seit vier Stunden an meiner ersten Datenbank. Und zwar habe ich eine Tabelle mit Mitarbeitern erstellt ("Stammdaten der Mitarbeiter"). In einer weiteren Tabelle "Sicherheitsunterweisung" stehen für jeden Mitarbeiter, der eine solche Unterweisung bekommen hat, das jeweilige Datum (verknüpft mit der Mitarbeiter über MitarbeiterID) der Unterweisung. Diese Unterweisung muss jährlich wiederholt werden.

Jetzt versuche ich eine Abfrage zu erstellen, die mir alle Mitarbeiter ausgibt, die im Jahr 2018 noch KEINE Sicherheitsbelehrung bekommen haben. Habe im Kriterium Jahr "Ist Null" eingegeben. Wenn aber ein Mitarbeiter im Vorjahr eine Belehrung erhalten hat, wird dieser dann gar nicht mehr angezeigt. Heisst, ich brauche irgendwie ein Kriterium dass sagt "Ist null in [Jahr]" Allerdings kenne ich den Ausdruck für das Kriterium in Access nicht und kann dazu nichts finden... könnt ihr mir vielleicht helfen?

danke schonmal und viele Grüße

keineAhnung123
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #1 am: November 21, 2017, 11:04:55 »
Hallo,
wahrscheinlich hier fehlt noch eine Tabelle, in der die Unterweisungen dem Mitarbeiter zugewiesen werden.
Aber, das dürfte noch nicht alles sein.

Sind die Unterweisungen für jeden Mitarbeiter notwendig und für alle gleich ?
Mit anderen Worten jeder Mitarbeiter bekommt die gleiche Unterweisung ?

Zeige bitte mal ein Bild des Beziehungsfensters.
Gruß
Klaus
 

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #2 am: November 21, 2017, 11:38:19 »
Hi Klaus,

vielen Dank für deine schnelle Rückmeldung. In der Tabelle Mitarbeiter existiert ein Feld "Sicherheitsbelehrung" (Ja/Nein Feld). Wenn das angeklickt ist, dann benötigt der Mitarbeiter die Unterweisung. Die Unterweisung ist für alle Mitarbeiter dann gleich.



habe auch ein Formular erstellt, in dem die Mitarbeiter als Hauptformular hinterlegt sind und die Sicherheitsbelehrung als Unterformular nur die Belehrungen anzeigt, die der Mitarbeiter gemacht hat (also pro Jahr) - z.B. Mustermann Max Sicherheitsbelehrung in 2015, 2016, 2017. Daher denke ich eigentlich, dass die Beziehung zwischen den Tabellen ok ist. Nun soll in der Abfrage aber angezeigt werden,dass Mustermann in 2018 noch keine Belehrung bekommen hat. Für einen Mitarbeiter, der neu hinzugefügt wurde und der noch gar keinen Datensatz in Tabelle Sicherheitsbelehrung hat funktioniert die Abfrage mit Feld Jahr Kriterium Ist null. Da aber Max Mustermann in 2015,2016,2017 bereits eine Belehrung bekommen hat, wird er nicht mit angezeigt... macht es das verständlicher?

Hab versucht das Bild für die Beziehung einzufügen... Mal sehen obs gleich angezeigt wird.

Danke nochmal und viele Grüße

keineAhnung123
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #3 am: November 21, 2017, 12:01:11 »
Hallo,
hast Du für jedes Jahr eine extra Spalte angelegt ?
Wenn Du nur eine Beziehung hast, hast Du nur 2 Tabellen, es werden aber 3 benötigt.
Erkläre bitte mal den Aufbau der Tabelle mit den Jahren.
Das mit dem Bild hat nicht geklappt.
Gruß
Klaus
 

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #4 am: November 21, 2017, 12:14:08 »
Hallo Klaus,

ja, das ist mir aufgefallen, dass das Bild nicht hochgeladen wurde. Ich hab hier im Forum gesucht - ich muss angemeldet sein um Bilder hochladen zu können (-bin ich ja, sehe auch einen Button mit "Bild hochladen", klicke ich dadrauf sieht es allerdings aus wie eben .... kriegs also scheinbar nicht hin...

Habe aber auf jeden Fall nur 2 Tabellen. Tabelle 1: Felder: MitarbeiterID, Nachname, Vorname, Ort, SIcherheitsbelehrung (Ja/Nein): Tabelle 2: Felder: BelehrungID, MItarbeiterID (1:n Verknüpfung zu Tabelle Mitarbeiter), Jahr, erfolgt am (genaues Datum). Das Jahr berechnet sich aus "erfolgt am".

In der Abfrage dann die folgenden Felder: Nachname [Mitarbeiter], Vorname [Mitarbeiter], Sicherheitsbelehrung [Mitarbeiter] ->Kriterium wahr, Jahr [Sicherheitsbelehrung] Kriterium zur Zeit: Ist null (das ist aber wohl falsch).

Eine dritte Tabelle würde ich dann benötigen um die Unterweisungen den Mitarbeitern zuzuordnen? Aber mache ich das nicht schon über die Beziehung von MItarbeiterID aus Mitarbeiter mit MItarbeiterID aus Sicherheitsunterweisung?  :o :o

Fragen über Fragen... Danke dir Klaus, dass du dir Zeit für eine (für euch Access Pros) so einfache Frage nimmst

VG

keineAhnung123
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #5 am: November 21, 2017, 12:33:11 »
Hallo,
Das Jahr in der Tabelle ist überflüssig. Von berechneten Feldern in TAbellen ist abzuraten. Berechnet wird in Abfragen.

Du benötigst eine Tabelle die lückenlos alle Jahre enthält von z.B. 2017 bis 2030, jedes Jahr ein Datensatz. Mit einer Inkonsistenzabfrage (gibt es einen Assi dazu) kannst Du dann ermitteln wer in einem bestimmten Jahr noch keine Unterweisung hatte.
Versuche das bitte noch mal mit dem Bild, das muss klappen.
Du muss das Bild über durchsuchen auswählen.

Habt Ihr nur Sicherheitsunterweisungen oder auch noch andere Unterweisungen ?
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: keineAhnung123

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #6 am: November 21, 2017, 13:02:59 »
Hallo Klaus,

wir haben noch mehr Unterweisungen. Die Unterweisung, von der ich gerade spreche, ist eine Unterweisung für Staplerfahrer. Dann gibt es eine weitere Unterweisung für Hygiene. Diese kann, muss aber nicht die selben Mitarbeiter betreffen.

Werde mal eine Tabelle Jahre einfügen und mit der Sicherheitsunterweisung verknüpfen. Selbiges dann auch für die Hygienebelehrung. Melde mich gleich wieder, wenn ich ein bischen rumprobiert habe.

Danke auf jeden Fall für den Tip mit der 3. Tabelle! Da hätte ich ja noch weitere 10h suchen können und es hätte nicht funktioniert... manchmal liegt das einfache so nah!

Viele Grüße

keineAhnung123
 

Online ebs17

  • Access-Meister
  • ***
  • Beiträge: 818
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #7 am: November 21, 2017, 13:21:38 »
Zitat
Jetzt versuche ich eine Abfrage zu erstellen, die mir alle Mitarbeiter ausgibt, die im Jahr 2018 noch KEINE Sicherheitsbelehrung bekommen haben
Diese Abfrage könntest Du Dir sparen, wenn Du Dir bewusst machst, dass wir noch im Jahr 2017 sind.
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: keineAhnung123

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #8 am: November 21, 2017, 13:27:58 »
 8) 8) 8) na vielen Dank Eberhard, dann kann ich ja jetzt aufhören :D
Die Datenbank soll ab nächstem Jahr genutzt werden. Dieses Jahr suchen wir tatsächlich die Personalakte von jedem Mitarbeiter nach den Unterweisungen durch um zu prüfen, dass die alle gemacht haben.

Anyways,
Tabelle mit Jahren ist erstellt - Nächstes Problem - wie wird die Tabelle verknüpft? Muss die mit der MitarbeiterID verknüpft werden? oder mit der Sicherheitsbelehrung? Ich steh voll aufm Schlauch...
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #9 am: November 21, 2017, 13:41:16 »
Hallo,
ich fürchte, das Konzept muss komplette überdacht werden. Das würde ich so auf keinen Fall machen.
Du solltest auch für die Unterweisungen (alle) eine Stammdatentabelle anlegen in der alle Unterweisungen erfasste werden, nur die reinen Unterweisungsdaten.
Dann wird eine Tabelle benötigt die die für den Mitarbeiter zutreffenden Unterweisungen zuordnet. In die Tabelle kommen keine Termine. Die dient nur dazu festzulegen wird welche bekommt. Das Ja/Nein Feld in der Mitarbeitertabelle entfällt dann ersatzlos.

Dann wird noch mal eine Tabelle benötigt mit dem gleichen Aufbau und in diese Tabelle kommen dann die Termine.

Sind die Personen die belehren auch Mitarbeiter ?

PS:
Auf Leer und Sonderzeichen aller Art sollte in Feldnamen unbedingt verzichtet werden.

Ich bin erst gegen Abend wieder am Rechner. Du hast also eine kreative Pause.  ;D
« Letzte Änderung: November 21, 2017, 14:05:58 von MzKlMu »
Gruß
Klaus
 

Online ebs17

  • Access-Meister
  • ***
  • Beiträge: 818
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #10 am: November 21, 2017, 13:52:38 »
@keineAhnung123: Du siehst, ich lese, was geschrieben steht.

Wenn die Abfrage auf nur ein (beliebiges) Jahr auszuführen ist, würde ich eine solche Parameterabfrage verwenden:
PARMETERS VorgabeJahr INTEGER
;
SELECT
   M.*,
   S.*
FROM
   Mitarbeiter AS M
      LEFT JOIN
         (
            SELECT
               *
            FROM
               Sicherheitsunterweisung
            WHERE
               [erfolgt am] BETWEEN DateSerial(VorgabeJahr, 1, 1)
                  AND
               DateSerial(VorgabeJahr, 12, 31)
         ) AS S
         ON M.MitarbeiterID = S.MitarbeiterID
WHERE
   S.MitarbeiterID IS NULL
      AND
   M.inaktiv = False
Basis ist hier die momentane Tabellenstruktur.

Richtige Abfragen würde man erst dann erstellen, wenn das Datenmodell durchgeplant und fertig ist.
Mit freundlichem Glück Auf!

Eberhard
 

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #11 am: November 21, 2017, 14:46:41 »
Hallo Zusammen,

@Ebs17: Du hast natürlich recht, ich merke selber, dass ich um selber in Access zu arbeiten zu wenig abstrakt denke. Muss das erst noch üben, aber ich gebe mir Mühe :)  Leider hatte ich die Tabellen schon gelöscht. als du die Abfrage so geschickt hattest. Ich werd mal versuchen, die Tabellen so aufzubauen, wie Klaus das geschríeben hat um auch evtl noch andere Unterweisungen hinzufügen zu können (hier gibts jeden Tag was Neues, da sind sicher auch mal Unterweisungen dabei). Dachte eigentlich auch, ich hätte das Datenmodell durchgeplant und fertig... hatte ja auch schon das Formular erstellt und getestet. Nur die Abfragen fehlten noch - aber - ich muss noch viel lernen in Access. Danke trotzdem für den Code und Glück auf!


@Klaus:
Hallo Klaus, ich habe die Tabellen erstellt und die Beziehungen angepasst. Bei der Tabelle Jahre bin ich mir trotzdem unsicher, ob die Verknüpfung so richtig ist? Auch hatte ich eine Tabelle "Führerschein" die eben die Gültigkeit von Führerscheinen geprüft hat - diese Unterscheidet sich ein wenig von den Unterweisungen, zwar benötigen nicht alle Mitarbeiter die Führerscheinprüfung, aber wenn dann müssen mehr Daten hinterlegt werden als bei den Unterweisungen (Führerscheinnummer, gültig bis). Sollte das dann mit in die Unterweisungstabelle oder wäre das nochmal ne extra Tabelle?
Tut mir voll leid für die vielen Fragen, ich komme mir ziemlich dumm vor ehrlich gesagt.... beim Buch lesen hab ich gedacht ich hätte es verstanden... aber beim selber machen merkt man erst, was alles beachtet werden muss.
Werde mal auf dein Feedback warten, bevor ich weitermache :)
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #12 am: November 21, 2017, 18:54:52 »
Hallo,
eine Frage noch, hatte ich in #9 schon gefragt, Antwort bleib aber aus:
Zitat von: MzKlMu
Sind die Personen die belehren auch Mitarbeiter ?

Und noch mal der Hinweis, entferne die Leerzeichen in den Feldnamen.

Der Aufbau ist noch überarbeitungsbedürftig.
Kannst Du die DB mal hier hochladen ?
Komprimieren/Repariern (Access Dienstprogramm). Als Zipfile mit einigen Spieldaten ?

Kannst Du die D
Gruß
Klaus
 

Offline keineAhnung123

  • Newbie
  • Beiträge: 9
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #13 am: November 22, 2017, 07:11:30 »
Hallo und guten Morgen Klaus,

sorry, ich hatte erst n Screenshot gemacht und dann die Leerzeichen aus den Feldnamen entfernt. Hier ist die Datenbank.
Die Personen die Belehren sind auch Mitarbeiter, ja. Hier findet mein Chef es aber nicht tragisch, wenn man die nicht mit der Tabelle Mitarbeiter verknüpft, sondern einfach n Namen angibt...

Habe 3 Datensätze in den MItarbeitern angelegt und in den anderen Datensätzen auch ein paar Daten eingefügt, ich hoffe, das ist okay so?

Viele Grüße

keineAhnung123
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Abfrage in Access 2016: leeren Datensatz anzeigen
« Antwort #14 am: November 22, 2017, 10:07:28 »
Hallo,
Zitat
...sondern einfach n Namen angibt...
sag Deinem Chef das ist keine gute Idee. Da hast Du eines Tages einen Wildwuchs an Namen drin stehen. Der eine Schreibt Meier, einer schreibt Meier, dann kommt die Vertretung, der schreibe dann Meier K. usw. usw. So etwas macht man ausschließlich über ein Kombi zur Auswahl mit angelegten Beziehungen.

Was kommt in das Feld "eingegeben von" ?

Wird die DB zukünftig von mehreren Usern benutzt ?
Wenn ja, habt Ihr bedacht dass dann jeder User Access braucht (mindestens die Runtime) ?
Soll es eine Benutzerverwaltung geben mit Rechten ?

Das sind Dinge, die man bereits im Vorfeld betrachten sollte.

PS:
In der Beispieldb sind immer noch die Leerzeichen. Ist jetzt nicht schlimm, ich meine ja blos.
Gruß
Klaus