Neuigkeiten:

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

Mobiles Hauptmenü

Datensatz aus einem Unterformular in ein Listenfeld verschieben

Begonnen von Pergus, März 26, 2011, 23:10:48

⏪ vorheriges - nächstes ⏩

Pergus

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
Win7, Office Professional 2010

DF6GL

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()  )

Pergus

#2
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
Win7, Office Professional 2010

DF6GL

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.

Pergus

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
Win7, Office Professional 2010

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]
Win7, Office Professional 2010

Pergus

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
Win7, Office Professional 2010