Hallo an Alle!
Stecke wieder mal mit einem Problemchen fest, wobei ich Eure geschätzte Hilfe benötige!!!
??? Wie kann ich einen Datensatz aus einem Unterformular in ein Listenfeld verschieben? ???
Die Struktur ist folgendermassen aufgebaut:
'frmStempelungen'
- hat ein Listenfeld ('Mitgliederliste') mit den Namen aller aktiven Mitglieder
- und ein Unterformular ('Stempelungsmitgliederliste') mit den Namen aller Mitglieder,
die an der aktuellen Stempelung (Einsatz, Übung) teilgenommen haben.
- Dazwischen befindet sich ein Button mit einem Pfeil ('<'), mit dem derzeit ein markiertes Mitglied aus dem Unterformular
('Stempelungsmitgliederliste') in das Listenfeld ('Mitgliederliste') sozusagen zurückgeschoben wird.
Mein Problem ist folgendes:
Das verschieben vom Listenfeld in das Unterformular klappt wunderbar,
da sich die Code im selben Modul befindet (mit dem Befehl: Call button_rueber_Click), und zwar,
in das von 'frmStempelungen'.
Private Sub mitgliederliste_Click()
'--------------------------------------------------------------
If errorhandling Then On Error GoTo fehlerbehandlung
Call button_rueber_Click
button_rueber.Enabled = True
button_zurueck.Enabled = False
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
Private Sub button_rueber_Click()
'--------------------------------------------------------------
'Füge ein Mitglied zu den anwesenden Mitgliedern hinzu
Dim rs As DAO.Recordset
If errorhandling Then On Error GoTo fehlerbehandlung
If IsNull(Me![Mitgliederliste]) Then
MsgBox "Bitte ein Mitglied in der linken Liste auswählen!"
Exit Sub
End If
Set rs = CurrentDb.OpenRecordset("tblMitgliederStempelungen", dbOpenDynaset)
rs.FindFirst "MitgliedsID=" + Str(Me![Mitgliederliste]) + "and StempelungsID=" + Str(Me![StempelungsID])
If rs.NoMatch Then
rs.AddNew
rs![MitgliedsID] = Me![Mitgliederliste]
rs![StempelungsID] = Me![StempelungsID]
rs.Update
Mitgliederliste.Requery
Me![Stempelungsmitgliederliste].Requery
End If
rs.Close
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
Das verschieben vom Unterformular "zurück" in das Listenfeld funktioniert derzeit über das Button, dieses soll aber ausgeblendet werden, damit die Auswahl auch ohne Button stattfinden kann (so wie das Beispiel oben!). Die Code steht aber im Modul von 'sfrmMitgliederStempelungen'.
Private Sub Mitglied_Click()
'--------------------------------------------------------------
If errorhandling Then On Error GoTo fehlerbehandlung
Forms![frmStempelungen].Controls![button_rueber].Enabled = False
Forms![frmStempelungen].Controls![button_zurueck].Enabled = True
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
Diese Code, die von Mitglied_Click() aufgerufen werden soll, steht wiederum im Modul von 'frmStempelungen':
Private Sub button_zurueck_Click()
'--------------------------------------------------------------
'Entfernt ein Mitglied aus der Liste der anwesenden Mitglieder
Dim rs As DAO.Recordset
If errorhandling Then On Error GoTo fehlerbehandlung
If IsNull(Me![Stempelungsmitgliederliste]![tblMitgliederStempelungen.MitgliedsID]) Then Exit Sub
Set rs = CurrentDb.OpenRecordset("tblMitgliederStempelungen", dbOpenDynaset)
rs.FindFirst "MitgliedsID=" + Str(Me![Stempelungsmitgliederliste]![tblMitgliederStempelungen.MitgliedsID]) + " and StempelungsID=" + Str(Me![StempelungsID])
If rs.NoMatch Then Exit Sub
rs.Edit
rs.Delete
rs.Close
Mitgliederliste.Requery
Me![Stempelungsmitgliederliste].Requery
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
??? :-[ Meine Frage: Wie kann ich also durch das klicken auf ein Mitglied in der 'Stempelungsmitgliederliste', :-[ ???
??? :-[ diesen (--> ohne Klick auf Button 'button_zurueck') automatisch in das Listenfeld 'Mitgliederliste' "hinüberschieben"? :-[ ???
Bin dankbar für jeden Tipp
Grüße aus Südtirol
Pergus
Hallo,
Du brauchst halt lediglich ein Ereignis, das zum Ausführen des Codes führt. Wenn es nicht der Klick auf einen Button sein soll, dann eben der Klick auf ein Feld des Datensatzes oder auf den Datensatzmarkierer (Form_Click() )
Hallo DF6GL,
danke nochmals für deine Hilfe. Mein Problem ist, ich habe keine Ahnung wie ich das bewerkstellige:
ZitatMeine Frage: Wie kann ich also durch das klicken auf ein Mitglied (Textfeld 'Mitglied') in der 'Stempelungsmitgliederliste',diesen (--> ohne Klick auf Button 'button_zurueck') automatisch in das Listenfeld 'Mitgliederliste' "hinüberschieben"?
Das verschieben vom Unterformular "zurück" in das Listenfeld funktioniert derzeit über das Button, dieses soll aber ausgeblendet werden, damit die Auswahl auch ohne Button stattfinden kann. Die Code steht aber im Modul von 'sfrmMitgliederStempelungen'.
ZitatPrivate Sub Mitglied_Click()
'--------------------------------------------------------------
If errorhandling Then On Error GoTo fehlerbehandlung
Call button_zurueck_Click 'Fehler beim Kompilieren: Sub oder Function nicht definiert
'Wie soll diese Code hier zur Code 'button_zurueck_Click()' springen, diese ausführen, und dann hier wieder weiterfahren?
'Entschuldige meine Ignoranz, bekomme es einfach nicht hin!!!
Forms![frmStempelungen].Controls![button_rueber].Enabled = False
Forms![frmStempelungen].Controls![button_zurueck].Enabled = True
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
Diese Code, die von Mitglied_Click() aufgerufen werden soll, steht wiederum im Modul von 'frmStempelungen':
ZitatPrivate Sub button_zurueck_Click()
'--------------------------------------------------------------
'Entfernt ein Mitglied aus der Liste der anwesenden Mitglieder
Dim rs As DAO.Recordset
If errorhandling Then On Error GoTo fehlerbehandlung
If IsNull(Me![Stempelungsmitgliederliste]![tblMitgliederStempelungen.MitgliedsID]) Then Exit Sub
Set rs = CurrentDb.OpenRecordset("tblMitgliederStempelungen", dbOpenDynaset)
rs.FindFirst "MitgliedsID=" + Str(Me![Stempelungsmitgliederliste]![tblMitgliederStempelungen.MitgliedsID]) + " and StempelungsID=" + Str(Me![StempelungsID])
If rs.NoMatch Then Exit Sub
rs.Edit
rs.Delete
rs.Close
Mitgliederliste.Requery
Me![Stempelungsmitgliederliste].Requery
Exit Sub
fehlerbehandlung:
MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical
End Sub
Gruß, und danke im Voraus
Pergus
Hallo,
der Code hinter "Mitglied_Click()" steuert doch nur die Sichtbarkeit von Buttons. Der ist anschließend überflüssig.
Anstatt "Private Sub button_zurueck_Click()" schreib swn Code einfach als:
Private Sub Form_Click()
im Unterformular(!). Evtl. müssen die Formular-/Textfeldverweise entspr. abgeändert werden, weil der Code im Unterform abläuft.
Danke DF6GL,
habe es gleich mal getestet, funktioniert aber leider nicht!
Zitatder Code hinter "Mitglied_Click()" steuert doch nur die Sichtbarkeit von Buttons. Der ist anschließend überflüssig.
...soll nur die letzte "Bewegung" darstellen, wohin ein Mitglied "verschoben" wurde!
Es soll schon das Textfeld 'Mitglied' im Unterformular 'Stempelungsmitgliederliste' angeklickt werden, damit folgendes passiert:
- Das angeklickte Mitglied verschwindet aus dem Unterformular 'Stempelungsmitgliederliste'
- Das Button 'button_zurueck' zeigt optisch '<' die Richtung an, wohin das Mitglied verschoben wurde!
Hast Du eine Idee?
Danke im Voraus
Pergus
Hallo meine Access-Freunde!!!
Kann mir niemand helfen? :(
Lade ein Bild ind der Hoffnung, der Sache ein wenig Klarheit zu verschaffen!
Danke im Voraus
Pergus
[Anhang gelöscht durch Administrator]
Hallo Leute!
Ich hab´s!
Anstatt
Call button_zurueck_Click
heißt es
Forms!frmStempelungen.button_zurueck_Click.Click
Danke trotzdem für die Bemühungen!
Gruß
Pergus