Juli 02, 2022, 18:51:55

Neuigkeiten:

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


Veranstaltung mit "Auswahlfeld von Personal"

Begonnen von Luggasch, März 31, 2022, 10:54:09

⏪ vorheriges - nächstes ⏩

Luggasch

Hallo zusammen,

ich stehe vermutlich schwer auf dem Schlauch, aber ich versuche seit 3 Tagen ein einfaches Formular zu erstellen.
Ich hatte das letzte mal vor über 12 Jahren mit Access gearbeitet und i-wie scheinbar alles vergessen.
Ich versuche das hier gerade mal vereinfacht darzustellen/zu erklären.

Folgendes Problem:
Ich habe eine einfache Tabelle "Veranstaltungen"
Diese Tabelle enthält ID als Schlüssel. Spalten sind "Name" "Datum"

Ich habe eine zweite Tabelle "Personal" mit vordefinierten Personen

Wie bekomme ich das hin, dass ich ein Formular "Veranstaltung" habe, wo ich alle Personen angezeigt bekomme und diese nur noch per Kreuzchen setzen (oder ähnlich), zur Veranstaltung hinzufüge bzw. bestätige und sobald ich neuen Datensatz (für neue Veranstaltung) wieder erneut alle Personen habe, die ich ankreuzen kann für die teilnahme.

Ich hoffe Ihr könnt mir aus meiner peinlichen Misere helfen.

Gruß
Lukas

MzKlMu

Hallo,
da fehlt noch eine 3. Tabelle um der Veranstaltung die entsprechenden Personen zuzuordnen.
Das nennt sich dann n:m Beziehung die hier aus zwei 1:n Beziehungen besteht.
Im jetzigen Formular (=Hafo) zeigst Du dann nur die Daten der Veranstaltung.
Dann braucht es auch noch ein weiteres Formular das als Unterformular (Ufo) in das jetzige Formular (HaFo) eingebunden wird. Hafo und Ufo sind über die Schlüsselfelder zu verknüpfen.
Dann siehst Du im Hafo die Veranstaltung und im Ufo werden die Personen per Kombifeld ausgewählt.
Alles relativ einfach und nur mit den Standardfunktionalitäten von Access und bis hierher alles ohne VBA Code.

Gruß
Klaus

Luggasch

Ok, vielen Dank schon mal dafür. Ich erinnere mich wieder ein wenig und das ganze scheint auch gerade gut zu funktionieren.

Aber nächstes Problem. Du schreibst, dass ich die Personen per "kombifeld" auswählen kann.

Ich hätte aber gerne, dass ich ALLE personen aus meiner Personaltabelle direkt angezeigt bekomme und nur noch ein Klick bestätigen muss ohne ein Feld zu öffnen und die Person raus zu suchen.

DF6GL

Hallo,

dann musst Du statt dem Kombi ein ungebundenes(!) Listenfeld mit erweiterter Mehrfachauswahl hernehmen und nach dem Kennzeichnen (Markieren) der betroffenen Personen mittels einer Button-Klick-Ereignisprozedur die Personen-IDs (und der Veranstaltungs-ID) in jeweils einen neuen DS entweder per SQL--Statements oder per Recordset einfügen. .

Luggasch

Das habe ich befürchtet.
Ich bin leider nicht gut in VBA und SQL usw.
Ich konnte mir bereits die letzten Tage ergooglen wie ich per Schaltfläche die markierten Objekte in eine Tabelle übertragen kann, allerdings nicht wie der Befehl ist, um noch zusätzlich das Datum des aktuellen Datensatzes mitzunehmen.

Private Sub Befehl38_Click()
Dim itm As Variant
Dim strSQL as String
For Each itm in Me!Liste36.ItemSelected
strSQL = "INSERT INTO Teilnahmen (Teilnehmer) VALUES (" & Me!Liste36.ItemData(itm) & ")"
DBEngine(0) (0).Execute strSQL, dbFailOnError
Next itm
End Sub

Hier kommt aber aktuell ein Fehler dass das in Beziehung stehen muss. wobei die Beziehungen gemacht sind.

Aber wie gesagt, da ich eine 0 in SQL und VBA bin, bzw nur Grundstrukturen mal gelernt habe weiß ich nicht wie ich das verknüpfe oder sonst was.

Aber ich will mich nicht um einen Code hier im Forum erschleichen. Werde dann wohl mit einem Kombinationsfeld oder manuellen Eintragungen leben müssene.

Dennoch vielen Dank euch schon mal für die Antworten.

Gruß
Lukas

DF6GL

Hallo,

poste mal den Screenshot des Beziehungsfensters mit den sichtbaren Tabellenfeldern, oder besser noch, lade die DB hier hoch, dann kann ich das prinzipiell einbauen.


So ähnlich sollte es aussehen:

.
.
strSQL = "INSERT INTO Teilnahmen (VeranstaltungsID, TeilnehmerID) VALUES (" & Me!VeranstaltungsID & "," & Me!Liste36.ItemData(itm) & ")"
Currentdb.Execute strSQL, dbFailOnError
.
.



Wozu brauchst Du ein Datum in tblTeilnahmen? Das Veranstaltungsdatum ist schon in tblVeranstaltungen erfasst.


Luggasch

Jaaaa, Mega, dankeschön.
Die Veränderung die du mir geschickt hast klappt.
Also mit Me! steuere ich meinen aktuellen Datensatz an.

Das war alles was ich benötigt habe. Vielen Vielen Dank.

Alles weitere wären noch Feinheiten, die ich erstmal noch nicht unbedingt einbauen muss.
Sollte ich das ganze noch verfeinern müssen, könnte es sein dass ich noch mal Fragen hier rein stelle. Aber bis dahin hoffe ich mich ein bisschen besser in SQL eingelesen zu haben.

Vielen Merci noch mal

Gruß
Lukas

Beaker s.a.

Hallo Lukas,
ZitatAlso mit Me! steuere ich meinen aktuellen Datensatz an.
Nein!
"Me" ist eine Referenz auf das aktuelle Klassenmodul, heisst hier: das
Formular. Darüber referenzierst du die Formularfelder, die in dieser
Schreibweise per Standardeigenschaft ".Value" den Wert des gebundenen
Tabellenfeldes zurückgeben; - in diesem Fall an die SQL-Anweisung.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.