Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Vertigo am Juli 25, 2019, 14:34:07

Titel: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Juli 25, 2019, 14:34:07
Moin Leute,

Also ich habe ein Endlosformular auf Basis einer Kreuztabelle erstellt. Dort habe ich eine Betriebszuordnung nach der im Formular sortiert werden soll.

TRANSFORM Max(TblMitarbeiter.Fristdatum) AS MaxvonFristdatum
SELECT TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung, Min(TblMitarbeiter.Fristdatum) AS MinvonFristdatum1
FROM (TblMitarbeiter INNER JOIN TblAlleMitarbeiter ON TblMitarbeiter.PersNr = TblAlleMitarbeiter.MAPersNr) INNER JOIN TblOrgEinheitenStruktur ON TblAlleMitarbeiter.MABetrieb = TblOrgEinheitenStruktur.[Kürzel Org-Einheit]
WHERE (((TblOrgEinheitenStruktur.Zuordnung)=[Formulare]![FrmFrist]![CboAuswahlBetrieb]) AND ((TblMitarbeiter.Status)<>"Abgeschlossen"))
GROUP BY TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung
PIVOT TblMitarbeiter.UProfil;


Hier kommt der Fehlercode:
"Das Microsoft Access- Datenbankmodul erkennt '[Formulare]![FrmFrist]![CboAuswahlBetrieb]' nicht als gültigen Feldnamen oder Ausdruck."


Dabei hillft mir
http://www.donkarl.com/faq/FAQ3Tabfragen.htm#3.18
leider nicht.

Auch die Beiträge hier im Forum haben mir dabei nicht weitergeholfen.

Als Parameter habe ich dann eben '[Formulare]![FrmFrist]![CboAuswahlBetrieb]' oder ohne Klammern eingegeben, auch habe ich's in beiden Versionen auch mit dem englischen Forms versucht.

Nur habe ich keinerlei Erfolg bei der Geschichte.


Wer kann mir da einen entscheidenden Tipp geben?

Titel: Re: Kreuztabelle Zuordnung
Beitrag von: DF6GL am Juli 25, 2019, 14:53:44
Hallo,

zum Einen sollte es "Forms!......! statt "Formulare!....!  heißen,
zum Anderen wird IMHO in einem Transform Statement keine Formularreferenz aufgelöst.

Baue also den Transform-String in VBA mit den Werten aus dem Formularfeld zusammen und weise ihn der Datenherkunft des Forms zu:
Zitat
Din strSQL as String

strSQL =  "... WHERE (((TblOrgEinheitenStruktur.Zuordnung)='" & Me!CboAuswahlBetrieb  & "' ) AND ((TblMitarbeiter.Status)<>'Abgeschlossen'))...."

Me.Recordsource = strSQL

Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Juli 25, 2019, 15:36:34
Ok.
Also ich nehme in der Entwurfsansicht des Formulars die Datensatzquelle demnach raus, da ich diese in VBA angebe, korrekt?

Und um ehrlich zu sein verstehe ich grade nur die Hälfte, müsste der selbe Code wie ich ihn unten postete nicht dann einfach so zu VBA zu übernehmen sein?

Und setzte ich dann den ganzen Code einfach in die Sub Form_Current?
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: DF6GL am Juli 25, 2019, 19:23:53
Hallo,

das, was Du unten angegeben hast, ist ein SQL-Statement und kein VBA Code.

Wie der SQL-String zusammengesetzt werden muss, hab ich beispielhaft gezeigt. (Die 3 Pünktchen stehen als Platzhalter für den Rest des SQL-Strings...)

Den Code setzt man sinnvollerweise in das AfterUpdate-Ereignis des Kombifeldes (CboAuswahlBetrieb), sofern dies zutrifft.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Juli 26, 2019, 12:42:59
Das Kombifeld hat eine eigene Recordsource. Das Formular selbst erhält diese erstellte Recordsource
Demnach einfach
'Forms!Frmfrist.RecourdSource = FristSQL' ?

Beim Ausführen des Codes taucht jedoch ein Syntaxfehler in der 'From-Klausel' auf. Kann jemand sehen wo der liegen könnte?


FristSQL = "SELECT     TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname," _
& "           TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung, Min(TblMitarbeiter.Fristdatum) AS MinvonFristdatum1 " _
& "FROM        (TblMitarbeiter INNER JOIN TblAlleMitarbeiter ON TblMitarbeiter.PersNr = TblAlleMitarbeiter.MAPersNr) " _
            & "INNER JOIN TblOrgEinheitenStruktur ON TblAlleMitarbeiter.MABetrieb = TblOrgEinheitenStruktur.[Kürzel Org-Einheit] " _
& "WHERE       (((TblOrgEinheitenStruktur.Zuordnung)='" & Me!CboAuswahlBetrieb & "' ) AND (((TblMitarbeiter.Status) <> 'Abgeschlossen'))) " _
& "GROUP       BY TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung " _
& "PIVOT       TblMitarbeiter.UProfil"



Danke. Gruß
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: DF6GL am Juli 26, 2019, 12:58:23
Hallo,

teste zunächst die ursprüngliche Statement (in der SQL-Ansicht) ohne die Where-Condition mit dem Kombi.

(Vermutlich stimmt die Klammerung nicht)

TRANSFORM Max(TblMitarbeiter.Fristdatum) AS MaxvonFristdatum
SELECT TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung, Min(TblMitarbeiter.Fristdatum) AS MinvonFristdatum1
FROM (TblMitarbeiter INNER JOIN TblAlleMitarbeiter ON TblMitarbeiter.PersNr = TblAlleMitarbeiter.MAPersNr) INNER JOIN TblOrgEinheitenStruktur ON TblAlleMitarbeiter.MABetrieb = TblOrgEinheitenStruktur.[Kürzel Org-Einheit]
WHERE (((TblMitarbeiter.Status)<>"Abgeschlossen"))
GROUP BY TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung
PIVOT TblMitarbeiter.UProfil;


Falls dann ein Fehler auftaucht, diesen eliminieren und mit einem passenden statischen Wert die KT-Abfrage ausführen:



TRANSFORM Max(TblMitarbeiter.Fristdatum) AS MaxvonFristdatum
SELECT TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung, Min(TblMitarbeiter.Fristdatum) AS MinvonFristdatum1
FROM (TblMitarbeiter INNER JOIN TblAlleMitarbeiter ON TblMitarbeiter.PersNr = TblAlleMitarbeiter.MAPersNr) INNER JOIN TblOrgEinheitenStruktur ON TblAlleMitarbeiter.MABetrieb = TblOrgEinheitenStruktur.[Kürzel Org-Einheit]
WHERE (((TblOrgEinheitenStruktur.Zuordnung)= 1 ) AND ((TblMitarbeiter.Status)<>"Abgeschlossen"))
GROUP BY TblMitarbeiter.PersNr, TblMitarbeiter.Name, TblMitarbeiter.Vorname, TblMitarbeiter.GebDatum, TblOrgEinheitenStruktur.Zuordnung
PIVOT TblMitarbeiter.UProfil;

Hier ist "Zuordnung" als vom Datentyp "LONG" angenommen.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Juli 26, 2019, 14:08:34
Wundervoll. Es funktioniert. Es war wirklich eine Klammer die fehl gesetzt wurde.


Eine Frage besteht noch:
Ich dachte ich müsste jetzt nur 'TblMitarbeiter.PersNr' in den Steuerelementinhalt eines Textfeldes setzen um den entsprechenden Wert zu erhalten, jedoch ist das anscheinend nicht so einfach. Die Anzahl der Datensätze ist korrekt, jedoch nicht die Textfelder.


*Edit:
Habs behoben habe die nur "PersNr" noch stehen und es funktioniert.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: DF6GL am Juli 26, 2019, 16:51:43
Hallo,
führe die KT-Abfrage mal im Abfrageentwurf aus und sieh Dir die ausgegebenen Felder an. Diese sind auch in einem Form an ein Steuerelement (Textfeld)  zu binden.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am August 01, 2019, 11:30:27
Moin,

Zitat von: DF6GL am Juli 26, 2019, 16:51:43
Hallo,
führe die KT-Abfrage mal im Abfrageentwurf aus und sieh Dir die ausgegebenen Felder an. Diese sind auch in einem Form an ein Steuerelement (Textfeld)  zu binden.

Eine Frage habe ich dazu noch, wie bekomme ich meine gefilterten Ergebnisse ( [...] WHERE        ((TblOrgEinheitenStruktur.Zuordnung)='" & Me!CboAuswahlBetrieb & "' [...] ) durch das Comboboxfeld jetzt in einen Bericht?

Diese Kreuztabelle macht die ganze Aktion verwirrend.

Setz ich das Statement direkt in die Datensatzquelle, dann folgt: "Die Kreuztabelle einer nicht feststehenden Spalte kann nicht als Unterabfrage verwendet werden"
- Was bedeutet das?

Setz ich das Statement in eine Abfrage und verlinke diese mit dem Bericht, dann übernimmt der nur den Wert aus der Combobox aber keine Datensätze. Der Bericht ist leer.


Wenn ich die Inhalte der grundlegenden Tabellen als Datensatzquelle angebe, dann zeigt er natürlich alle Datensätze an und nicht nur die, die einen Bezug zur Combobox haben.


Ich bin ein wenig überfordert mit der ganzen Kreuztabellen Geschichte. Es hätte ja einfach werden können ;)


Edit: Verlinke ich die Felder des Berichts mit denen des Formulars taucht auch nur ein Datensatz auf.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: DF6GL am August 02, 2019, 15:26:14
Hallo,

lad mal die Db hier hoch, komprimiert/repariert, datenreduziert und gezippt.

Beschreibe an Hand der realen Objektnamen und -Felder den Vorgang und das, was Du erwartest.

Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am August 12, 2019, 14:32:42
Moin,

- Also im 'FrmFristen' werden die Fristen der Mitarbeiter eines bestimmten Betriebes (Drop-Downfeld 'CBOAufwahlBetrieb') dargestellt. Jetzt würde ich mit diesem Ergebnis einen Bericht erstellen wollen (um dort eine Excel / PDF zu exportieren):


- Und was noch schwierig ist, dass ich einen Filter ('Where-Statement') implementiere, bei welchem ich nur Datensätze angezeigt bekomme mit Datensätzen bis zum Tag in 'TxtFristAuswahl'.
Denn ich weiß nicht genau wie ich das Feld 'MinvonFristdatum' als Feld angeben kann, da es ja keinen Ursprung in einer Tabelle hat sondern durch den Zuordnungs-SQL erstellt wird.


Gruß


P.s.: Wie kann ich hier eigentlich auch Personalangezeigt bekommen, welche nicht in TblGMHFristen aufzufinden sind, jedoch in TblAlleMitarbeiter. Also ich will alle aus TblAlleMitarbeiter angezeigt bekommen, und die sollen dann, falls vorhanden, die Fristen dort stehen haben.
Durch einen einfach 'Right Join' zur TblAlleMitarbeiter klappt es leider nicht.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am August 12, 2019, 15:07:38
Hallo,
warum sind keine Beziehungen angelegt, damit ein Außenstehender die Struktur versteht ?
Eine Datenbank ohne Beziehungen ist keine Datenbank. Das ist das A+O einr DB und ist direkt nach den TAbellen anzulegen.
Ich glaube auch nicht, dass die Struktur stimmt, was sind denn die 6 Felder Org1 - 6 und OrgBasis ?
Die Fristentabelle enthält auch keinen Fremdschlüssel zum Mitarbeiter, die PersNr ist dazu nicht geeignet, Du hast ja eine ID in der Mitarbeitertabelle.

Dringender Rat:
Verzichte auf Sonderzeichen jeder Art in Feldnamen.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am August 12, 2019, 16:09:25
Zitat von: MzKlMu am August 12, 2019, 15:07:38
Hallo,
warum sind keine Beziehungen angelegt, damit ein Außenstehender die Struktur versteht ?
Eine Datenbank ohne Beziehungen ist keine Datenbank. Das ist das A+O einr DB und ist direkt nach den TAbellen anzulegen.
Ich glaube auch nicht, dass die Struktur stimmt, was sind denn die 6 Felder Org1 - 6 und OrgBasis ?
Die Fristentabelle enthält auch keinen Fremdschlüssel zum Mitarbeiter, die PersNr ist dazu nicht geeignet, Du hast ja eine ID in der Mitarbeitertabelle.

Dringender Rat:
Verzichte auf Sonderzeichen jeder Art in Feldnamen.



- Beziehungen: Das hängt damit zusammen, dass ich den betreffenden Teil der Datenbank exportiert habe. (Anhang)

- Struktur: Das stimmt schon so. Die Liste ist importiert aus einem anderen System. Die Org-Stufen sind Untereinheiten der verschiedenen Abteilungen und müssen alle dargestellt werden, da die Mitarbeiter auf verschiedenen Stufen arbeiten. Also zum Beispiel reicht die Beschreibung von Mitarbeiter 1 bis Org-Einheit 2 und die von Mitarbeiter 2 bis Org-Einheit 5.

- Wieso sollte die 'PersNr' nicht geeignet sein? und hier auch nochmal wie in Punkt 2 beschrieben. Diese Liste ist importiert.

Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am August 12, 2019, 16:38:19
Hallo,
nein, die Struktur stimmt nicht. Es fehlt eine Tabelle zur Zuordnung der Unterheiten in je einem Datensatz und nicht in einem Feld.
Aufzählungsfelder sind in einer Datenbank ungeeignet und verstoßen gegen die Normalisierungsregeln.

Die PersNr ist ein Textfeld und Texte sind als Schlüsselfelder nicht geeignet. Zahlen sind da deutlich geeigneter. Und Du hast doch Primärschlüssel und über diese sollten auch die Beziehungen laufen.
Siehe Bild. Und es ist ja der Sinn eines Primärschlüssels diesen für die Beziehungen zu nutzen. Das gilt sinngemäß auch für die ID der anderen Tabelle. Wenn Du die PersNr als Schlüsselfeld lassen willst, ist die MAID überflüssig.

Die Datenbank bedarf der Überarbeitung. Auf Dauer passt das so nicht. Bei korrektem Datenmodell dürfte auch Dein Problem erledigt sein.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am August 13, 2019, 08:53:15
Also ich habe das jetzt folgendermaßen geändert: (Anhang)

Die PersNr / MAPersNr sind jetzt Zahlenfelder.

Die TblGMHFristen wird von einer anderen Quelldatei importiert und betrifft auch nur die Mitarbeiter mit Personalnummern.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am August 13, 2019, 10:10:26
Hallo,
das ist alles reichlich verwirrend.
- MAID ist überflüssig, MAPersNr wird zum Primärschlüssel.
- Kurzbezeichnung verknüpft mit MABetrieb, verwirrend, blickst Du später selbst nicht mehr durch
- Textfelder sind als PS ungeeignet. Hier sollte dann ein Autowert rein und eine Zahl (Long) als Fremdschlüssel.
- es ist grundsätzlich referentielle Integrität einzustellen.

ZitatDie TblGMHFristen wird von einer anderen Quelldatei importiert
Die Daten müssen nach dem Import trotzdem in eine normalisierte Struktur überführt werden. So wie die Tabelle jetzt ist, ist diese für Access ungeeignet.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Oktober 09, 2019, 09:39:01
So Leute,
also ich habe jetzt mal versucht die Zuordnungen ordentlicher darzustellen:
(1)
zur Erklärung:
Ich vergebe Termine für Gesundheitsförderungen (tblGATermine). Die Details zu der jeweiligen Förderung in der Tabelle 'tblGAInfos'.

Welcher Mitarbeiter teilnimmt findet sich in 'tblGmhMA', der Schlüssel dieser Tabelle beruht auf der Personalnummer der jeweiligen Person (IDMAPersNr).
Wo dieser Mitarbeiter beschäftigt ist, ist in 'tblGmhOrg' festgehalten, wobei txtOrgEinheit quasi seinen Arbeitsplatz beschreibt.
Die Hauptfirma ist gegliedert in verschiedene Betriebe (Bereiche).
Es existieren aber auch weitere Firmen (tblGmhFirmen) neben der Hauptfirma, die nicht zusätzlich in einzelne 'Betriebe' eingeteilt werden.

Ist das soweit schlüssig? Oder mache ich dabei schon wieder etwas falsch?



Nun stellt sich mein Problem:
Ich habe auch Teilnehmer in der Gesundheitsförderung, welche keine Mitarbeiter der Firma (2) sind, und demnach auch keine Personalnummer haben.
Wie implementiere ich diese Leute am besten in der Liste?

Die Leute der Fremdfirmen werden manuell eingefügt, wohingegen das Personal der Hauptfirma automatisch aus einer Excel-Liste importiert wird.




Titel: Re: Kreuztabelle Zuordnung
Beitrag von: emmoticon am Oktober 09, 2019, 12:01:50
Frage rein inhaltlich:  Die OrgEinheiten sind abhängig von den Betrieben der Hauptfirma und der anderen Firma? So wie das aussieht, schaut es aus als ob die OrgEinheit es nur in der Zusammenstellung von Betrieben (tblGmhBetriebe) und Fremdfirmen (tblGmhFirmen)  gibt. Wäre das nicht sinnvoller die Tabellen Betriebe und Firmen zusammenzufassen und ein weiteres Feld mit FremdFirma bzw. Betrieb einzuführen?

Zitat von: Vertigo am Oktober 09, 2019, 09:39:01Ich vergebe Termine für Gesundheitsförderungen (tblGATermine). Die Details zu der jeweiligen Förderung in der Tabelle 'tblGAInfos'.

Meiner Meinung nach fehlt da zwischen den Mitarbeitern und deinen Terminen noch eine n:m Beziehung. In deiner Struktur müsstest du für jeden Mitarbeiter, der an einem Termin teilnimmt einen neuen Datensatz in tblGATermine aufmachen. Aber Du willst doch sicherlich, dass an einem Termin mehrere Mitarbeiter und ein Mitarbeiter an mehreren Terminen teilnehmen kann.


Zitat von: Vertigo am Oktober 09, 2019, 09:39:01Nun stellt sich mein Problem:
Ich habe auch Teilnehmer in der Gesundheitsförderung, welche keine Mitarbeiter der Firma (2) sind, und demnach auch keine Personalnummer haben.
Wie implementiere ich diese Leute am besten in der Liste?

Die Leute der Fremdfirmen werden manuell eingefügt, wohingegen das Personal der Hauptfirma automatisch aus einer Excel-Liste importiert wird.

Erstell eine Tabelle für Teilnehmer die nicht Teil der Firma sind und verknüpfe sie wie die Mitarbeiter mit der Termintabelle n:m. In der Eingabe kannst du dann z.B. ein Kombofeld mit allen potentiellen Teilnehmern benutzen und bei nicht vorhandensein neu eintragen lassen.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Oktober 09, 2019, 14:50:54
Zitat von: emmoticon am Oktober 09, 2019, 12:01:50
Frage rein inhaltlich:  Die OrgEinheiten sind abhängig von den Betrieben der Hauptfirma und der anderen Firma? So wie das aussieht, schaut es aus als ob die OrgEinheit es nur in der Zusammenstellung von Betrieben (tblGmhBetriebe) und Fremdfirmen (tblGmhFirmen)  gibt. Wäre das nicht sinnvoller die Tabellen Betriebe und Firmen zusammenzufassen und ein weiteres Feld mit FremdFirma bzw. Betrieb einzuführen?

Stimmt, das war durchaus ein Denkfehler. Die Aufteilung hat abrechnungsrelevante Gründe, jedoch ist das absolut richtig, die ergeben sich auch aus den Betrieben.


Zitat von: emmoticon am Oktober 09, 2019, 12:01:50
Zitat von: Vertigo am Oktober 09, 2019, 09:39:01Ich vergebe Termine für Gesundheitsförderungen (tblGATermine). Die Details zu der jeweiligen Förderung in der Tabelle 'tblGAInfos'.

Meiner Meinung nach fehlt da zwischen den Mitarbeitern und deinen Terminen noch eine n:m Beziehung. In deiner Struktur müsstest du für jeden Mitarbeiter, der an einem Termin teilnimmt einen neuen Datensatz in tblGATermine aufmachen. Aber Du willst doch sicherlich, dass an einem Termin mehrere Mitarbeiter und ein Mitarbeiter an mehreren Terminen teilnehmen kann.

Edit: ist korrigiert, es steht jetzt die Verbindung durch die tblGATMATermin dazwischen


Zitat von: emmoticon am Oktober 09, 2019, 12:01:50
Zitat von: Vertigo am Oktober 09, 2019, 09:39:01Nun stellt sich mein Problem:
Ich habe auch Teilnehmer in der Gesundheitsförderung, welche keine Mitarbeiter der Firma (2) sind, und demnach auch keine Personalnummer haben.
Wie implementiere ich diese Leute am besten in der Liste?

Die Leute der Fremdfirmen werden manuell eingefügt, wohingegen das Personal der Hauptfirma automatisch aus einer Excel-Liste importiert wird.

Erstell eine Tabelle für Teilnehmer die nicht Teil der Firma sind und verknüpfe sie wie die Mitarbeiter mit der Termintabelle n:m. In der Eingabe kannst du dann z.B. ein Kombofeld mit allen potentiellen Teilnehmern benutzen und bei nicht vorhandensein neu eintragen lassen.

Wie im Anhang bei (2) und jetzt (3)?
- ich wollte ein Text-Suchfeld erstellen, die bei Eingabe filtert und dann in einem Listenfeld die Ergebnisse anzeigt. In welchem dann ausgewählt werden kann.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: emmoticon am Oktober 10, 2019, 16:45:35
Zitat von: Vertigo am Oktober 09, 2019, 14:50:54

Wie im Anhang bei (2) und jetzt (3)?
- ich wollte ein Text-Suchfeld erstellen, die bei Eingabe filtert und dann in einem Listenfeld die Ergebnisse anzeigt. In welchem dann ausgewählt werden kann.

Das ist leider keine n:m Beziehung ;-)
Eine n:m Beziehung erstellst du in Access anders. Schau dir mal mein Screenshot an.

Eine genauere Erläuterung findest du hier:
https://www.access-tutorial.de/tabellen/nmbeziehung.htm
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am Oktober 10, 2019, 17:08:07
Hallo,
die Struktur ist falsch. Die Mitarbeiter (egal ob Eigen oder Fremd) sind in einer Tabelle zu führen. Mit einem Ja/Nein Feld (Ja=Fremd).
Diese Tabelle bekommt einen Autowert als Fremdschlüssel. Und dieser wird auch in der Tabelle für die Termine verwendet. Damit ist es völlig egal, ob der Mitarbeiter eine Personalnummer hat oder nicht. Die Zuordnung erfolgt ja über den extra Schlüssel.
Damit löst sich Dein Problem in Luft auf.

PS:
Noch ein Tip:
Die Präfixe vor den Feldnamen (lng, dat, txt usw.) sind völlig überflüssig. Die machen nur Schreibarbeit, sonst nix.
Dass ein Name ein Textfeld ist und GatDatum ein Datum weißt Du auch ohne die 3 Buchstaben.
Stele Dir mal den Aufwand vor, wenn Du das mal den Typ ändern musst ?
Du musst Du alles ändern, was schon fertig ist, auch ggf. VBA Code, da geht nix automatisch. Mache sie lieber weg, noch ist Zeit.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Beaker s.a. am Oktober 10, 2019, 17:46:31
@emmoticon
Deine Feldnamen sind auch nicht gerade der Hit, und für Anfänger m.E. sogar verwirrend.
1. eine ID nur "ID" zu nennen ist nicht hilfreich beim Schreiben von Abfragen.
2. ein Fremdschlüssel sollte auch als solcher zu erkennen sein; - TeilnehmerID_F statt
nur "Teilnehmer". Da kommt er noch auf die Idee da den Klarnamen rein zu schreiben.
Beim Termin hast du das ja auch (mehr oder weniger) so gemacht.

@Vertigo
Unbedingt Klaus' letzten Hinweis bezügl. Struktur beachten/umsetzen!

gruss ekkehard
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: emmoticon am Oktober 11, 2019, 13:43:54
@Beaker
Ja, ich weiß! Ich wollte nur visualisieren.  ::) Verspreche nächstes Mal besser zu sein
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Oktober 15, 2019, 08:18:19
Erstmal vielen Dank.
Die Feldnamen sind geändert.
Dann verschiebe ich den "Teilnahme"-Nachweis (Ja/Nein-Feld) in die Verknüpfungtabelle?

Ich bin jetzt jedoch immer noch überfragt mit der Aufteilung der Mitarbeiterlisten.
Ich bekomme regelmäßig eine Exceltabelle (1). Die Informationen die ich verarbeiten muss sind alle die auch vorgegeben sind, mit der Ausnahme der Organisationseinheit.

Bei den Organisationseinheiten wird lediglich die höchst gegebene Einheit benötigt. Demnach kommt nach der "Personalnummer" nur noch ein Feld mit der Organisationseinheit (Name des Betriebs).

Ich erstelle dann eine Tabelle mit der O-Einheit (Dabei ist die Zahl vor der Einheit mein Schlüssel) und führe dann jeweils einen Fremdschlüssel zu der Tabelle mit den Mitarbeiterdaten, korrekt?
Kann ich die Namen der Fremdfirmen dann in der O-Einheiten-Tabelle unterbringen?
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am Oktober 15, 2019, 19:32:30
Hallo,
ich blicke da nicht durch. Bitte zeige mal das komplette aktuelle Beziehungsfenster.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Oktober 16, 2019, 09:34:23
Also so ist meine Zuordnung jetzt: (1)

Aus der Mitarbeiter Excel Liste (2) entstehen die Personalien und die letzte genannte Organisationseinheit. Also bleiben mir in Access die Inhalte wie in (3) gezeigt.

Aus den Betriebsbezeichnungen (was man mehr als Arbeitsplatzbeschreibungen betiteln könnte) bzw. den Zahlenschlüsseln kann ich dann den tatsächlichen Betrieb ausmachen (4)
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: MzKlMu am Oktober 17, 2019, 20:03:36
Hallo,
was sind denn die Organisationseinheiten ?
Sind die von der eigenen Firma ?
Und was sind die Betriebe ?
Was genau soll denn von den Fremdfirmen erfasst werden ?

Bitte beschreibe das mal genauer.
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am Oktober 22, 2019, 14:52:20
Die Organisationseinheiten gehören zur eigenen Firma und sind quasi Arbeitsplatzbeschreibungen, da könnte dann sowas stehen wie z.B.:
12345678 Elektriker
12435786 Mechaniker
12543876 Rangierer
12876543 Elektriker

Die Betriebe sind die Bereiche der eigenen Firma.
Aufgrund des Zahlencodes vor der Arbeitsplatzbeschreibung (Organisationseinheit) kann dann der genaue Betrieb zugeordnet werden:
z.B.
12345678  &  12435786 gehören zur 'Werkstatt'
12543876 gehört zum 'Verladung'
12876543 gehört zur 'Stromversorgung'


Die Fremdfirmen haben keine für uns relevanten Personalnummern, da wird dann Nachname, Vorname, Geburtsdatum und der Name der Fremfirma erfasst.



Ist das so verständlich?
Titel: Re: Kreuztabelle Zuordnung
Beitrag von: Vertigo am November 21, 2019, 17:47:40
nicht verständlich?
Ich weiß ehrlich gesagt gar nicht wie ich diese Ordnung hinbekommen soll.