Hallo zusammen,
ich bin ein absoluter VBA-Neuling und benötige eure Hilfe!
Ich habe ein Formular, dass mir Teilnehmer mit deren Emailadressen filtert. Nun möchte ich aber die gefilterten Emailadressen in ein weiteres Formular (Textfeld = txtEmail) übergeben. Nur wie macht man das?
mein aktueller Code sieht folgendermaßen aus, nur wird immer nur der erste Datensatz (Emailadresse) in das neue Formular übergeben.
Ich hoffe sehr ihr könnt mir weiterhelfen :)
Private Sub Befehl22_Click() 'Öffnet das Formular:Formular1 und übergibt die Werte
DoCmd.OpenForm "Formular1"
Forms!Formular1!txtEmail = Me!EmailRef & "; " & Me!Email & " "
Forms!Formular1!txtOrt = "Raum:" & " " & Me!Raum 'Raum / Ort
Forms!Formular1!txtBetreff = "Schulungstermin:" & " " & Me!Kursnummer & " " & Me!Kursbezeichnung 'Betreff
Forms!Formular1!txtBeginn = Me!Datum & " " & Me!Start 'Start
Forms!Formular1!txtDauer = DateDiff("n", [Start], [Ende]) 'Dauer
Vielen Dank
ZitatNun möchte ich aber die gefilterten Emailadressen in ein weiteres Formular (Textfeld = txtEmail) übergeben.
Was ist das genauere Ziel? Methoden leiten sich davon ab.
- Du könntest das zweite Formular mit der gleichen Datenherkunft wie im ersten ausstatten und dann einfach beim Öffnen den aktuellen Filter übergeben.
- Man könnte gleich das vorhandene Recordset hernehmen / übergeben.
- Falls eine kommagetrennte Liste der Mailadressen für eine Übergabe an eine Mail benötigt wird, würde man die unmittelbar erzeugen.
Hallo ebs17,
erstmals vielen lieben Dank für die schnelle Antwort, nur verstehe ich davon nicht wirklich viel?!
Ich vermute mal dein dritter Lösungsvorschlag könnte mein Problem lösen.
das erste Formular (frm_Teilnehmer) zeigt mir gefilterte Teilnehmer eines Schulungskurses an. In diesem Formular habe ich einen Button der ein weiteres Formular (frm_Email) öffnet und die gefilterten Daten aus dem ersten Formular (frm_Teilnehmer) übergeben soll, damit ich dann eine Email versenden kann.
Das Formular (frm_Email) dient mir nur dazu die Email nochmals zu kontrollieren und ggf. zu bearbeiten.
Den Code den ich aktuell benutze übergibt aber aus dem Datensatz der Teilnehmer (frm_Teilnehmer) nur den ersten Datensatz in das zweite Formular (frm_Email). Ich habe also mehrere Emailadressen die alle übergeben werden müssen.
Ich vermute ich benötige eine Schleife oder ein Array um die Daten zu übergeben nur hab ich keine Ahnung wie man das ganze mit VBA realisiert...
ich hoffe ich konnte mein Problem etwas besser beschreiben.
Viele Grüße
Anna
Zitat von: GAFT am Mai 30, 2017, 10:11:53
Den Code den ich aktuell benutze übergibt aber aus dem Datensatz der Teilnehmer (frm_Teilnehmer) nur den ersten Datensatz in das zweite Formular (frm_Email).
Ich vermute ich benötige eine Schleife oder ein Array um die Daten zu übergeben nur hab ich keine Ahnung wie man das ganze mit VBA realisiert...
Hallo Anna,
das Me! referenziert immer einen Datensatz, und zwar den im Formular gerade aktiven.
Um eine ganze Liste (~Recordset) zu übergeben, würde ich im aufgerufenen Formular eine Public-Methode erstellen, die ein solches Recordset als Parameter übergeben bekommt (entspricht Variante 2 vom Kollegen ebs).
Deklaration im Formular1
Public Sub UebernehmeRecordset(byref rs as Recordset)
Set Me.recordset = rs
End SubAufruf aus dem Hauptformular:
Call Forms!Formular1!UebernehmeRecordset( rs )Die Einarbeitung im Umgang mit Recordsets in VBA kann Dir aber keiner ersparen :)
Hallo,
Zitatdas Me! referenziert immer einen Datensatz,...
dem muss ein bisschen widersprechen, bzw. ein wenig korrigieren...
Me referenziert auf das aktuelle Formular-Objekt (Instanz), das gerade geladen ist und in dem der damit verbundene Code abläuft.
Insofern zeigt die Eigenschaft Me.Recordset auf die Datensätze, die im Form geladen (und evtl. gefiltert) sind.
Die Eigenschaft Me
!Steuerelementname verweist als abkürzende Schreibweise auf ein Steuerelement (Control), das gebunden sein kann und in diesem Fall den entspr. Wert aus dem aktuell angezeigten Datensatz anzeigt.
@GAFT:
Alles in Allem würde ich vorschlagen, die Vorgehensweise (Übertragen von Werten in anderes Form) nochmal zu überdenken und die Frage von ebs17 genau (im besten Fall: Aufgabe der DB, Tabellen, Tabellenaufbau, Beziehungen, Arbeitsablauf) zu beantworten. Oftmals gibt es zielstrebigere (zielführendere) Lösungen, um ans Ziel zu kommen und die ohne viel VBA (ohne das geht's ernsthafterweise aber nicht) auskommen.
Zitat von: DF6GL am Mai 30, 2017, 13:51:37
dem muss ein bisschen widersprechen, bzw. ein wenig korrigieren...
Absolut richtig. Wollte es zuerst auch so beschreiben wie Du, hatte mich dann entschieden, Begriffe wie Objekt, Instanz oder Steuerelement wegzulassen, um nicht zuviele Fachbegriffe reinzubringen.