Hi
Danke für die Mühe der erneuten Beispieldatenbank.
Ich kann sie nur leider nicht bedienen.
Wenn ich das Formular (ohneID) aufmache, kann ich im Bereich des Gruppenrahmens in den Tabellen für Bereiche und Indikationen Werte eingeben …
… und das war’s. Extras->Aktualisieren bietet nur “Seitenformatierung” an.
In der Symptomtabelle scheinen die neuen Werte für Bereich und Indikationen nicht auf …
Wenn ich in der Symptomtabelle eine neue Kombination von Bereich/Indikation kreiere ebenfalls - dieses neue Symptom erscheint nicht im Hauptformular …
Was mache ich falsch ?
Nein, schau bei dem Formular nach unten. Da ist eine Navigationsleiste. Links neben den Sortierfunktionen ist “Steuerelement aktualisieren”
Neue Daten eingeben und abspeichern. Auf das Listenfeld gehen, das die Daten anzeigen soll. Dann auf Steuerelement aktualisieren und die Daten sind drin.
Ja dann …
Vielen herzlichen Dank - jetzt wird vieles klarer … Ich werde das mal nachvollziehen und schauen wo mein Denkapparat auf weitere Hürden stößt.
Hi
Meine Versuche des nachvollziehens gedeihen ganz gut … allerdings habe ich Schwierigkeiten beim Verständnis eines SQL-Statements. Könntest du mir das in Alltagssprache übersetzen ?
SELECT COALESCE ( “tbl_Bereiche”.“Bereiche”, ’ - ’ ) || COALESCE ( ’ → ’ || “tbl_Indikationen”.“Indikation”, ‘’ ) AS “Anzeige”, “int_tbl_Symptome”.“SymptomID” FROM { oj “int_tbl_Symptome” LEFT OUTER JOIN “tbl_Bereiche” ON “int_tbl_Symptome”.“BereicheID” = “tbl_Bereiche”.“BereicheID” LEFT OUTER JOIN “tbl_Indikationen” ON “int_tbl_Symptome”.“IndikationenID” = “tbl_Indikationen”.“IndikationenID” } ORDER BY “Anzeige” ASC
lg
COALESCE
: Wenn der erste Bereich leer (NULL) ist, dann nimm den zweiten Bereich. Ist der zweite Bereich leer, dann nimm den dritten.
Wenn also “tbl_Bereiche”.“Bereiche” keinen Eintrag hat, dann erscheint ’ - '.
||
: Damit werden Inhalte zu einem gemeinsamen Text verbunden. Die Verbindung funktioniert nur dann erfolgreich, wenn keiner der Inhalte NULL ist. Eine Verbindung mit NULL ist immer NULL. Deswegen auch bei “tbl_Indikationen”.“Indikation” das COALESCE.
Für ein Listenfeld benötigst Du ein Inhaltsfeld, das angezeigt wird und ein Fremdschlüsselfeld. Das Feld, das zuerst kommt, ist das, was angezeigt werden soll. Das andere ist das Feld, das in der Tabelle gespeichert wird.
Die { oj }
- Klammerung setzt die GUI, wenn Du die entsprechende Abfrage, dic ich in SQL erstellt habe, über die GUI zum Bearbeiten öffnest. Gleiches gilt für den Zusatz OUTER
.
LEFT JOIN
: In der Abfrage sind 3 Tabellen miteinander verbunden. Wenn die normal verbunden werden, dann werden nur die Datensätze angezeigt, bei denen aus allen Tabellen Daten dazu kommen. Ich möchte aber auf jeden Fall alle Datensätze aus “int_tbl_Symptome” haben, auch wenn z.B. nichts passendes in “tbl_Indikationen” vorhanden ist. Deswegen habe ich “int_tbl_Symptome” als erstes genommen und alle anderen Tabellen daran mit einem LEFT JOIN gebunden. Die Beziehung zwischen den betroffenen Tabellen bei JOINS wird direkt mit ON definiert - nicht mit WHERE.
Hi
Danke für die Erläuterung(en)
Ich habe das jetzt mal so weit, dass ich die Pflanzen und alle Subtabellen eingeben kann …
Jetzt ist mir “natürlich” aufgefallen, dass sich in den verschiedenen Bereichen Indikationen ansammeln, die ähnlich sind, aber bei verschiedenen Pflanzen verschieden beschrieben stehen … (adstringierend/zusammenziehend , tonisierend/stärkend/kräftigend etc …)
Jetzt habe ich versucht ein Formular zu erstellen, wo ich aus der Tabelle Bereiche oben ein Auswahlfeld habe, in dem ich den Bereich auswähle - und unten eine Tabelle, wo alle Indikationen dieses Bereiches aufgelistet sind (und eventuell noch die Pflanzen(namen), die diese Indikationen beinhalten …
Die beteiligten Tabellen sind offenbar: tbl_Bereiche, tbl_Indikationen und int_tbl_Symptome (sowie evt. tbl_Pflanzen.
Wenn ichs wie die Beispieldatenbank “Listboxen” löse und über das Namensfeld durch die Bereiche - Datensätze blättere bekomme ich es halbwegs hin - dann habe ich eben das Hauptformular “Bereiche” das Unterformular int_Symptome und darin ein Listenfeld mit den Inhalten von Indikationen über die Schlüssel verbunden … aber auch da schaffe ich es nicht, die Indikationen aufsteiegend zu sortieren, da ich nur die Sortierung aus der Zwischentabelle bekomme und die hat eben nur die ID;s.
Ich würde aber gerne über ein Drop-Down die Bereiche auswählen und dann eine Alphabetische Liste der Indikationen haben um die Begriffe vereinheitlichen zu können - später wärs toll dann auch die zugehörigen Pflanzen (zu den Indikationen in Kombination mit den Bereichen) zu listen (weils Indikationen gibt, die in mehrere Bereiche fallen können …
Bitte schreiben, wenn’s zu lästig wird
Mach bitte einen neuen Thread auf - oder schreibe mich per privater Mail an. Dieser Thread ist inzwischen so voll, dass er grundsätzlich erst einmal nicht komplett angezeigt wird.