Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Katyte am April 19, 2015, 18:06:52

Titel: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 19, 2015, 18:06:52
Hallo liebe Community,
ich bin neu hier und auf der Suche nach Unterstützung. Ich versuche mit Access Datenbank ein Framework zu erstellen, um eine Art Fragebogen und dazugehörigen Antworten abzuspeichern.
Momentan gerate ich an 2 Problemen.
1.
Einige Tabellen haben eine Beziehung. Beim Datentyp "Zahl" ist das kein Problem, doch ich habe auch ein Datentyp "langer Text". Nun möchte ich eine Beziehung mit einer weiteren Tabelle aufbauen und dies scheint mit dem Nachschlageassistent nicht zu funktionieren. Es kommt auch der Hinweis, dass dies für den Datentyp "langer Text" nicht möglich ist. Auf welcher andere Art und Weiße kann ich nun meine Beziehung aufbauen, so dass mir der lange Text angezeigt wird und nicht nur lediglich die ID...

2.
Wie bereits kurz oben erwähnt, muss ich Antworten abspeichern können. 1 Frage hat mehrere Antworten über die Zeit gesehen.
Also stelle ich eine Frage im Jahr 2015 und erhalte eine Antwort. Dann stelle ich dieselbe Frage im Jahr 2016 und erhalten wieder eine Antwort. Es besteht also eine 1:n Beziehung. Wie speichere ich es am besten ab?
Soll ich zu meiner Antworten-Tabelle noch ein Feld "Datum" hinzufügen und wenn ich alle Antworten von zB 2015 haben möchte, kann ich diese nach Datum filtern oder gibt´s noch eine schönere Alternative?


Über Eure Hilfe würde ich mich sehr freuen.

Liebe Grüße
Katyte
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: DF6GL am April 19, 2015, 19:16:41
Hallo und willkommen hier im Forum.

Deiner Frage nach zu urteilen, bist Du noch nicht sehr vertraut mit den Grundlagen einer relationalen DB und den damit zusammenhängenden Normalisierungsregeln.  (siehe u. st. Links 1 und 1a). Diese sind essentiell und müssen für eine erfolgreiche DB-Entwicklung beachtet werden.

1) Eine Beziehung über ein Memo (langer Text) ist sinnlos und wird daher auch nicht angeboten. Beziehungen werden grundsätzlich über Primärschlüssel und entspr. Fremdschlüssel (vorzugsweise Zahl, Long) hergestellt. Diese Primärschlüssel(werte) dienen zur genauen Kennzeichnung eines Datensatzes, die Fremdschlüssel dienen der Referenz auf einen solchen Datensatz (in einer anderen Tabelle).

Zitatso dass mir der lange Text angezeigt wird und nicht nur lediglich die ID
Das wird wiederum mittels über die benötigten Tabellen verknüpfende (--> Beziehungen) Abfragen erledigt.

2)
Dazu sind zwei Tabellen erforderlich:

tblFragen (enthält alle Felder, die eine "Frage" beschreiben)
FrID (PS, Autowert)
Fr_Text (Kurzer Text)
.
.
.

tblFeedback  (enthält alle Felder, die eine Antwort (Feedback) beschreiben.
FBID (PS,Autowert)
FB_FrID (Fremdschlüssel,Zahl, Long) Referenz auf tblFragen
FB_Antwort (Memo, Langer Text)
FB_FrageDatum ( Datum/Uhrzeit)
FB_AntwortDatum (Datum/Uhrzeit)
FB_BeantwortetVon (Text)   evtl. hier Referenz auf zusätzliche Tabelle, falls wegen Normalisierung erforderlich
.
.
.

Zitat.. kann ich diese nach Datum filtern oder gibt´s noch eine schönere Alternative?

Nach o. g. Aufbau kann nach Datum gefiltert/sortiert werden. "Schön" ist es, wenn alle Tabellen normalisiert sind.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 19, 2015, 19:21:25
Hallo,
Zu 1)
Du brauchst auch in der Tabelle mit dem langen Text einen eigenen Autowert als Primärschlüssel. Und in der abhängigen (n) Tabelle eine Zahl als Fremdschlüssel.
Über diese beiden Schlüsselfelder läuft auch die Beziehung.
Die Anzeige des langen Textes erfolgt dann über eine Abfrage mit beiden Tabellen.

Zu 2)
Das mit dem Datum eintragen ist der richtige Weg. Wenn es garantiert nur eine Antwort pro Jahr ist, genügt auch nur das Jahr.

Ganz allgemein:
Vermeide unbedingt Nachschlagefelder in Tabellen direkt, verwende nur ganz normal Felder. Nachschlagefelder in Tabellen verhindern den sauberen Aufbau einer DB. Nachschlagefelder sind nur in Formularen als Kombinationsfelder sinnvoll.
Siehe auch:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 06:51:00
Vielen Dank für Eure schnelle Antworten.
ZitatDeiner Frage nach zu urteilen, bist Du noch nicht sehr vertraut mit den Grundlagen einer relationalen DB
Genau, gerade mal zweiter Tag...
Ich versuche nun Eure Tipps erstmal umzusetzen.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: DF6GL am April 20, 2015, 07:27:31
Hallo,


allgemein sei Dir das Durcharbeiten von Tutorials, bzw. Tipp-Sammlungen angeraten (z. B. www.dbwiki.net), bevor falsche (Lösungs-)Wege eingeschlagen werden...   :)
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 10:01:28
So, jetzt habe ich einiges durchgelesen und versucht nachzuarbeiten. Bei meiner ersten Frage erhalte ich aber dennoch nicht so recht, dass was ich eigentlich will.
Ich habe eine Tabelle "Anforderungen" mit folgenden Feldern:
Anf-ID (Primärschlüssel), Anforderung, Objekt, Regelung, Prüfungsintervall

Und meine zweite Tabelle "Regelung" mit:
Reg-ID, Anf-ID (Fremdschlüssel), Beschreibung

Nun habe ich eine Abfrage durchgeführt und es wurde dadurch eine neue Tabelle erstellt mit Anforderung aus Anf-Tabelle und Beschreibung aus Reg-Tabelle.
Ich möchte aber eigentlich die Möglichkeit haben in der Anforderungstabelle im Datenfeld "Regelung" die Beschreibung aus der Regelungstabelle per "Auswahlfenster" direkt auswählen.  :-\
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 20, 2015, 10:28:31
Hallo,
umgekehrt musst Du die Beziehung machen.

AnfID (Primärschlüssel), Anforderung, Objekt, RegID_F (Fremdschlüssel) , Prüfungsintervall

Und die 2. Tabelle dann so:
RegID (Primärschlüssel), Beschreibung

Auswahl der Beschreibung erfolgt mit einem Kombifeld in einem Formular.
Die Eigenschaften des Kombis sind si einzustellen, dass die Beschreibung zu sehen ist, aber RegID_F geschrieben wird.
Wenn das Kombi im Formular mit dem Assi gemacht wird, wird das so angelegt.

Und noch mal der Hinweis, keine Nachschlagefelder in Tabellen.

Und vermeide Sonderzeichen (-) in Feldnamen.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: DF6GL am April 20, 2015, 10:33:26
Hallo,

dann stimmt der Tabellenaufbau nicht..

Tabelle "Anforderungen" mit folgenden Feldern:
Anf_ID (Primärschlüssel,Autowert), Anforderung, Objekt, Reg_ID (Fremdschlüssel, Zahl,Long), Prüfungsintervall


Tabelle "Regelung" mit:
Reg_ID, (Primärschlüssel,Autowert)  Beschreibung (kurzer Text)


Zitatin der Anforderungstabelle im Datenfeld "Regelung" die Beschreibung aus der Regelungstabelle per "Auswahlfenster" direkt auswählen.

Auswahlen in Tabellen (Nachschlagefelder) sind unbrauchbar!

Tipps: Auf Sonder- und Leerzeichen in Namen DRINGEND verzichten.
KEINE Nachschlagefelder in den Tabellen benutzen.



Zitatdadurch eine neue Tabelle erstellt

Durch eine Auswahlabfrage wird keine neue Tabelle erstellt. Es wird nur das Abfrageergebnis als TabellenANSICHT dargestellt.

Datenmanipulation (Eingabe,Anzeige,Pflege,Löschen) sollte nur mit/in Formularen passieren. Dort können auch mit Hilfe von Kombifeldern entspr. Datensätze aus Stammdatentabellen ausgewählt und deren Primärschlüsselwerte im Fremdschlüsselfeld gespeichert werden.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 15:12:24
Okay, so langsam kommt glaub ich das Verständnis. Ich habe jetzt ein Formular erstellt von der Tabelle "Anforderungen". Mit einem Kombi-Feld kann ich die passende Regelungen_ID mit Beschreibung auswählen.
Beim Anlegen einer neuen Anforderung kann diese nicht abgespeichert werden, es kommt der folgender Fehler (siehe Screenshot). Aber die Beziehung müsste doch jetzt passen...
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MaggieMay am April 20, 2015, 15:24:37
Hi,

wie lautet denn die Datenherkunft des Kombifeldes und welches ist die gebundene Spalte?

PS:
Da sollte nicht die ID sondern der Text zu sehen sein.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 15:28:51
Hey,
Abfrage lautet:
SELECT Regelungen.RegelungenID, Regelungen.Beschreibung
FROM Regelungen
ORDER BY Regelungen.RegelungenID, Regelungen.Beschreibung;

Gebundene Spalte ist 1
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MaggieMay am April 20, 2015, 15:36:18
Soweit OK.

Die Sichtbarkeit kannst du über die Spaltenbreiten steuern, bspw. mit 0;3, so wird die erste Spalte ausgeblendet und der Text angezeigt.

Das Kombifeld ist an die Spalte "Regelungen_ID_F" gebunden?
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 15:47:33
Ich habe das Kombi-Feld nochmal erstellt und Screenshots gemacht (siehe Anhang).
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MaggieMay am April 20, 2015, 15:55:54
Mir scheint, du hast meinen letzten Beitrag nicht richtig gelesen. Das Kombifeld muss an das Datenfeld in der Tabelle "Corporate Compliance" gebunden werden und die Spaltenbreiten müssen angepasst werden, damit du die Beschreibung siehst.

BTW:
Wo ist das Datenfeld "Beschreibung" beim Erstellen der Kombibox geblieben?

Hinweis:
Du solltest sowohl auf Sonderzeichen (inkl. Leerzeichen) bei der Namensgebung verzichten und reservierte Namen wie "Name", "Datum" etc, aber auch "Beschreibung" meiden. Da man nicht alle reservierten Namen im Kopf haben kann, lässt sich das leicht umgehen indem man Präfixe verwendet, bspw. für die Feldnamen der Tabelle "CorporateCompliance":
CC_ID
CC_Anforderung
CC_Objekt
usw.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 16:00:47
Ich habe die Beiträge sehr genau gelesen, aber am Anfang weiß man einfach nicht so genau was teilweise gemeint ist.
Das fand ich auch seltsam, "Beschreibung" wird mir da nie angezeigt. Ich lass es mir später über die Datenherkunft anzeigen lassen. Vielleicht liegt hier der Fehler? Aber wie soll ich es denn sonst binden?
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MaggieMay am April 20, 2015, 16:03:57
ZitatAber wie soll ich es denn sonst binden?
Auch das musst du manuell anpassen, also beim Steuerelementinhalt den Datenfeldnamen der Zieltabelle eintragen.

Das Datenfeld Beschreibung solltest du unbedingt umbenennen, am besten du folgst meinem Vorschlag.

Und was steht nun in den Eigenschaften Spaltenbreiten und Spaltenanzahl?
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 20, 2015, 20:17:24
Hey,
die Datenfelder sind bereits umbennant  :)
Uuuuund, es funktioniert!! Habe im Steuerelementinhalt noch Regelungen_ID_F hinzugefügt. War mir vorher nicht klar. Jedoch wird der Beschreibungstext abgeschnitten, aber darum kümmere ich mich morgen.

Spaltenbreite und Anzahl ist mittlerweile klar. Kann ich aber auch irgendwo einstellen, wie viele Zeilen ein Block enthalten soll. Bisher wird ja immer in der Auswahl jeweils eine Zeile angezeigt und erst beim Auswählen der (abgeschnitte) Rest. Gesamten Text brauch ich natürlich nicht, aber evtl. über zwei Zeilenhöhen.
Das sind aber natürlich nur noch Kleinigkeiten.

Vielen Dank für die Hilfe! Ich bleib am Ball und auf jeden Fall im Forum ;)
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 20, 2015, 20:25:27
Hallo,
das mit den Zeilenhöhen und bei Auswahl jeeils eine Zeile verstehe ich nicht. Es werden bei korrektem Aufbau so viele Zeilen angezeigt wie s Datensätze in der Tabelle mit en Regelungen hat. Mir scheint, Du hast da doch noch Probleme.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: HB9876 am April 20, 2015, 20:36:42
Hallo,
wenn ich dich richtig verstehe willst du mehrere Zeilen (zwei in deinem Fall) in einem Kombifeld anzeigen lassen?!
Das geht meines Wissens nach nicht, hier kann man nur die Breite des Feldes veraendern und es werden ja immer alle Datensaetze der zugrunde liegenden Abfrage angezeigt.

Einzige Moeglichkeit die ich kenne, Im Kombifeld nur den Schluessel anzeigen und daneben ein Textfeld was sich syncron aendert.
=DomWert("Memofeld","Tabelle","Schluessel = " & [Kombifeld])
Die Loesung habe ich mal unter:
http://www.office-loesung.de/ftopic61673_0_0_asc.php (http://www.office-loesung.de/ftopic61673_0_0_asc.php)
gefunden.

Bestimmt kein Performance Renner, aber das klappt wenn man das so umsetzten moechte/muss.

Gruss

Jens
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 20, 2015, 23:42:05
Hallo,
ich glaube, hier werden Zeilen mit Spalten verwechselt.
Mit Domwert kann man nur eine weitere Spalte anzeigen, aber keine andere Zeile.
Wobei auch für die Spalte Domwert völlig überflüssig ist, das geht einfacher und schneller mit einer Abfrage mit den beteiligten Tabellen, oder über die Eigenschaften des Kombis oder man verkettet die weitere Spalte und kann diese zusätzlich anzeigen. Auch im Link oben gezeigten ist Domwert überflüssig.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: HB9876 am April 20, 2015, 23:50:59
Hallo Klaus,
vielleicht stehe ich auch auf dem Schlauch und verstehe die Frage nicht.
Aber ich denke es soll ein Text aus einem MEMO Feld in einem Kombi angezeigt werden.
Dieser hat zu viele Zeichen um in dem Kombi komplett angezeigt zu werden und soll deshalb in der darunter liegenden Zeile angezeigt werden (wo der naechste Eintrag steht).
Also bleibt hier nur die Spalte dementsprechend breit einzustellen das der komplette Text angezeigt wird, oder halt den Text in einem Text Feld anzuzeigen, wo ich ja einen Zeilenumbruch einstellen kann.

Ich wuerde deswegen nur ueber DOMWERT den einen Wert in Verbindung zum Schluesselfeld abgreifen und im Textfeld anzeigen.
Wie gesagt bestimmt nicht elegant, aber bei mir hat es geklappt.


Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 21, 2015, 07:00:28
Guten Morgen,
es werden alle Datensätze angezeigt, dass ist nicht das Problem.
Wenn ich ganz normal das Kombifeld anklicke, so erscheinen mir alle Datensätze mit jeweils einer "Vorschau-Zeile". Also:
ID | TextTextTextTextTextText
Meine Frage war, ob so was auch möglich ist:
ID | TextTextTextTextTextText
       TextTextTextTextTextText

Aber das ist erstmal zweitrangig, weil mir ist aufgefallen, dass die Beschreibung nicht komplett angezeigt wird, sondern einfach abgeschnitten wird, obwohl da eigentlich noch Platz wäre. Hab am einfachsten auch gleich ein Screenshot angehängt. Der schwarz markierte Satz geht normalerweise noch weiter...
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: DF6GL am April 21, 2015, 14:31:47
Hallo,

Zitatsondern einfach abgeschnitten wird, obwohl da eigentlich noch Platz wäre.

Die Kombifeld-Spalten können max. 255 Zeichen anzeigen, dann ist Schluss.  Weiterhin kann es passieren, dass auch eine Abfragespalte, die den Inhalt eines Memo-Tabellenfeldes anzeigen soll, auf 255 Zeichen begrenzt wird.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: HB9876 am April 21, 2015, 16:45:20
Hallo Katyte,
probiere mal meine Vorschlag aus.
Das ist zwar ein Umweg, aber wird das anzeigen was du moechtest.

Gruss

Jens'
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 21, 2015, 16:51:43
Hallo,
wie bereits gesagt, ist der Umweg mit Domwert hier nicht notwendig. Eine Abfrage mit beiden Tabellen liefert auch den langen Text der Beschreibung.
Siehe #19. Das Feld kann dann direkt verwendet werden.
Das ist einfach und die schnellste Version und alles ohne etwas programmieren zu müssen.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: HB9876 am April 21, 2015, 19:32:33
Hallo Klaus,
danke fuer deine zweite Auffrischung.
habe das jetzt mal angepasst und wie du sagst ist es einfache,bestimmt auch besser fuer die Performance.

Gruss

Jens
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: Katyte am April 22, 2015, 09:26:32
Hm, also ich habe eine Abfrage erstellt und auf Basis dieser Abfrage ein Formular erstellt. Beim Textfeld wird der gesamte Text angezeigt, aber wenn ich dann über "Entwurf-->Kombinationsfeld" ein Kombifeld auswähle, so wird mir die "Reg_Beschreibung" in dem Assistenten trotzdem nicht angezeigt und ich kann es demzufolge da gar nicht auswählen. Wenn ich es nachträglich über "Daten --> Datensatzherkuft" hinzufüge (also: SELECT abfCC.Reg_Beschreibung, abfCC.Reg_ID FROM abfCC ORDER BY abfCC.Reg_ID; ), erhalte ich den gleichen Effekt, dass nur 255 Zeichen angezeigt werden.
Titel: Re: Datentyp Langer Text - Nachschlageassistent
Beitrag von: MzKlMu am April 22, 2015, 09:37:15
Hallo,
Du machst viele Dinge grundsätzlich falsch. Die Datenherkunft für das Kombi sollte eine Abfrage sein mit der Tabelle und nicht mit einer extra Abfrae. Reihenfolge erst die ID, dann die Beschreibung. Gebunden Spalte: 1, Spaltenzahl: 2, Spaltenbreiten: 0cm;20cm Steuerelementinhalt: Fremdschlüsselfeld

Im Kombi kann man niemals mehr als 255 Zeichen anzeigen, das ist technisch nicht möglich. Siehe auch Antwort von Franz in #22.  Die vollständige Beschreibung muss über eine extra Abfrage für das Formular angezeigt werden, was Du ja scheinbar bereits hast.