Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Suche mit Teilen der Personalnummer

Begonnen von Vertigo, März 18, 2019, 16:48:23

⏪ vorheriges - nächstes ⏩

Vertigo

Moin,

in der Suche fand ich jetzt nichts was mir mein Problem gelöst hätte.

Also ich erstelle gerade eine Art Terminplaner für Aktionen die hier im Betrieb quartalsweise veranstaltet werden.

Jetzt habe ich ein paar Punkte die ich zu lösen versuche:


1.
Ich habe ein Formular (FrmGA), welches meine bereits eingetragenen Termine in einer Liste nach Quartal & Datum anzeigt.

Habe jedoch Probleme beim Einspeichern der Anmeldungen.

Wenn jetzt jemand anruft und einen Termin für diese Aktion mit uns abspricht, dann würde ich gerne ein Formular öffnen lassen, welches mich natürlich den Tag/ Die Zeit wählen lässt und dazu natürlich die Person mit diesem Termin verknüpfen will.
Nun ist es so, dass (fast) alle eine eindeutige Personalnummer haben, jedoch kennen die Mitarbeiter meist nur die letzten 4-5 Stellen der eigentlich 8-stelligen Nummer. Ich würde jetzt gerne eine Suchfunktion einrichten, sodass ich z.B. die Zahl "388" eingebe und er mir dann die möglichen Personalnummern anbietet, welche z.B.: "00000388", "00100388", "00040388", [...] sein könnten. (Natürlich jeweils mit dazugehörigen Namen)

[Screenshots im Anhang]

2.
zweites Problem welches sich mir stellt ist, dass es selten auch Leute gibt, die keine Personalnummer bei uns besitzen und dennoch bei der Aktion teilnehmen.

Ich habe aus diesem Grund nicht die Personalnummer als Primärschlüssel angelegt, sonder noch eine 'MAID' angelegt, was lediglich eine fortlaufende Zahl ist.

Mein Ziel ist jetzt, dass die Mitarbeiter ohne Personalnummer automatisch beim Speichern des Termins eine eigene MAID bekommen, also einfach als neuer Eintrag an das Ende der Mitarbeiterliste gelangen.

3.
Das Problem welches jetzt noch zusätzlich entsteht ist: Es wird zwar eine Mitarbeiterliste in Access hinterlegt sein, aber diese muss regelmäßig aktualisiert werden. Kommen also Mitarbeiter dazu, dann kann es sein, dass es die Nummern "28" und "30" vorher schon gab. Aber die "29" bisher frei war und mit der nächsten Aktualisierung ist plötzlich auch die "29" belegt. Dadurch würde sich mein ganzes MAID- Nummern System verschieben. Hat jemand eine Lösung dafür?

Ich dachte daran, dass beim Aktualisieren nach Duplikaten gesucht und verglichen wird:
dh.:
Die aktuelle Liste enthält "28" und "30"
ich aktualisiere die Daten
Access stellt fest, dass nur "29" neu ist und vergibt dann eine neue MAID, sprich, setzt den neuen Namen an das Ende der Liste.

Ich habe aber keine Ahnung wie das funktionieren soll.


Ich hoffe ich konnte mich halbwegs verständlich ausdrücken, würde mich freuen wenn mir jemand unter die Arme greifen könnte.

DF6GL

Hallo,


1)

Was ist das für ein Steuerelement im "Bitte auswählen"-Formular?


Falls es sich um ein Listenfeld handelt, dann könnte ein Lösung sein:

Listenfeld in ein Kombifeld umwandeln.


Zusätzliches ungebundenes Textfeld anlegen ("txtSuche") mit folgender Ereignisprozedur ("Bei Änderung"):
(Luftcode)

ZitatSub txtSuche_Change()
Me!cmbSuche.Rowsource = " Select MAID, PersNr, Vorname, Nachname from tblMitarbeiter  " & _
                                        " Where PersNr like '*" & Me!txtSuche.Text & "*' order by Nachname"
End Sub


Die Kombifeldliste zeigt nun alle vorher vorselektierten Personen an.

Trägt man in das Kombifeld eine PersNr (Datentyp TEXT!)  ein, die es noch nicht gibt, kann mit beim Ereignis "Bei nicht in Liste" eine neue Person angelegt und gespeichert werden, z. B. mit (dem)  einen Mitarbeiter-Formular:

Sub cmbSuche_NotInList(NewData As String, Response As Integer)
DoCmd.OpenForm "frmMitarbeiter", , , , acFormAdd, NewData
Response = acDataErrAdded
End Sub


Das frmMitarbeiter erhält eine Ereignisprozedur "Beim Laden":

ZitatSub Form_Load()
If not Isnull(Me.Openargs) then
   Me!PersNr.DefaultValue = """" & Me.Openargs & """"
End If

End Sub



3) Es ist unerheblich, welchen Wert die MAID erhält.   Die Sortierung der Mitarbeiter"liste" wird durch Angabe eines Sortierfeldes und durch "aufsteigend" oder "absteigend" bestimmt.

Vertigo

#2
Ich habe jetzt nach einigem ausprobieren mich für einen Weg entschieden.

Das Problem ist, dass ich die Beziehung meines Hauptformulars (FrmGA) ändern musste.

Kann mir da mal jemand helfen?

Ich hätte es gerne, dass die Ergebnisse, die ich durch 'Quartal' und 'Datum' filtere dann in Form einer Liste erscheint. Der Bezug sollte die MAID sein, jedoch kann ich keine Beziehung herstellen, da (so glaube ich) es daran liegt, dass die MAID ein AutoWert ist.

Wie kann ich das trotzdem erreichen?

Ich habe meine aktuelle Version meiner Testdatenbank angehängt (4-) und dazu einfach eine ältere um deutlich zu machen was ich eigentlich vorhabe (2).

Gruß


Ps:
Zitat von: DF6GL am März 20, 2019, 12:18:01
3) Es ist unerheblich, welchen Wert die MAID erhält.   Die Sortierung der Mitarbeiter"liste" wird durch Angabe eines Sortierfeldes und durch "aufsteigend" oder "absteigend" bestimmt.

Das ist nicht ganz korrekt, zumindest meine ich das anders.
Meine Mitarbeiter Liste wird durch einen Excel-Listen Import aktualisiert und würde mich demnach die ganzen Nummern überschreiben, inklusive der Reihenfolge, das wäre aber Kontraproduktiv.

Also, so dachte ich, wäre es sinnvoll, wenn Access beim Import kontrolliert ob ein Eintrag bereits vorhanden ist, wenn ja, dann wird der nicht importiert, falls noch keiner vorhanden ist, dann wird dieser an das Ende der Liste neu eingefügt.

Ähnlich wie ein Doublettenauschluss.

MzKlMu

Hallo,
die Beziehungen in der DB (4) sind falsch. Es ist auch keine referentielle Integrität eingestellt, was für eine Datenbank unerlässlich ist.
Und im Beziehungfenster fehlt die Tabelle mit den Aufgaben.

Erkläre mal den Zusammenhang zwischen der Tabelle GAInfos und GATermine ?
Gruß Klaus

Vertigo

Ja, das durfte ich auch feststellen, dass meine Beziehungen falsch sind. Aber wie verknüpfe ich die richtig?

die einzigartigen Nummern der Mitarbeiter werden in 'TblAlleMitarbeiter' unter 'MAID" festgehalten.
Demnach sollen sich dann auch die Aktionen darauf beziehen.
Ich kann die Personalnummern nicht verwenden, da auch Mitarbeiter teilnehmen können, die keine Personalnummer haben.



Die Tabelle Aufgaben ist nur eine Denkstütze, hat nichts mit der Datenbank an sich zu tun.



Es gibt jedes Quartal Aktionen, an denen die Teilnehmer mitmachen können, die Infos darüber werden in 'GAInfos' festgehalten.
Zu den Aktionen müssen sich die Teilnehmer anmelden, was in 'GATermine' festgehalten wird.

MzKlMu

Gruß Klaus

Vertigo

Zitat von: MzKlMu am März 21, 2019, 17:11:22
Hallo,
so wie im Bild.

Ich bekomme angezeigt: "Für Beziehungen ist dieselbe Anzahl an Feldern mit denselben Datentypen erforderlich."

Was mache ich falsch?

MzKlMu

Hallo,
die Felder die Du verbinden willst haben nicht den gleichen Datentyp.
Die Fremdschlüsselfelder (..._F) müssen Zahl, Longintger sein.
Gruß Klaus