Neuigkeiten:

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

Mobiles Hauptmenü

Formular "vergisst" Datenquelle aus Abfrage

Begonnen von rene.hundert, November 23, 2025, 18:00:52

⏪ vorheriges - nächstes ⏩

rene.hundert

Hallo in die Runde,

nachdem ihr mir bei den letzten Problemen so super geholfen habt, würde ich gerne mein nächstes Problemchen beschreiben.

Datenbank mit Tabelle "Adressen". Auf diese Tabelle greifen ich sowohl als Empfänger, als auch als Absender zu. (leider mit Mehrfachauswahl, ab das geht jetzt erstmal auch nicht anders)

Lösung: Mit den beiden Abfragen qryEmpfänger und qryAbsender ziehe ich mir jeweils die Adressdaten wie z.B. den Name.

Nun habe ich ein Formular, mit welchem ich E-Mails versenden will. Hier zeige ich mir natürlich den Absender- und den Empfänger-Namen.

Die Felder haben dann im Steuerelementinhalt:
qryAbsender.tblAdressen.Adressat und qryEmpfänger.tblAdressen.Adressat

Leider ändert er beim erneuten Öffnen immer den Steuerelementinhalt in beiden Feldern in:
tblAdressen.Adressat.Adressat

und "vergisst" somit den Bezug zur Abfrage. Ausgegeben wird dann natürlich ein Fehler #Name?

Vielen Dank für eure Hilfe!

Grüße René

Knobbi38

Hallo René,

das Formular "vergisst" mit Sicherheit keine Datenquelle; auch ist der Zugriff mit "qryAbsender.tblAdressen.Adressat" sehr ungewöhnlich, wenn nicht sogar vollkommen falsch.

Zunächst solltest du für die Steuerelemente einen anderen Bezeichner vergeben als den gebundenen Feldnamen aus der Tabelle/Abfrage. Gängige Namenskonventionen verwenden z.B. für Textboxen den Präfix "txt" und für Komboboxen "cbo".

Wenn du das erledigt hast, solltest du dann mal genauer beschreiben, was "qryAbsender" eigentlich ist und wie du auf die Abfrage zugreifst.

Knobbi38

rene.hundert

#2
Servus,

ich habe in der tblVersandartikel die Mehrfachauswahl Empfänger und Absender (im Hintergrund ergeben sich dann die Werte Empfänger.Value und Absender.value) beide greifen als Quelle auf tblAdressat zu.

Um mir jetzt in einem Formular zum Beispiel die E-Mail-Adresse sowohl des Empfängers, als auch des Absender anzeigen zu lassen, habe ich die beiden Abfragen qryEmpfänger und qryAbsender erstellt.

Nun habe ich wiederrum eine qryEmailVersand erstellt, in welcher ich natürlich nach der Versandart E-Mail filtere und mir natürlich auch Empfänger und Absender mit deren E-Mail-Adressen anzeigen lassen will.

Die qryEmailVersand funktioniert auch einwandfrei. Sie zeigt mir die Felder tblAdressen.Adressat sowohl der Tabelle qryAbsender, als auch der Tabelle qryEmpfänger an.

Die Namen habe ich angepasst mit ctlAbsenderEmail und ctlEmpfängerEmail

Vielen Dank schon einmal dafür



Knobbi38

#3
Hallo René,

kannst du eine Beispiel-DB mit ein paar Testdaten und dem von dir beschriebenen Formular hochladen, damit man das nachvollziehen kann?

Im Übrigen solltest du auf solche Nachschlagefelder in Tabellen verzichten und diese durch "normale" Tabellen mit einer 1:N Beziehung ersetzen. Mit den Nachschlagefeldern baut Access auch so eine Struktur auf, versteckt sie aber und das Ganze wird damit eigentlich nur schwieriger zu handhaben. Besser gleich "richtig" machen.


Knobbi38

Beaker s.a.

Hallo Rene,

Bevor du weitermachst, beherzige Ulrichs Hinweis bezügl. Nachschlagefeldern.
Mach das mit 1:n Beziehungen, da hast du bessere Kontrolle.
Wie viele Absender hast du denn überhaupt?
Ein Kennzeichen für Absender/Empfänger hast du ja scheinbar, sonst könntest
du ja keine zwei getrennte Abfragen haben.
Ohne mehr zu wissen, lässt sich schlecht helfen. Ich würde als erstes es wohl
mit zwei UFo versuchen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

rene.hundert

Servus in die Runde,

ich habe 100 Adressen. Da die Datenbank zu Beginn der kommenden Woche laufen muss, habe ich die Tabelle Adressen kopiert und für die Empfänger ein E angehängt (AdressenE).

Das ist zwar aus meiner Sicht nicht sauber, da ich ja dann zwei Datenbestände habe, die Mehrfachauswahl jetzt aber zurückzudrehen erscheint mir im Moment aufwendiger.

Man lernt ja dazu und ursprünglich habe ich Empfänger und Absender ja auch mit jeweils einem UFo erfasst und dann kam ich auf eine scheinbar bessere Idee.

Aber danke für eure Hilfe

Bitsqueezer

Hallo René,

warum eine Extratabelle? Man kann Daten durch ein Zusatzfeld einfach typisieren. "A" für Absender, "E" für Empfänger, dann geht alles in eine Tabelle.

Davon ab, daß man die Daten grundsätzlich so organisieren sollte, daß sie nur ein Objekt beschreiben, aber nicht ihren Verwendungszweck.

Eine Person hat Name, Vorname, Geburtsdatum z.B.
Alles Attribute, die fester Bestandteil einer Person sind.
Eine Person hat eine Mailadresse. Das ist aber kein Bestandteil der Person. Sie muß keine Mailadresse haben, sie kann auch mehr als eine haben. Eine Mailadresse gehört also nicht in eine Personentabelle.

Eine Mailadresse kann zum Senden und Empfangen von Mails verwendet werden. Es gibt also keine "Empfängermailadresse" oder "Absendermailadresse". Es gibt eine Mailadresse oder eine Liste von Mailadressen, die einer Person oder einer Firma zugeordnet werden kann. Also gehört zu einer Mailadressentabelle nur die Mailadresse, ansonsten nur Attribute, die mit der Mailadresse direkt zu tun haben. Da fallen mir spontan nicht wirklich viele Attribute ein, etwa ein "Aktiv"-Ja/Nein-Feld.

Die Person/die Firma braucht nun aber immer noch eine Mailadresse, bis jetzt gibt es nur zwei Objektbeschreibungstabellen, komplett getrennt voneinander. Also brauchst Du eine Verbindungstabelle dazwischen, die Dir die Zuordnung ermöglicht. Das ist die m:n-Tabelle, die Du jetzt über mehrwertige Felder künstlich (und schwer handhabbar) eingebaut hast.
Die besteht aus der ID der Person und der ID der Mailadresse.
Damit kannst Du jede Mailadresse jeder Person zuordnen bzw. einer Person beliebig viele Mailadressen.

Hast Du eine Sammel-Mailadresse, wie in Firmen oft üblich, können viele Personen die gleiche Mailadresse erhalten.
Das ist in mehrwertigen Feldern nicht möglich: Die erlauben Dir nur, mehrere Unterdatensätze in einem Datensatz zu speichern, aber im nächsten Datensatz mußt Du die Liste erneut aufbauen.

Mit Adressen ist es ebenso: Sie beschreiben einen Ort, eine Adresse, aber sie sind neutral, keiner Person und keiner Firma zugeordnet allein durch die Adresse - eine Mietwohnung kann morgen einen anderen Mieter haben, ein Haus kann verkauft werden, eine Person kann umziehen - usw.
Die Adresse selbst ändert sich dadurch nicht.

Erst die Zuordnungstabelle m:n macht die Adresse zu einem Zeitraum zugehörig zu einer Person oder einer Firma. Den Zeitraum kann die Zuordnungstabelle verwalten. Außerhalb dieses Zeitraumes gehört die Adresse nicht zu der Person.

Wenn Du immer so vorgehst, Daten in kleinen Einheiten in einzelne Tabellen aufzuteilen, hast Du am Ende viel weniger Kopfschmerzen.

Je frühzeitiger Du das Datenmodell korrekt einrichtest, desto weniger Probleme hast Du am Ende. Wenn Deine jetzige Lösung unbedingt am Mo. laufen soll, so what. Dann ist der nächste Schritt, das Datenmodell danach zu korrigieren und dann die Daten aus der bereits verwendeten Datenbank zu übertragen, was erst einmal Arbeit machen wird.

Wenn Du das gleiche in einem Jahr probierst, in dem schon alles Mögliche "schräge" angeflanscht wurde, werden die Probleme immer größer und die Lösungsmöglichkeiten immer schwieriger.

Gruß

Christian