Neuigkeiten:

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

Mobiles Hauptmenü

Datentyp Langer Text - Nachschlageassistent

Begonnen von Katyte, April 19, 2015, 18:06:52

⏪ vorheriges - nächstes ⏩

Katyte

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

DF6GL

#1
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.

MzKlMu

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
Gruß Klaus

Katyte

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.

DF6GL

Hallo,


allgemein sei Dir das Durcharbeiten von Tutorials, bzw. Tipp-Sammlungen angeraten (z. B. www.dbwiki.net), bevor falsche (Lösungs-)Wege eingeschlagen werden...   :)

Katyte

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.  :-\

MzKlMu

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.
Gruß Klaus

DF6GL

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.

Katyte

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...

MaggieMay

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.
Freundliche Grüße
MaggieMay

Katyte

Hey,
Abfrage lautet:
SELECT Regelungen.RegelungenID, Regelungen.Beschreibung
FROM Regelungen
ORDER BY Regelungen.RegelungenID, Regelungen.Beschreibung;

Gebundene Spalte ist 1

MaggieMay

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?
Freundliche Grüße
MaggieMay

Katyte

Ich habe das Kombi-Feld nochmal erstellt und Screenshots gemacht (siehe Anhang).

MaggieMay

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.
Freundliche Grüße
MaggieMay

Katyte

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?