Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

gefilterte Daten aus Formular an weiteres Formular übergebn

Begonnen von GAFT, Mai 30, 2017, 09:12:54

⏪ vorheriges - nächstes ⏩

GAFT

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

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

GAFT

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

Wurliwurm

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 Sub


Aufruf aus dem Hauptformular:
Call Forms!Formular1!UebernehmeRecordset( rs )

Die Einarbeitung im Umgang mit Recordsets in VBA kann Dir aber keiner ersparen  :)

DF6GL

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.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Wurliwurm

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.