Abfrage formatieren

Hallo,

ich bin Access-Neuling und habe da ein Problem. Meine Aufgabe ist es(Praktikum) Patientenbefragungen mit Access zu speichern und auszuwerten.
Ich habe auch schon eine Datenbank bekommen, doch diese bietet mir im Eingabeformular nur die Möglichkeit jedem Patienten eine Abteilung zuzuordnen(mit Hilfe eines Kombinationsfeldes das alle Abteilungen auflistet). Da jedoch viele Patienten in 2 oder mehr Abteilungen betreut werden, ist dieses Formular eigentlich ziemlich schlecht. Ich habe auch schon ein eigenes Formular erstellt, in dem jeder Abteilung ein Ja/Nein Feld zugeordnet ist. Dies ermöglicht mir nun auch die Eingabe mehrerer Abteilungen, doch in den Abfragen kommt es zu Schwierigkeiten.

Die Benotungen(ziemlich viele, z.B. Essen, Sauberkeit, Anreise, Schwestern…) der Patienten sollen gemittelt, und dann nach den Fachbereichen(Abteilungen) geordnet ausgegeben werden.

Die ASQL-Anweisung hat im Moment folgendes Aussehen:

SELECT Patientenzufriedenheit_Praktikant.Kardiologie, Patientenzufriedenheit_Praktikant.Dialyse, Avg(Patientenzufriedenheit_Praktikant.[4-3-planung]) AS [Mittelwertvon4-3-planung], Avg(Patientenzufriedenheit_Praktikant.[15 informationen]) AS [Mittelwertvon15 informationen]
FROM Patientenzufriedenheit_Praktikant
WHERE (((Patientenzufriedenheit_Praktikant.[1-1 datum]) Like „**-05“))
GROUP BY Patientenzufriedenheit_Praktikant.Kardiologie, Patientenzufriedenheit_Praktikant.Dialyse;

Das erste was mir nicht gefällt, ist die Formatierung der Tabelle. Die Abteilungen werden alle als Spaltenüberschriften aufgelistet, und in der Zelle werden die Kontrollkästchen angezeigt.
Ich wüsste jetzt gerne, ob ich die Abteilungen irgendwie als Zeilen"überschriften" formatieren, und ob das Kontrollkästchen ausgeblendet werden kann.

Das zweite größere Problem ist, das Access nun z.B. folgende Kombinationen ermittelt und daraus die Mittelwerte errechnet:

Dialyse Kardiologie Mittelwert
ja ja 2,3
ja nein 2,1
nein ja 2,5

Mir ist es bei dieser Abfrage aber egal, ob der kardiologische Patient auch in der Dialyse war oder nicht. Ich will, das Access die Mittelwerte jeder Abteilung für sich berechnet.

Also in etwa so:

Dialyse Kardiologie Mittelwert
ja ja oder nein 2,2
ja oder nein ja 2,4

oder am Besten so:

Mittelwert
Dialyse 2,2
Kardiologie 2,4

Ist es möglich, eine Abfage zu erstellen die das realisiert?

Falls ihr einen Vorschlag habt, wie die Abteilungen auf andere Weise möglichst effektiv eingegeben werden könnten(also nicht mit JA/Nein), dann schreibt drauf los!

Danke.
Thomas

Hallo, Thomas!

Das erste was mir nicht gefällt, ist die Formatierung der
Tabelle. Die Abteilungen werden alle als Spaltenüberschriften
aufgelistet, und in der Zelle werden die Kontrollkästchen
angezeigt.
Ich wüsste jetzt gerne, ob ich die Abteilungen irgendwie als
Zeilen"überschriften" formatieren, und ob das Kontrollkästchen
ausgeblendet werden kann.

Eine Tabelle (und auch eine Abfrage) zeigen lediglich ohne Layout Datenbankinhalte an. Das Layout musst Du selbst über Berichte oder Formulare erzeugen. Hier kannst Du dann ohne weiteres einzelne Spalten ausblenden, Gruppierungen mit „Überschriften“ einfügen usw. Das wird aber relativ kompliziert für w-w-w. Schau mal in die berühmt-berüchtigte Nordwind-Datenbank. Da findet sich sicherlich ein passendes Beispiel.

Das zweite größere Problem ist, das Access nun z.B. folgende
Kombinationen ermittelt und daraus die Mittelwerte errechnet:
Dialyse Kardiologie Mittelwert
ja ja 2,3
ja nein 2,1
nein ja 2,5

Aus obiger „Tabelle“ bräuchtest Du eine Abfrage, die „Kardiologie“ ignoriert und den Mittelwert berechnet. Analog andersrum. Sind „Dialyse“ und „Kardiologie“ usw. tatsächlich Feldnamen? Dann bräuchtest Du für jedes dieser Felder eine eigene Mittelwert-Abfrage ungefähr so: SELECT Feldname, MittelwertVonAnderesFeld FROM … WHERE Feldname=TRUE

Mir ist es bei dieser Abfrage aber egal, ob der kardiologische
Patient auch in der Dialyse war oder nicht. Ich will, das
Access die Mittelwerte jeder Abteilung für sich berechnet.

Also in etwa so:

Dialyse Kardiologie Mittelwert
ja ja oder nein 2,2
ja oder nein ja 2,4

oder am Besten so:

Mittelwert
Dialyse 2,2
Kardiologie 2,4

Ist es möglich, eine Abfage zu erstellen die das realisiert?

Wenn Du dann alle obigen Abfragen mit UNION aneinanderkettest, wirst Du auch alles in eine Abfrage bekommen. Aber irgendwie schaue ich gerade nicht genau durch Dein Datenmodell… Das ließe sich sicherlich optimieren…

Gruß, Manfred

Hallo, Manfred!

Das zweite größere Problem ist, das Access nun z.B. folgende
Kombinationen ermittelt und daraus die Mittelwerte errechnet:
Dialyse Kardiologie Mittelwert
ja ja 2,3
ja nein 2,1
nein ja 2,5

Aus obiger „Tabelle“ bräuchtest Du eine Abfrage, die
„Kardiologie“ ignoriert und den Mittelwert berechnet. Analog
andersrum. Sind „Dialyse“ und „Kardiologie“ usw. tatsächlich
Feldnamen? Dann bräuchtest Du für jedes dieser Felder eine
eigene Mittelwert-Abfrage ungefähr so: SELECT Feldname,
MittelwertVonAnderesFeld FROM … WHERE Feldname=TRUE

Ich weiß nicht genau, was du mit Feldname meinst. Die jeweiligen Abteilungen entsprechen in der Tabelle den Spaltennamen und die Werte sind dann halt -1/0 bzw. ja/nein.

Mir ist es bei dieser Abfrage aber egal, ob der kardiologische
Patient auch in der Dialyse war oder nicht. Ich will, das
Access die Mittelwerte jeder Abteilung für sich berechnet.

Also in etwa so:

Dialyse Kardiologie Mittelwert
ja ja oder nein 2,2
ja oder nein ja 2,4

oder am Besten so:

Mittelwert
Dialyse 2,2
Kardiologie 2,4

Ist es möglich, eine Abfage zu erstellen die das realisiert?

Wenn Du dann alle obigen Abfragen mit UNION aneinanderkettest,
wirst Du auch alles in eine Abfrage bekommen. Aber irgendwie
schaue ich gerade nicht genau durch Dein Datenmodell… Das
ließe sich sicherlich optimieren…

Denke ich auch, aber die Tabelle war halt schon da. Im Prinzip sind alle Patientendaten und deren Benotungen in einer Riesentabelle zusammengefasst.
Brauche ich das „union“ dann nur zwischen den select-anweisungen einfügen, oder wie geht das?

ich habe es folgendermaßen versucht:

SELECT Patientenzufriedenheit_Praktikant.Kardiologie, Avg(Patientenzufriedenheit_Praktikant.[4-3-planung]) AS [Mittelwertvon4-3-planung], Avg(Patientenzufriedenheit_Praktikant.[15 informationen]) AS [Mittelwertvon15 informationen]
FROM Patientenzufriedenheit_Praktikant
Where (Patientenzufriedenheit_Praktikant.Kardiologie=True)
union
SELECT Patientenzufriedenheit_Praktikant.Dialyse, Avg(Patientenzufriedenheit_Praktikant.[4-3-planung]) AS [Mittelwertvon4-3-planung], Avg(Patientenzufriedenheit_Praktikant.[15 informationen]) AS [Mittelwertvon15 informationen]
FROM Patientenzufriedenheit_Praktikant
Where (Patientenzufriedenheit_Praktikant.Dialyse=True)

Doch access meint das Kardiologie nicht in die aggregatfunktion eingeschlossen ist.

Gruß, Thomas!

Hallo, Thomas!

Ich weiß nicht genau, was du mit Feldname meinst. Die
jeweiligen Abteilungen entsprechen in der Tabelle den
Spaltennamen und die Werte sind dann halt -1/0 bzw. ja/nein.

„Spalten“ gibt’s in Excel. In einer Datenbank sind das „Felder“. Das „-1/0“ bzw. „Ja/Nein“ ist der Datentyp des Felds. Also reden wir generell vom gleichen.

SELECT Patientenzufriedenheit_Praktikant.Kardiologie,
Avg(Patientenzufriedenheit_Praktikant.[4-3-planung]) AS
[Mittelwertvon4-3-planung],…

Zum einen würde ich nicht das Feld „Kardiologie“ (und alle anderen) SELECTen, denn das liefert immer nur ein „-1“; statt dessen solltest Du den Klartext verwenden. In Deinem Beispiel sähe die Abfrage ungefähr so aus:

SELECT "Kardiologie" AS F1, Avg(Patientenzufriedenheit\_Praktikant.[4-3-planung]) AS [Mittelwertvon4-3-planung], Avg(Patientenzufriedenheit\_Praktikant.[15 informationen]) AS [Mittelwertvon15 informationen]
FROM Patientenzufriedenheit\_Praktikant
GROUP BY Patientenzufriedenheit\_Praktikant.Kardiologie
HAVING (((Patientenzufriedenheit\_Praktikant.Kardiologie)=True))

union

SELECT "Dialyse" AS F1, Avg(Patientenzufriedenheit\_Praktikant.[4-3-planung]) AS [Mittelwertvon4-3-planung], Avg(Patientenzufriedenheit\_Praktikant.[15 informationen]) AS [Mittelwertvon15 informationen]
FROM Patientenzufriedenheit\_Praktikant
GROUP BY Patientenzufriedenheit\_Praktikant.Dialyse
HAVING (((Patientenzufriedenheit\_Praktikant.Dialyse)=True))

Gruß, Manfred

Hallo Manfred,

genau das wollte ich! Eigentlich war das ja gar nicht so schwer, aber ich kenn mich halt in access nicht so aus. Was wir in der Schule zu access gehört bzw. gelernt hatten ist erstens schon 2 Jahre her, und zweitens war das eher auf theoretische Dinge beschränkt.(Haben meißt mit folgender Seite „gearbeitet“:

http://www.tinohempel.de/info/info/datenbank/index.htm

Kennst du ne gute Seite, wo die ganzen sql-befehle für access aufgelistet sind?

Danke und noch nen schönen Tag!

Thomas