online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon floberlin vom 30.11.2019, 21:59 Options

kombifeldabfrage

Hallo!!

Ich beschäftige mich seit kurzem mit Access 07 und bin dabei meine eigene Datenbank zu schreiben. Nun habe ich folgendes Problem:

Ich habe unter Anderem eine Tabelle namens Abteilung mit den drei Attributen Chefarzt, Krankenschwester und Medizintechnik. Weiterhin für Chefarzt usw eine eigene Tabelle mit Titel, Name usw.
Jetzt wollte ich in einem Formular über einem Kombifeld die Auswahl der Abteilung (Chefarzt usw.) umsetzen und je nach Auswahl mir die Daten des Chefarztes z.b. in einem listfeld (lfAnsprechpartner) anzeigen lassen!!
Das Kombifeld habe ch wie folgt mit VBA geändert:

Option Compare Database

Private Sub kfAbteilung_AfterUpdate()
Me.lfAnsprechpartner.Requery
End Sub

Müsste dohso aufen oder?
Aber wie kriege ich jetzt die Daten in das Listfeld? Habe schon mit SQL bei Datenherkunft versucht aber nicht so wirklichdie richtige Anweisung gefunden.. Wäre schön, wenn mir da jemand weiterhelfen könnte!!?

Mfg Florian


Antwort schreiben

Antwort 1 von Marie vom 01.12.2019, 19:24 Options

dein Kombifeld kannst Du füllen mit was Du lustig bist, machst eine Abfrage mit den Daten, die Du haben willst und nimmst als Datenherkunft Tabelle/Abfrage und klickst dann die Abfrage an.

Probier zuerst mal mit dem Assistenten und schau was der einfügt, dann siehst Du wie es funktioniert und kannst das anpassen.

Wenn Du dann immer noch nicht klarkommst, dann poste bitte Deine Abfrage hier rein (Ansicht SQL und kopieren) und sag was Du für eine Fehlermeldung bekommst.,

Gruß Marie

Antwort 2 von floberlin vom 02.12.2019, 14:33 Options

Also die SQL-Anweisung der Abfrage sieht so aus:

SELECT Chefarzt.c_tTitel, Chefarzt.c_tName, Chefarzt.c_tVorname, Medizintechnik.m_tTitel, Medizintechnik.m_tName, Medizintechnik.m_tVorname, Krankenschwester.ks_tTitel, Krankenschwester.ks_tName, Krankenschwester.ks_tVorname
FROM Medizintechnik INNER JOIN (Krankenschwester INNER JOIN (Chefarzt INNER JOIN Abteilung ON Chefarzt.c_aNummer = Abteilung.a_c_aNummer) ON Krankenschwester.ks_aNummer = Abteilung.a_ks_aNummer) ON Medizintechnik.m_Nummer = Abteilung.a_m_aNummer
ORDER BY Chefarzt.c_tName, Medizintechnik.m_tName, Krankenschwester.ks_tName;

Habe das jetzt so gemacht wie Du gesagt hattest, aber er zeigt mir immernoch nicht die Daten im Listfeld an!!?
In der Tabellenansicht der Abfrage stehen zwar die Spalten drin aber nicht die Datensätze!!

Antwort 3 von Marie vom 02.12.2019, 23:19 Options

Du willst ernsthaft ein Kombifeld mit 9 Spalten machen????

Haste denn auch angeklickt, dass das 9 Spalten haben soll und die Listenbreite und Spaltenbreite entsprechend eingestellt???

Oder hat etwa Dein Kombifeld eine Spalte mit Spaltenbreite 0??

Oder hat Deine Abfrage gar keine Daten??

Also ich denke mal wir reden aneinander vorbei?? Was willst Du mit 9 Spalten in einem Kombi?

Gruß Marie

Antwort 4 von floberlin vom 03.12.2019, 11:58 Options

Hallo!!

Nein, mein Kombifeld soll die Tabellen Chefarzt, Medizintechnik und Krankenschwester beinhalten, also nur 3 Zeilen!!
In dem Listfeld sollen dann aber, je nach ausgewähltem Attriubt, jeweils Titel, Name und Vorname der Tabelle angezeigt werden..
Sry, wenn ich mich ein bisschen falsch ausgedrückt habe, aber danke schon mal für die Hilfe..

Antwort 5 von floberlin vom 03.12.2019, 12:00 Options

Aso, das was ich oben gepostet hatte war der SQL-Befehl für die Abfrage nicht für das Kombifeld!!

Antwort 6 von Marie vom 03.12.2019, 15:02 Options

Na dann poste doch mal den für Dein Kombi und sag was niht funktioniert.

Gruß Marie

Antwort 7 von RalfH vom 03.12.2019, 15:51 Options

Hallo,
Wie sind die Relationen der Tabellen gesetzt ?
Gruß Ralf

Antwort 8 von floberlin vom 03.12.2019, 18:40 Options

Also das ist der SQL-Code vom Kombifeld:

SELECT Abteilung.a_aNummer, Abteilung.a_tName
FROM Abteilung;

Antwort 9 von floberlin vom 03.12.2019, 18:49 Options

Was meint Du mit Relationen Ralf??

Gruß

Antwort 10 von Marie vom 04.12.2019, 01:57 Options

ja toll, jetzt wissen wir endlich wie die SQL aussieht, aber nicht was nicht funktioniert. Lass Dir doch nicht alles aus der Nase ziehen.

Abteilung.a_aNummer ist wohl das, was ausgeblendet werden kann, aber die gebundene Spalte ist, Abteilung.a_tName
ist eingeblendet und wird angeklickt?????

Also zwei Spalten, erste Spalte gebundene Spalte, Spaltenbreite: 0cm;3cm zum Beispiel

Und nu sag was nicht funktioniert`??

Gruß marie

Antwort 11 von RalfH vom 04.12.2019, 06:42 Options

Guten Morgen,

Relationen guckst Du HIER

Ohne vernünftige Relationen keine vernünftige Ergebnisse.

Zum Beispiel gibt es die Tabelle Abteilung und die Tabelle Personal. Beide Tabelle müssen in einer Relation stehen, also verknüpft sein.
Eine Abteilung kann x beliebig viele Mitarbeiter haben. Das wäre eine 1 zu N ( 1 zu unendlich) Relation.
In der Tabelle Personal kommen also nicht nur die Personaldaten rein, sondern auch ein Fremdschlüssel der Abteilung. Meistens nimmt man dafür eine Zahl, das hat den Vorteil das a) man sich nicht so leicht vertippen kann und b) nimmt eine Zahl weniger Ressourcen in Anspruch.

Gruß Ralf

Antwort 12 von floberlin vom 04.12.2019, 14:35 Options

Hallo!!

Also nochmal, das was Du meintest Marie ist richtig und funktioniert auch schon ,das war ja nicht das Problem, dass die Abteilung (a_tName) angezeigt wird im Kombifeld..
Mein Problem ist das ich nun die Abteilung im Kombifeld auswählen möchte und das dann die Daten der Tabellen Chefarzt usw. im Listfeld angezeigt werden...

Antwort 13 von floberlin vom 04.12.2019, 14:42 Options

Hallo Ralf!!

Du meintest die Beziehungen untereinander, die hab ich auch schon, so wie Du es beschrieben hast.. D.h. ich habe den Chefärzten, Medizintechnik usw. jeweils eine Nummer gegeben und die mit 1 zu n mit der Tabelle Abteilung verknüpft!!

Antwort 14 von RalfH vom 05.12.2019, 07:07 Options

Guten Morgen,


Wenn die Relationen stimmen, ist das kein Problem.

Dein Listenfeld, welches im gleichen Formular ist, wie das Kombifeld, mit dem Du die Werte aussuchst, wird befüllt mit einer Abfrage.
In dieser Abfrage beziehst Du dich auf das Kombifeld.
Nach dem aktualisieren des Kombifeldes das refreshen nicht vergeshen ;-)

Das ist die WHERE Klausel. Ungefähr so

 SELECT daswasdumöchtest from woherdudasmöchtest WHERE (((DeineAbfrage.DeinFeld) Like [forms].[DeinFormular].[DeinKombifeld]));


Gruß Ralf
Kleines SQL Tutorial

Antwort 15 von floberlin vom 08.12.2019, 19:18 Options

Hallo!!

Das mit der Abfrage habe ich gemacht und habe jetzt dem Listfeld folgende Datensatzherkunft gegeben:

SELECT Chefarzt.c_tTitel, Chefarzt.c_tName, Chefarzt.c_tVorname, Medizintechnik.m_tTitel, Medizintechnik.m_tName, Medizintechnik.m_tVorname, Krankenschwester.ks_tTitel, Krankenschwester.ks_tName, Krankenschwester.ks_tVorname
FROM Medizintechnik INNER JOIN (Krankenschwester INNER JOIN (Chefarzt INNER JOIN Abteilung ON Chefarzt.c_aNummer = Abteilung.a_c_aNummer) ON Krankenschwester.ks_aNummer = Abteilung.a_ks_aNummer) ON Medizintechnik.m_Nummer = Abteilung.a_m_aNummer
ORDER BY Chefarzt.c_tName, Medizintechnik.m_tName, Krankenschwester.ks_tName;

Aber es geht immernoch nich.... :(

Gruß Florian

Antwort 16 von floberlin vom 08.12.2019, 19:47 Options

Sry, hab die inner Abfrage rausgenommen..
Hab es jetzt so gemacht, wie Du geschrieben hattest:


SELECT Chefarzt.c_tTitel, Chefarzt.c_tName, Chefarzt.c_tVorname, Medizintechnik.m_tTitel, Medizintechnik.m_tName, Medizintechnik.m_tVorname, Krankenschwester.ks_tTitel, Krankenschwester.ks_tName, Krankenschwester.ks_tVorname
FROM Medizintechnik, Krankenschwester, Chefarzt
ORDER BY Chefarzt.c_tName, Medizintechnik.m_tName, Krankenschwester.ks_tName 
WHERE (((Abteilungsabfrage.c_tTitel, Abteilungsabfrage.c_tName, Abteilungsabfrage.c_tVorname, Abteilungsabfrage.m_tTitel, Abteilungsabfrage.m_tName, Abteilungsabfrage.m_tVorname, Abteilungsabfrage.ks_tTitel, Abteilungsabfrage.ks_tName, Abteilungsabfrage.ks_tVorname) Like [forms].[Klinik].[kfAbteilung]));


Dann kriege ich aber folgende Fehlermeldung:

"Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Krankenschwester.ks_tName
WHERE (((Abteilungsabfrage........"

Wo liegt denn mein Fehler??

Gruß Florian

Antwort 17 von floberlin vom 08.12.2019, 20:06 Options

Ok, Fehler is weg, war ne Klammer zu viel!!

Die Anweisung ist jetzt:

SELECT Chefarzt.c_tTitel, Chefarzt.c_tName, Chefarzt.c_tVorname, Medizintechnik.m_tTitel, Medizintechnik.m_tName, Medizintechnik.m_tVorname, Krankenschwester.ks_tTitel, Krankenschwester.ks_tName, Krankenschwester.ks_tVorname
FROM Medizintechnik, Krankenschwester, Chefarzt
WHERE ((Abteilungsabfrage.c_tTitel, Abteilungsabfrage.c_tName, Abteilungsabfrage.c_tVorname, Abteilungsabfrage.m_tTitel, Abteilungsabfrage.m_tName, Abteilungsabfrage.m_tVorname, Abteilungsabfrage.ks_tTitel, Abteilungsabfrage.ks_tName, Abteilungsabfrage.ks_tVorname) Like [forms].[Klinik].[kfAbteilung]);
ORDER BY Chefarzt.c_tName, Medizintechnik.m_tName, Krankenschwester.ks_tName;


Jetzt kommt folgender Fehler:

"Syntaxfehler (Komma) in Abfrageausdruck '((Abteilungsabfrage...."

Hab die Kommas überprüft usw, aber den Fehler nicht gefunden??

Gruß Florian

Antwort 18 von Marie vom 09.12.2019, 13:06 Options

Also ein fehler is schonmal ;ORDER BY Chefarzt.c_tName,

vor ORDER BY darf kein semikolon stehen

Gruß marie

Antwort 19 von floberlin vom 09.12.2019, 13:41 Options

Ok, thx... Hab ich übersehen, hatte aber nichts mit der Fehlermeldung zu tun!!
Woran kann das liegen?
Kann es sein das ich bei der WHERE-Klausel nur einen Parameter angeben darf?

Gruß Florian

Antwort 20 von Marie vom 09.12.2019, 14:46 Options

FROM Medizintechnik, Krankenschwester, Chefarzt wenn du das so hinschreibst kann aber niemand nachvollziehen wo deine Fehler sind, also bitte wirklich immer die ganze SQL hier reinkopieren.

Meist ist es nur eine Klammer oder sowas.
ChefarztWHERE fehlt Leerzeichen

Gruß Marie

Äh, Das ist nicht Dein Ernst hier??
WHERE (((Abteilungsabfrage.c_tTitel, Abteilungsabfrage.c_tName, Abteilungsabfrage.c_tVorname, Abteilungsabfrage.m_tTitel, Abteilungsabfrage.m_tName, Abteilungsabfrage.m_tVorname, Abteilungsabfrage.ks_tTitel, Abteilungsabfrage.ks_tName, Abteilungsabfrage.ks_tVorname) Like [forms].[Klinik].[kfAbteilung]));

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026