Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

kombifeldabfrage





Frage

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 1 von Marie

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

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

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

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

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

Antwort 6 von Marie

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

Gruß Marie

Antwort 7 von RalfH

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

Antwort 8 von floberlin

Also das ist der SQL-Code vom Kombifeld:

SELECT Abteilung.a_aNummer, Abteilung.a_tName
FROM Abteilung;


Antwort 9 von floberlin

Was meint Du mit Relationen Ralf??

Gruß

Antwort 10 von Marie

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

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

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

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

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

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

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

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

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

vor ORDER BY darf kein semikolon stehen

Gruß marie

Antwort 19 von floberlin

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

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]));

Antwort 21 von Marie

as von den tausend sachen ist denn

Zitat:
Like [forms].[Klinik].[kfAbteilung]));


Antwort 22 von floberlin

Das is die ganze SQL!!
Warum kann das dann keiner nachvollziehen?
Und was ist mit nem Leerzeichen? das war doch gar nicht so oder?
Warum soll das nicht mein Ernst sein? Das war doch meine Frage!!! Wie soll ich es denn sonst machen?

Antwort 23 von Marie

es kann nur ein einziges Feld
Zitat:
Like [forms].[Klinik].[kfAbteilung]));

sein
und das und nur das kommt hinter where, sonsz hast du doch gar keine bedingung.

Poste dann bitte die gesamte SQL

Antwort 24 von floberlin

Das war die gesamte SQL:


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_tVornameFROM Medizintechnik, Krankenschwester, ChefarztWHERE ((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;


Ich hatte es so gemacht wie Ralf meinte:

Zitat:
SELECT daswasdumöchtest from woherdudasmöchtest WHERE (((DeineAbfrage.DeinFeld) Like [forms].[DeinFormular].[DeinKombifeld[/code]

Jetzt war meine Frage ob das richtig ist mit der Where-Klausel!!!?

Gruß Florian

Antwort 25 von Marie

Krankenschwester.ks_tVornameFROM 
jetzt fehlt hier ein Leerzeichen, falls das nicht im forum verloren ging,



Zitat:
ChefarztWHERE
ebenso hier

Zitat:
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])


und hier haste doch gar nix geändert, was soll den das?ß Es können doch nicht sämtliche hier genannten felder
Zitat:
Like [forms].[Klinik].[kfAbteilung])
sein. Begreif doch endlich.



Zitat:
WHERE (((DeineAbfrage.DeinFeld) Like [forms].[DeinFormular].[DeinKombifeld[/quote] dein Feld ist ein einziges Feld und nicht 10 wie bei Dir, die genau denselben Inhalt haben wie der im Kombi angeklickte Ausdruck.

gruß Marie

Antwort 26 von floberlin

Ich denk ma, wir reden hier irgendwie wieder voll aneinander vorbei Marie!! Die Leerzeichen hat das Forum geschluckt...
Aber Du hast jetzt endlich meine Frage verstanden!! Genau das wollte ich doch wissen mit der WHERE-Klausel!! Ich kann also nur ein Feld angeben in

Zitat:

WHERE ((MeineAbfrage.MeinFeld)...


ist doch so oder?
Aber wie kann ich das dann schreiben, wenn ich diese 10 Felder auch mit der Eingabe im Kombifeld vergleichen will???

Gruß Florian

Antwort 27 von Marie

du hast immer noch nicht verstanden wie das Kombifeld funktioniert.

Du hast eine einzige gebundene Spalte und die muss eindeutig sein und nur die vergleichst Du mit den Datensätzen in deiner Tabelle oder Abfrage.


Zitat:
Like [forms].[Klinik].[kfAbteilung]));
nur ein einziges feld in Abteilungsabfrage ist doch exakt identisch mit [forms].[Klinik].[kfAbteilung und das und nur das kommt hinter where und vor like.

Butterfliege Hildegunde hat die datensatznummer 175 und der im kombi angeklickte Datensatz hat die Nummer 175, also suchste die Hildegunde über die Datensatznummer, Deine Whereabfrage heisst dann: suche dieselbe Nummer in meiner Abfrage, wie die, die im kombi angeklickt wurde. Wenn Du das jetzt immer noch nicht verstanden hast, dann schau dir bitte ein beispiel in der nordwind an, denn ich weiss nimmer wie ich es Dir noch erklären sollte, dass nicht 10 unterschiedliche felder gleichzeitig like einem in deinem Kombi sein können.

Gruß marie

Antwort 28 von floberlin

Hallo!!

Ahhh... Ok durch Hildegunde hab ich es verstanden!! ;)
Dann geht das also gar nicht so wie ich es mir so vorstelle...
Ich versuch es nochmal zu erklären.. Ich habe 3 Abteilungen (3 Tabellen) zur Auswahl in dem Kombifeld!! Jetzt möchte ich mir, je nach Auswahl des Kombifeldes (also der Abteilung), den Titel, den Namen und den Vornamen (also insgesamt 3 Spalten) im Listfeld anzeigen lassen!! Muss ich jetzt die 3 Spalten (Titel, Name, Vorname) zu einer machen, damit ich diese dann mit der WHERE-Klausel benutzen kann?

Gruß Florian

Antwort 29 von Marie

Nein, Du kannst Dir anzeigen lassen was Du willst, darum geht es doch hier gar nicht mehr,

Es geht doch jetzt um das Anzeigen des ausgewählten Datensatzes.

Es geht einzig und alleine um Deine Where-Klausel und darum, dass Du ums verplatzen offensichtlich nicht verstehen willst, was Where ...... like... bedeutet!!

Versuchs halt nochmal irgendwo nachzulesen und auf deine Daten zu übertragen. Wenn Dir mal klar ist welches Feld die gebundene Spalte sein soll und ob das feld eindeutig ist, dann kannste gerne hier weiterfragen.

gruß Marie

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Suche in allen vorhandenen Beiträgen: