PDA

Vollständige Version anzeigen : feldwerte in memofeld


flora
07.06.2003, 08:23
Hallo,
bin anfängerin mit access und habe folgende frage: In meiner datenbank gibt es ein memofeld mit einträgen wie: „Hilfe und beratung für frauen, schuldnerberatung, usw.
Für ein textfeld sind es zu viele zeichen. Wenn ich mit dem formularbasierten filter filtern will zeigt er mir statt der feldwerte immer nur die optionen „Ist null“ bzw. „Ist nicht null“ an. Das ist wahrscheinlich normal, weil es ein memofeld ist, oder?
Aber ich hätte halt gerne, dass er mir die feldwerte anzeigt, damit ich nicht immer die begriffe eintippen muss. Gibt es dafür eine möglichkeit?
Oder gibt es vielleicht die möglichkeit, eine feldwertliste für dieses feld anzulegen (ein kombifeld oder ein listenfeld), wo ich die entsprechenden werte eingebe, die mir dann angezeigt werden und nach denen ich filtern kann?
Dieses feld dürfte dann aber nicht meine ursprünglichen einträge in der tabelle verändern!
Bin dankbar für jeden tipp.

Nouba
07.06.2003, 08:33
mit Memofeldern steht dieser Komfort leider nicht zur Verfügung. Vielleicht reicht es Dir, nur den Anfang anzuzeigen. Dazu müßte die DB aber genauer beschrieben werden.

Wenn der Eintrag im Memofeld durch Kommata abgetrennte, weitere Attribute zum Hauptdatensatz abbildet, wäre es vielleicht sinnvoll, eine neue Tabelle für den Inhalt anzulegen und für jedes Einzelattribut im Memo einen Datensatz in der neuen Tabelle anzulegen, der einen Fremdschlüssel auf die Haupttabelle enthält. Die Darstellung der Inhalte könnte in einem Unterformular, eingebettet in das Hauptformular, dargestellt werden.

Um mehr zu sagen, solltest Du die Tabelle inhaltlich beschreiben und vielleicht einige verschiedene Memo-Inhalte komplett zeigen oder die DB mit dieser Tabelle gezippt im Anhang hochladen.

flora
07.06.2003, 09:55
Hallo,
danke für deine schnelle antwort.
nein, den anfang zu zeigen reicht leider nicht.
Inhalte von memos sehen z.B. so aus:
Beratung alleinerziehender Mütter und Väter, Beratung für Kinder und Jugendliche, Familienberatung, Hilfe und Beratung für Frauen, Gruppenarbeit, Jugendberatung, Vermittlung von Selbsthilfegruppen, Sozialberatung,

oder so:

Ehe-, Familien- und Lebensberatung, Hilfe und Beratung für Frauen, Gruppenarbeit, Beratung für Kinder und Jugendliche, Vermittlung von Selbsthilfegruppen, Sozialberatung, Beratung alleinerziehender Mütter und Väter,

Außer diesem memofeld gibt es einige textfelder mit „name der einrichtung“, „Zielgruppen“, „Öffnungszeiten“, „Bürozeiten“ etc.

Würde auch gerne einen datensatz hier einfügen zur anschuung, aber das ist ein weiteres problem dass ich habe, dass immer nur einige felder sichtbar sind und der rest abgeschnitten ist.

Nouba
07.06.2003, 11:25
das schaut für mich so aus, als könne man meine ersten Vorschlag realisieren.

Wenn die vielen Einzelattribute in den Memos alle durch ein gleiches Zeichen abgetrennt werden - bei den Daten macht es den Anschein, dass das Komma unser Kandidat ist - könnte man in einer Abfrage mit der Funktion Split (ab A2k) oder einer entsprechenden Ersatzfunktion das Memofeld in viele Einzelfelder zergliedern. Diese Funktion ist in sovielen Spalten aufzuführen, wie maximal Einträge im Memofeld auftreten.

Wichtig ist hierbei, dass nebenbei nur noch der Primärschlüssel der Haupttabelle in der Abfrage auftreten darf.

Da wir die Einträge aber nicht nebeneinander, sondern untereinander wollen, kann jetzt eine Union-Abfrage jeweils zusammengesetzt über das Schlüsselfeld aus der Haupttabelle und einer Spalte. Als Kriterium wird bei der Spalte Ist Nicht Null eingetragen. Im Ergebnis sollte dann für jeden Datensatz der Haupttabelle, die einen Eintrag im Memofeld hat, ein Datensatz mit nur einem Attribut vorhanden sein.

Ist das Ergebnis der Union-Abfrage zufriedenstellend und korrekt (vielleicht müßen die Resultate noch von Leerzeichen werden, ich würde mit der Len-Funktion noch prüfen, wieviel Zeichen die längste Zeichenkette benötigt), kann die Auswahlabfrage in eine Tabellenerstellungsabfrage umgewandelt werden, indem der Abfragetyp geändert wird (Kontextmenü in der Abfrage). Du wirst dann aufgefordert einen Tabellennamen einzugeben, der die Sinnverwandtschaft zwischen der Haupttabelle und dem bisherigen Memofeldnamen widerspiegelt.

Falls später Bezug auf diese Tabelle genommen werden soll, ist es vorteilhaft, einen Primärschlüssel dafür zu haben. Da sowieso noch Änderungen an der Tabelle anstehen, wäre es jetzt sinnvoll, zuerst die Daten in der Tabelle zu lösschen. In der Entwurfsansicht stellen wir jetzt die Textfeldlänge auf die zu erwartende maximale Länge ein. Dann geht es an den Primärschlüssel. Nimm dafür idealerweise ein Autowertfeld und benenne es in SinnwidergabeID um. Im Register Nachschlagen könnte jetzt schon eine Ansicht (Abfrage) für ein Kombifeld eingestellt werden.

Jetzt satellen wir im Beziehungsfenster die referentielle Integrität ein, indem aus der Hauptrtabelle das Primärschlüsselfeld auf das Fremdschlüsselfeld der neuen Tabelle gezogen wird.

Zurück zu den Abfragen, wandeln wir die Tabellenerstellungsabfrage erneut um und basteln daraus eine Anfügeabfrage. Stellen eventuell korrigierte Feldnamen um und führen mit dem roten Ausrufezeichen die Abfrage aus.

Ein verfeinertes Prozedere, das aber noch aufwendiger ist, wäre, für die Attribute eine separate (Memo)AttributTabelle anzulegen, die die Texte enthält. In der vorherigen Tabelle stünde dann ein Fremdschlüssel auf diese Tabelle.

Wenn nun ein Unterformular ins Hauptformular eingefügt wird und die neue Tabelle als Datenbasis dient, sollten die gleichen Inhalte untereinander im Unterformular aufgelistet werden.

Für eine Such- oder Filterfunktion könnten diese Attribute in einer Multiselect-Listbox zur Kriterienauswahl herangezogen werden.

Bei Schwierigkeiten solltest Du mal eine neue DB erstellen und die Tabelle aus der Hauptdatenbank importieren. Einige Datensätze sollten schon vorhanden sein. Personendaten sollten gegebenenfalls anonymisiert werden. Diese Datenbank kannst Du gezippt als Anhang in einen Beiträg hochladen (Datei anhängen:). Ich denke, der eine oder andere Bastler findet sich schon ein.

flora
09.06.2003, 14:23
Hallo,

das verfahren das du vorschlägst erscheint mir unheimlich aufwendig. Ich glaube, davon muss ich abstand nehmen schon weil das ganze dann zu umfangreich und kompliziert wird (hab jetzt schon 1 600 Datensätze in der DB).
Wahrscheinlich richte ich dann doch eher noch ein textfeld mit den wichtigsten stichworten für den jeweiligen datensatz ein so dass ich unter 255 zeichen bleibe.
Trotzdem danke für deine mühe und dein mitdenken.