Datenquelle eines Formulars

Liebe/-r Experte/-in,
ich habe eine Datenbank in Access 2003 erstellt und stehe nun vor einem vermeintlich kleinen Problem, das ich dennoch nicht lösen kann.

Ein Endlosformular (frmListe) greift als Datenherkunft auf eine Abfrage (reqListe) zurück.
Die Abfrage enthält (neben dem Schlüssel) eine Spalte „Name“ und eine Spalte „Initialen“.

In dem Formular soll nun ein Textfeld den Inhalt nach dem Schema „Name (Initialen)“ enthalten. Da das Feld „Initialen“ aber auch leer sein kann muss dies zunächst abgefragt werden.
So sah mein Versuch aus:
=Wenn(Nz([reqListe]![Initialen];’’)’’;[reqListe]![Name]+’ (’+[reqListe]![Initialen]+’)’;[reqListe]![Name])

Die Fehlermeldung lautet: „Das Objekt entält nicht das Automatisierungsobjekt reqListe.“

Was mache ich falsch? Wie mache ich es richtig?

Gruß,
Kevin

Hallo Kevin,
ersetze die Ausrufezeichen durch Punkte.

Ein Hinweis: den Feldnamen „Name“ möglichst vermeiden!
Denn alle Elemente haben die Eigenschaft „Name“.
Das führt häufig zu Fehlinterpretationen.

Gruß aus der Eifel
Udo

Hallo Kevin,

ich habe dein Problem noch nicht ganz verstanden, Wahrscheinlich, weil ich die Notation „Name(Initialen)“ nicht richtig aufschlüsseln kann.

Mein Deutungsversuch ist folgender - in Worten: Zeige im Textfeld den Namen, der zu einer bestimmten Initiale gehört.
Ist das richtig verstanden?

Wenn ja, dann würde ich folgendes machen: Eine Abfage bauen, die alle Sätze enthält, wo die Initialen nicht leer sind, und ausgeben die Felder ‚Initialen‘, den zugehörigen ‚Namen‘ und andere Felder (hier nicht behandelt).
Eine solche Abfrage enthält Sätze mit gefüllten Initialen und nur diese Sätze(!). Namen ohne Initialen werden nicht angezeigt.

Wenn’s das war, freue ich mich. Wenn ich dich falsch oder gar nicht verstanden habe, dann bitte erklären, am besten mit einigen Beispielsätzen.

Gruß und viel Erfolg!
Tronicrot

Hallo Kevin,

mach Dir das Leben nicht so schwer und trage als Kriterium in der Abfrage in das Feld Initialien ein:
IstnichtNull. Damit werden nur die Datensätze angezeigt in denen etwas eingetragen ist.

Gruß
Reinold

Abfrage (reqListe) enthält (neben dem Schlüssel) eine Spalte „Name“ und eine Spalte „Initialen“.
In dem Formular soll nun ein Textfeld den Inhalt nach dem
Schema „Name (Initialen)“ enthalten.
=Wenn(Nz([reqListe]![Initialen];’’)’’;[reqListe]![Name]+’
(’+[reqListe]![Initialen]+’)’;[reqListe]![Name])
Was mache ich falsch? Wie mache ich es richtig?

Hallo Kevin,
zunächst der Hinweis, dass Textfelder nicht durch „+“ zusammengeführt werden sollten, sondern mittels „&“-Zeichen. Das könnte schon die Fehlermenge reduzieren.

Anonsten wird m. E. der Verweis auf die Abfrage „[reqListe]!..“ das eigentliche Problem darstellen.
Du kannst die zugrundeliegende Abfrage im Formular nicht über den Tabellen/Abfragenamen ansprechen, da die Abfrage so nicht adressierbar ist.
Nutze einfach nur den Feldnamen in der Abfrage, das löst MSAccess automatisch auf. Alles andere bedarf der vollständigen Syntax mit allen Verweisen.

Daher würde ich die Syntax wie folgt ändern:

=[NAME] & wenn( (Nz([Initialen];"") = „“; „“; „(“ & [Initialen] & „)“ )

Gruß
Ulrich St.

Grüß Gott,

Ein Endlosformular (frmListe) greift als Datenherkunft auf
eine Abfrage (reqListe) zurück.
Die Abfrage enthält (neben dem Schlüssel) eine Spalte „Name“

das Wort „Name“ ist ein reservierter Begriff in Access und sollte niemals für Feldbezeichnungen etc. verwendet werden!

und eine Spalte „Initialen“.

In dem Formular soll nun ein Textfeld den Inhalt nach dem
Schema „Name (Initialen)“ enthalten. Da das Feld „Initialen“
aber auch leer sein kann muss dies zunächst abgefragt werden.
So sah mein Versuch aus:
=Wenn(Nz([reqListe]![Initialen];’’)’’;[reqListe]![Name]+’
(’+[reqListe]![Initialen]+’)’;[reqListe]![Name])

Die Fehlermeldung lautet: „Das Objekt entält nicht das
Automatisierungsobjekt reqListe.“

Was mache ich falsch? Wie mache ich es richtig?

wo ist die Wenn - Bedingung eingetragen?

Richtig wäre: in der Abfrage

Grüße aus München
Wolfgang
(Netwolf)

Hallo Kevin,

pack auf das Formular ein ungebundenes Textfeld.
Vom Prinzip hast Du das schon, wo Du Deine Wenn-Anweisung reingepackt hast. Die nummst Du nur wieder raus.
Zusätzlich packst Du noch die beiden Felder Name und Initialen auf das Formular mit drauf. Diese Felder machst Du aber unsichtbar (Visible = false).

Nun gibt es auf der Form ein Ereignis (Current).
Hier packts Du dann ein bißchen Code rein.
Ungefähr so:

if nz(Feld_Init,"") = „“ then
Feld_Anzeige = Feld_Name
else
Feld_Anzeige = Feld_Name & " (" & Feld_Init & „)“
endif

Gruß
Ingo