Neuigkeiten:

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

Mobiles Hauptmenü

Mehrwertiges Feld in einer Abfrage

Begonnen von gromax, Mai 25, 2015, 19:41:49

⏪ vorheriges - nächstes ⏩

gromax

Liebe Access-Profis,
jetzt habe ich die Merkmale von Mehrfachbehinderungen der Schüler in einem mehrwertigen Feld [SOP_MFS] eingepflegt und kann diese auch entsprechend in einem Bericht ausgeben; ein anderes – wohl nicht kleines – Problem beschäftigt mich aber weiterhin:
In meinem mehrwertigen Feld [SOP_MFS] werden zwei oder drei Merkmale von Behinderungsarten (KB, LB, GB,...) abgelegt. In einem Bericht sollen z.B. jetzt alle Schüler mit Mehrfach-Behinderungen gezählt werden:


=Wenn(IstNull(DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]>1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"));0;DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]>1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"))


das klappt mit obiger Formel.

Jetzt möchte ich aber auch die Schüler mit nur einer Behinderung zählen, also z.B. alle körperbehinderten Kinder. Wie kann ich in einer Abfrage nur die KB-Schüler auslesen, die eine Einfach-Behinderung in eben diesem mehrwertigen Feld hinterlegt haben; eine Wenn-Dann-Bedingung wird mit dem Hinweis

"Das Mehrfachwertfeld '[SOP_MFS]' ist im 'IIf([qry_STAT_LandkreiseUmsetzungen2Test].[AnzahlvonSOP_MFS]>1,"MFB",[SOP_MFS])'-Ausdruck nicht gültig.

zurückgewiesen. Gibt es dazu einen andere Vorgehensweise? Eine analoge Formel wie zur Mehrfach-Behinderung im Bericht funktioniert auch nicht!
Für Eure Unterstützung bin ich immer dankbar.

MaggieMay

#1
Hi,

Zitateine Wenn-Dann-Bedingung wird mit dem Hinweis

Zitat"Das Mehrfachwertfeld '[SOP_MFS]' ist im 'IIf([qry_STAT_LandkreiseUmsetzungen2Test].[AnzahlvonSOP_MFS]>1,"MFB",[SOP_MFS])'-Ausdruck nicht gültig.
zurückgewiesen.

zeige bitte - in Zukunft bitte sofort und ohne Nachfrage - den diesbezüglichen SQL-Code.
Wie sonst könnten wir diese "Wenn-Dann-Bedingung" einschätzen bzw. beurteilen?!

PS:
Warum setzt du hier eigentlich nicht die NZ-Funktion ein?
Der Code könnte dann so aussehen:
=NZ(DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]>1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1");0;)
Freundliche Grüße
MaggieMay

gromax

Hallo MaggieMay,
ich weiß wohl, dass es aus Eurer Sicht mühsam ist, den Unbedarften helfen zu wollen; es liegt mir aber fern, meine Anliegen nicht mit ausreichender Information zu formulieren. Diese Information gebe ich so gut ich kann und hintergründig weiß - deshalb mag es wieder vorkommen, dass ich irgendeine erhellende Info nicht mitliefere; sorry dafür!

In der Hoffnung und mit der Bitte um Hilfestellung habe ich dieser Antwort folgende Informationen beigegeben:

- SQL-Code von allen drei benutzten Abfragen (SQL_Codes III.doc)
- Screenshots zu allen drei Abfragen

Vorab vielen Dank
gromax

HB9876

Hallo,
als kleiner tip, setzte den SQL code immer in code tags.

Mit jeder Antwort komme ich weiter und lerne.<br /><br />Danke!!!

gromax

Hallo HB9876,

den Tipp nehme ich gerne auf - ich dachte nur, es wäre so übersichtlicher:

SQL_Code I:

SELECT qry_STAT_LandkreiseUmsetzungen2Test.UMS_Art_lang, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonLKR_NameKurz, qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS, qry_STAT_LandkreiseUmsetzungen2Test.BEA_SchjBeginn, qry_STAT_LandkreiseUmsetzungen2Test.EIN_Name, qry_STAT_LandkreiseUmsetzungen2Test.SCM_SchulartKurz, qry_STAT_LandkreiseUmsetzungen2Test.NAT_Landname_lang, qry_STAT_LandkreiseUmsetzungen2Test.BEA_Schulbegleitung, qry_STAT_LandkreiseUmsetzungen2Test.UMS_FS, qry_STAT_LandkreiseUmsetzungen2Test.SOP_MFS, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonSOP_MFS
FROM qry_STAT_Lkr_UMS3_A RIGHT JOIN qry_STAT_LandkreiseUmsetzungen2Test ON qry_STAT_Lkr_UMS3_A.LKR_FS = qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS;


SQL_Code II:

SELECT tbl_LANDKREISE.LKR_NameKurz, tbl_UMSETZUNGEN.UMS_Art_lang, tbl_BEARBEITUNG_SCH_VER.UMS_FS, Count(tbl_LANDKREISE.LKR_NameKurz) AS AnzahlvonLKR_NameKurz, tbl_EINRICHTUNGEN.LKR_FS, tbl_BEARBEITUNG_SCH_VER.BEA_SchjBeginn, tbl_EINRICHTUNGEN.EIN_Name, tbl_SCHULARTEN.SCM_SchulartKurz, tbl_NATIONEN.NAT_Landname_lang, tbl_BEARBEITUNG_SCH_VER.BEA_Schulbegleitung, tbl_BEARBEITUNG_SCH_VER.SOP_MFS, Count(tbl_BEARBEITUNG_SCH_VER.SOP_MFS) AS AnzahlvonSOP_MFS
FROM tbl_UMSETZUNGEN INNER JOIN (tbl_SCHULARTEN INNER JOIN ((tbl_NATIONEN INNER JOIN tbl_SCHUELER ON tbl_NATIONEN.NAT_PS = tbl_SCHUELER.NAT_FS) INNER JOIN (tbl_KOSTENTRAEGER RIGHT JOIN ((tbl_LANDKREISE INNER JOIN tbl_EINRICHTUNGEN ON tbl_LANDKREISE.LKR_PS = tbl_EINRICHTUNGEN.LKR_FS) INNER JOIN tbl_BEARBEITUNG_SCH_VER ON tbl_EINRICHTUNGEN.EIN_PS = tbl_BEARBEITUNG_SCH_VER.EIN_FS) ON tbl_KOSTENTRAEGER.KOS_PS = tbl_BEARBEITUNG_SCH_VER.KOS_FS) ON tbl_SCHUELER.SuS_PS = tbl_BEARBEITUNG_SCH_VER.SuS_FS) ON tbl_SCHULARTEN.SCM_PS = tbl_EINRICHTUNGEN.SCM_FS) ON tbl_UMSETZUNGEN.UMS_PS = tbl_BEARBEITUNG_SCH_VER.UMS_FS
GROUP BY tbl_LANDKREISE.LKR_NameKurz, tbl_UMSETZUNGEN.UMS_Art_lang, tbl_BEARBEITUNG_SCH_VER.UMS_FS, tbl_EINRICHTUNGEN.LKR_FS, tbl_BEARBEITUNG_SCH_VER.BEA_SchjBeginn, tbl_EINRICHTUNGEN.EIN_Name, tbl_SCHULARTEN.SCM_SchulartKurz, tbl_NATIONEN.NAT_Landname_lang, tbl_BEARBEITUNG_SCH_VER.BEA_Schulbegleitung
HAVING (((tbl_BEARBEITUNG_SCH_VER.UMS_FS)<>11) AND ((tbl_SCHULARTEN.SCM_SchulartKurz)<>"KiGa"));


SQL_Code III:

SELECT tbl_KOSTENTRAEGER.KOS_PS, tbl_BEARBEITUNG_SCH_VER.BEA_PS, tbl_KOSTENTRAEGER.LKR_FS, tbl_KOSTENTRAEGER.KOS_AbteilungLang, tbl_KOSTENTRAEGER.KOS_AbteilungKurz
FROM tbl_KOSTENTRAEGER INNER JOIN tbl_BEARBEITUNG_SCH_VER ON tbl_KOSTENTRAEGER.KOS_PS = tbl_BEARBEITUNG_SCH_VER.KOS_FS;


Viele Grüße
gromax

MaggieMay

Hi,
Zitat"Das Mehrfachwertfeld '[SOP_MFS]' ist im 'IIf([qry_STAT_LandkreiseUmsetzungen2Test].[AnzahlvonSOP_MFS]>1,"MFB",[SOP_MFS])'-Ausdruck nicht gültig.
in den gezeigten Abfragen ist nirgendwo ein "IIF" zu finden.
Freundliche Grüße
MaggieMay

gromax

Hallo MaggieMay,

den Ansinnen eine Gasse, der Schludrigkeit eine Autobahn!
Ich habe diese nicht funktionierende Wenn-Dann-Bedingung jetzt eingepflegt:

SELECT qry_STAT_LandkreiseUmsetzungen2Test.UMS_Art_lang, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonLKR_NameKurz, qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS, qry_STAT_LandkreiseUmsetzungen2Test.BEA_SchjBeginn, qry_STAT_LandkreiseUmsetzungen2Test.EIN_Name, qry_STAT_LandkreiseUmsetzungen2Test.SCM_SchulartKurz, qry_STAT_LandkreiseUmsetzungen2Test.NAT_Landname_lang, qry_STAT_LandkreiseUmsetzungen2Test.BEA_Schulbegleitung, qry_STAT_LandkreiseUmsetzungen2Test.UMS_FS, qry_STAT_LandkreiseUmsetzungen2Test.SOP_MFS, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonSOP_MFS, IIf([AnzahlvonSOP_MFS]>1,"MFB",[SOP_MFS]) AS Vergleich
FROM qry_STAT_Lkr_UMS3_A RIGHT JOIN qry_STAT_LandkreiseUmsetzungen2Test ON qry_STAT_Lkr_UMS3_A.LKR_FS = qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS;


Viele Grüße
gromax

MaggieMay

Hi,

aus deinem letzten Thread (http://www.access-o-mania.de/forum/index.php?topic=20390.0) bist du ja leider kommentarlos ausgestiegen, dabei hättest du dort schon lernen können, wie auf die Werte eines Mehrwertfeldes zugegriffen werden kann, nämlich über die Value-Eigenschaft.
Freundliche Grüße
MaggieMay

gromax

Hallo MaggieMay,

es mag sein, dass ich das eine oder andere - oder auch vieles - in MS Access nicht verstehe, aber dass ich die Beiträge von Dir oder auch den anderen Supportern nicht wertschätze oder auch nur kommentarlos stehen lassen würde, liegt nun wahrlich nicht in meinem Sinn. Dazu habe ich die vergangenen Monate viel zu viel von Euch profitiert - mit großem Dank und Respekt profitiert!!
Den letzten Thread habe mit Dankesworten und dem Setzen des "grünen Hakens" abgeschlossen und die beiden nachfolgenden Beiträge von Dir und Franz nicht mehr zur Kenntnis genommen. Das ist zugegebener Weise nicht in Ordnung, aber ich habe mit dem neuen Problem in diesem Thread den anderen einfach nicht mehr beachtet - er war ja in meiner Wahrnehmung mit der gewünschten Darstellung des mehrwertigen Feldes im Bericht "abgeschlossen".

Jetzt weiß ich allerdings immer noch nicht, wie ich eine Darstellung mit der Wenn-Dann-Bedingung herstellen kann und ob dieses überhaupt funktioniert.
Deinen Hinweis mit der Value-Eigenschaft habe ich aufgegriffen und in den verschiedensten Variationen in meine Abfrage eingepflegt, aber weitergekommen bin ich leider nicht.

SELECT qry_STAT_LandkreiseUmsetzungen2Test.UMS_Art_lang, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonLKR_NameKurz, qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS, qry_STAT_LandkreiseUmsetzungen2Test.BEA_SchjBeginn, qry_STAT_LandkreiseUmsetzungen2Test.EIN_Name, qry_STAT_LandkreiseUmsetzungen2Test.SCM_SchulartKurz, qry_STAT_LandkreiseUmsetzungen2Test.NAT_Landname_lang, qry_STAT_LandkreiseUmsetzungen2Test.BEA_Schulbegleitung, qry_STAT_LandkreiseUmsetzungen2Test.UMS_FS, qry_STAT_LandkreiseUmsetzungen2Test.SOP_MFS, qry_STAT_LandkreiseUmsetzungen2Test.AnzahlvonSOP_MFS, IIf([SOP_MFS.Value]>1,"MFB",[SOP_MFS]) AS Vergleich
FROM qry_STAT_Lkr_UMS3_A RIGHT JOIN qry_STAT_LandkreiseUmsetzungen2Test ON qry_STAT_Lkr_UMS3_A.LKR_FS = qry_STAT_LandkreiseUmsetzungen2Test.LKR_FS;

(vgl. Abfrage_SOP_MFS03.jpg)
Für Hilfen in welcher Form auch immer bin ich sehr dankbar; und wenn es dann so aussieht wie in meiner Visualisierung, dann komme ich weiter (vgl. Abfrage_SOP_MFS04.jpg)
Bei allen Bedenken gegenüber den Mehrwert-Feldern, die ich überall lese und zur Kenntnis bekomme:
Es hilft mir auch, wenn man mir sagt, dass ich mich in eine Sackgasse hineinbegebe und dass es in Access dafür keine Lösung gibt; ich bräuchte nun mal die Funktionalität zum Ankreuzen von mehreren Arten der Behinderung (vgl. Abfrage_SOP_MFS05.jpg). Mit dem Mehrwertfeld klappt dies sowohl im Formular wie auch im Bericht bestens; nur wenn ich die anfallenden Behinderungen in einem anderen Bericht mit einer DOM-Funktion zählen möchte, dann klappt dies nicht, weil ich das FELDXY in der Abfrage (s.o.) nicht formuliert bekomme.
Meine DOM-Funktion lautet:

=Wenn(IstNull(DomSumme("AnzahlvonLKR_NameKurz";"qry_STAT_LandkreiseUmsetzungen2";"[FELDXY]='GB' And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"));0;DomSumme("AnzahlvonLKR_NameKurz";"qry_STAT_LandkreiseUmsetzungen2";"[ FELDXY]='GB' And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"))


Viele Grüße
gromax

DF6GL

#9
Hallo,
mit z. B.:

Select BEA_PS,.... ,Dcount("SOP_MFS.Value","tbl_Bearbeitung_Sch_Ver","BEA_PS = " & [BEA_PS]) from tbl_Bearbeitung_Sch_Ver ...

kann die Anzahl der Einträge des Mehrwertfeldes pro DS ermittelt werden...


Andererseits versteh ich aber nicht genau, was erreicht werden soll:

ZitatJetzt möchte ich aber auch die Schüler mit nur einer Behinderung zählen, also z.B. alle körperbehinderten Kinder. Wie kann ich in einer Abfrage nur die KB-Schüler auslesen, die eine Einfach-Behinderung in eben diesem mehrwertigen Feld hinterlegt haben

Soll hier nur nach der Anzahl von Behinderungen (in diesem Fall 1) gesucht werden oder nach einer bestimmten Behinderung.

Schüler, die nur eine Behinderung haben:
Select BEA_PS, .... ,
    Dcount("SOP_MFS.Value","tbl_Bearbeitung_Sch_Ver","BEA_PS = " & [BEA_PS]) from tbl_Bearbeitung_Sch_Ver
Where
   Dcount("SOP_MFS.Value","tbl_Bearbeitung_Sch_Ver","BEA_PS = " & [BEA_PS]) =1



Schüler, die nur eine einzige und bestimmte Behinderung haben:
Select BEA_PS, .... ,
   Dcount("SOP_MFS.Value","tbl_Bearbeitung_Sch_Ver","BEA_PS = " & [BEA_PS]) from tbl_Bearbeitung_Sch_Ver
Where
   Dcount("SOP_MFS.Value","tbl_Bearbeitung_Sch_Ver","BEA_PS = " & [BEA_PS]) =1
And
   SOP_MFS.Value = "Körperbehinderung"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gromax

Hallo Franz,
vielen Dank für Deine Hilfe!
Ich kann mein Anliegen nur sehr unzureichend kommunizieren; ich probier es trotzdem nochmal:
- In einer Abfrage habe ich das Mehrwertefeld [SOP_MFS], das bei mehreren Behinderungsarten verschiedene long-Werte aufnehmen kann.
- In der gleichen Abfrage kann ich diese Einträge in einem Feld [AnzahlvonSOP_MFS] auch zählen lassen; das klappt.
- In einem Bericht möchte ich aber eine statistische Auswertung vornehmen und die Anzahlen für die Mehrfachbehinderungen und für die verschiedenen Einfachbehinderungen ausgeben; das klappt nicht.
- Nun dachte ich, man kann mit einer WENN-DANN-Bedingung in der Abfrage eine weitere Spalte einpflegen, die bei Mehrfachbehinderungen das Kürzel "MFB" oder auch eine Zahl - ([SOP_MFS] ist ja ein Long-Werte-Feld) - ausweist und bei einer Einfach-Behinderung den entsprechenden Wert aus dem Mehrwerte-Feld ausgibt.
- Dann kann ich über die DomAnzahl-Funktion die entsprechenden Statistik-Werte auslesen.
Wenn dies ginge, wäre das toll!

Im jetzigen Status meiner DB kann ich wohl die Mehrfachbehinderung auslesen:

=Wenn(IstNull(DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]>1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"));0;DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]>1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [LKR_FS]=1"))


eine analoge Funktion für die Körperbehinderung (SOP_MFS=3) funktioniert aber nicht (vgl. Anlage):


=Wenn(IstNull(DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]=1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [SOP_MFS]=3 AND [LKR_FS]=1"));0;DomAnzahl("AnzahlvonSOP_MFS";"qry_STAT_LandkreiseUmsetzungen2";"[AnzahlvonSOP_MFS]=1 And [BEA_SchjBeginn]='" & [BEA_SchjBeginn] & "' AND [SOP_MFS]=3 AND [LKR_FS]=1"))


Gibt es da einen Weg?

Einen guten Start in die Woche
gromax

MaggieMay

Hi,

ich glaube ich hatte es schon mal erwähnt, wenn du auf einen einzelnen Wert zugreifen willst, musst du die Value-Eigenschaft des mehrwertigen Datenfeldes ansprechen.

Anstelle der vielen Bilder hättest du evtl. eine Beispiel-DB hochladen sollen, um schneller ans Ziel zu kommen.
Freundliche Grüße
MaggieMay

gromax

Hallo MaggieMay,

anbei eine Beispiel-DB mit den 3 Abfragen und dem dazu gehörenden Bericht; hier werden die Summen korrekt dargestellt nur bei der Zeile für die Behinderungsart "Körperbehinderung" wird 'Fehler' ausgewiesen. Hier liegt mein Problem.
Einen Zugriff über die Value-Eigenschaft des Mehrwertfeldes habe ich stundenlang (!) in allen Variationen versucht - durchgehend erfolglos!

Für Deine Unterstützung  vielen Dank
gromax

DF6GL

Hallo,


die Ausdrücke in den Steuerelementinhalten der Felder für "GB", "HB", ... folgen doch der selben Struktur...(die ich im Einzelnen jetzt nicht analysiert habe). Wenn ein solcher  Ausdruck stimmig ist, dann sollte es auch für "Körperbehinderung" funktionieren.

Kopiere den Ausdruck von z. B. "HB" (Text222), setze ihn bei "KB" (Text223) ein und ändere dort bei den Kriterien "HB" in "KB" um.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

Hi,

der Haken daran ist, dass der Code für die anderen Felder zwar keinen Fehler wirft aber trotzdem falsch ist. ;-)

Die Abfrage "qry_STAT_LandkreiseUmsetzungen2" ist für die Auswertung nicht geeignet, du brauchst die Details der mehrwertigen Felder.
Freundliche Grüße
MaggieMay