Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Listenfeld durch Checkbox einschränken

Begonnen von _schneggal_06, August 06, 2010, 11:14:20

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

ja, bekommst Du...




Ich nehme an, dass Proben von Lebensmitteln, die nach bestimmten Werten (tblProbensubTypen) kategorisiert werden sollen, nach irgendwelchen Analyseverfahren auf irgendwelche Inhaltsstoffe hin untersucht werden. Die Messwerte selber werden nach Übergruppe tblParametergruppen und nach Untergruppe tblParameter kategorisiert.


Zur Filterung nach "Parametern" könnten in der vorliegenden Fassung nun abhängige Kombifelder, bzw. ein von einem Kombi abhängigen Listenfeld benutzt werden.  Die Verwendung der Optionsfelder selber ist mir aber dann nicht ersichtlich. Allenfalls könnte das gefilterte Listenfeld nach Klick auf einen Button z. B. alle Parameter anzeigen.


Bitte diese Ansicht bestätigen bzw. korrigieren.



_schneggal_06

die Inhaltsstoffe sind Parameter. Ein Parameter gehört zu einer bestimmten Parametergruppe. Die Messwerte zeigen wieviel von einem bestimmten Parameter im Probesubtyp enthalten ist.

Im Kombinationsfeld wählt man den Probesubtyp aus zB Erbse. Im Listenfeld werden daweil noch alle Parameter die es gibt angezeigt zB Zink
(es sollten dann natürlich nur alle Parameter die dieser Probensubtyp enthält, angezeigt werden, aber da es wahrscheinlich dabei ein Problem bei den Tabellen gibt, wäre ich froh, für dieses Problem erstmal einen Lösungsansatz zu bekommen.)

Das Optionsfeld ist dazu da um aus diesen ganzen Parameter, die im Listenfeld angezeigt werden  (sind ja in Wirklichkeit pro Probensubtyp ca. 30) dann automatisch alle Paramter markiert zu haben, welche zB zur Gruppe Spurenelemente gehören!

DF6GL

Hallo,

das ist doch doppelt gemoppelt.


Es wird eine "Parametergruppe" im Kombi gewählt. Das Listenfeld zeigt danach nur die Parameter an, die zum ausgewählten Wert (z. B. Spurenelemente) gehören.  Im Listenfeld kann dann einer oder mehrere dieser "Parameter" markiert werden, um damit den Bericht zu filtern.

Dafür sind keine Optionsfelder mehr nötig.



In einigen Minuten hab ich mal ein Beispiel gebastelt...

_schneggal_06

#18
ja es soll ja 1. nur gewisse ausgewählt werden können, 2.) alle auf einmal (optionsfeld) 3.) nur Spurenelemente 4.) nur Mineralstoffe 5.) ....... usw.
da machen zusätzliche Optionsfelder meiner meinung nach schon einen sinn!

im Kombifeld wird kein Parameter ausgewählt sondern ein Probesubtyp wie Erbse
im Listenfeld zeigt er mir alle dazugehörigen Paramter zB Zink an die dieser Probesubtyp enthält

jetzt kann der user entweder selbst Paramter im Listenfeld zur Erbse auswählen um im Bericht die Messwerte dazu zu sehen, oder durch auswählen eines der Optionsfelder, gewisse Parameter wie Parameter die zur Gruppe Spurenelemente gehören, markiert haben

DF6GL

Hallo,

die Auswahl eines Probesubtyp ist erst mal außen vor. Wenn der noch benutzt werden muß, dann muß das Kombi für den Parametertyp ebenfalls vorgefiltert werden.

Ganz unabhängig ginge auch noch, was aber zu einem evtl. leeren Bericht führt.

[Anhang gelöscht durch Administrator]

_schneggal_06

danke ich werde es versuchen so umzusetzen!

_schneggal_06

#21
so dass hat jetzt ganz gut so geklappt! Danke danke:)

Jetzt habe ich aber leider noch immer das Problem mit dem Probesubtyp.
Also nachdem mich unser edvler so zur sau gemacht hat, dass man sehrwohl mit den vorhandenen Tabellen auskommt
und daraufhin auch noch dem chef eine mail schickte, was mir überhaupt einfällt ihn zu kritisieren muss es
mit diesen vorhandenen Tabellen doch auch möglich sein...

In der Tabelle tblProben ist auch noch eine fldProbenbezeichnung enthalten. Diese enthält zwar nicht die gleichen Werte wie
fldProbensubtyp aber ich könnte auch diese verwenden. meine Frage:

wäre eine Verbindung zwischen dem Kombinationsfeld fldProbenbezeichnung aus der tblProben und
der Spalte fldBezeichnung aus der Tabelle tblParameter möglich.
Ich bin echt verzweifelt, weil unser edvler sagt es gehört keine Zwischentabelle wo die Parameter den Probesubtypen zugeordet sind und aus!
Er meinte, dass funktioniere über die tblWerte??
Fragen kann ich ihn auch nicht, da er bis Freitag auf Urlaub ist und er wird schon Recht haben aber
aber wie kann ich das mit den vorhandenen Tabellen bewerkstelligen????

Die Darstellung im Bericht soll dann nämlich so aussehen: zu einem Porbesubtyp (bzw. zu einer Probe) sollen mir die ausgewählten Parameter angezeigt werden.
vlg

DF6GL

#22
Hallo,

naja, "EDVler" haben in den meisten Fällen von Datenbanken(-Aufbau)  keine Ahnung..

Wenn er meint, es müsse gehen (wobei ich immer noch nicht verstanden habe, WAS genau), dann kann er Dir ja auch sagen, wie.


Also nochmal, WAS und vor allem WIE GENAU willst Du, bzw. den Bericht filtern?

Die Verbindungen, die möglich sind, siehst Du ganz einfach an den Beziehungslinien im Beziehungsfenster.

Ich denke, die Schwierigkeit liegt hier an der Logik dessen, wie die Filterungen im einzelnen und in welcher Reihenfolge bedienungsmäßig ablaufen sollen.

Vorher hab ich ja gesagt, dass "Probesubtyp" schon berücksichtigt werden kann, aber eben ist mir nicht ganz klar, welche  Vorstellung zur Filterung Du oder der "EDVler" hat.

Es kann das Gleiche in Grün für diese zwei Tabellen und damit unabhängig von den Parametern gemacht werden, oder aber das "ParameterSubTyp"-Kombi muß wie das Listenfeld vorgefiltert werden.


Evtl auch anders herum: das Probesubtyp-Kombi muß anhand der Auswahl im ParamterSubTyp-Kombi vorgefiltert werden.


_schneggal_06

schreib morgen wieder und versuchs genauer zu erklären, dann bin ich selbst vl auch nicht mehr so verwirrt*g.
für heut ist feierabend;)
bye

_schneggal_06

#24
Guten Morgen da bin ich wieder.

Die 5 Tabellen um die es geht sind genauso in der ProbeDB.
Also das Formular sieht folgendermaßen aus:
Es besteht nun aus zwei Kombinationsfeldern -
Im ersten ist der fldProbensubtyp aus der Tabelle tblProbensubtyp auszuwählen (kann aber auch die fldProbenbezeichnung aus
der Tabelle tblProben sein)

Im zweiten Kombinationsfeld kann man vorzugsweise die im Listenfeld angezeigte fldBezeichnung aus der tblParameter einschränken, indem man
eine der Gruppen auswählt, oder man wählt selbst vereinzelte aus und drückt auf Bericht erstellen.

Im Bericht andererseits wird im Berichtskopf nun der zuvor ausgewählte Probesubtyp angezeigt und im Kopfbereich und im Detailbereich (gefiltert nach der fldBezeichnung) die dazugehörigen(!!) Parameter und der dazugehörige Messwert angezeigt. Im Fußbereich wird der Mittelwert, die Standardabweichung, min und max der Messwerte ausgegeben.

Das funktioniert ja alles schon super! Die einzige offene Frage, die bleibt ist, wie die Verbindung zwischen Probesubtyp und Parameter funktionert. Wählt man nun im ersten Kombifeld den Probesubtyp so sollen im Listenfeld automatisch nur diese Paramter angezeigt werden, die dieser Probesubtyp auch tatsächlich enthält. und dann soll man diese zusätzlich (da es pro Parameter ca. 20 sind) diese nach den Gruppen nochmals einschränken können.

Bei der Eingabe der Proben in die DB wird ja auch jedesmal der Probesubtyp und Probebezeichnung eingegeben und dann die Parameter dazu. Also muss diese Verbindung irgendwie mit den FK der Tabelle Werte funktionieren. Wenn du für dieses Problem auch keine Lösung siehst, bzw. der gleichen Meinung bist wie ich, dass eine Zwischentabelle fehlt, brauch ich nur gute Argumente, weil als ich das letzte mal wegen diesem Problem anrief, machte er mich nur zu sau, und dass ich ja keine ahnung habe....und ich denk mal er hat recht, also wie klappt diese Verbindung;)
lg

DF6GL

Hallo,



Es braucht keine Zwischentabelle , nur eine geeignete Abfrage über die beteiligten Tabellen, die dem Auswahl-Kombi als Datensatzherkunft angeboten wird, das Gleiche gilt auch für das Listenfeld.


Nach wie vor bin ich der Meinung, dass diese (Deine) Suche als Vorgang/Ablauf nicht das Gelbe vom Ei ist.


Knackpunkt wird sein, wie oben gesagt, geeignete Abfragen für die Auswahl-Kombis und das Listenfeld zu generieren und mit den richtigen Kriterien (per VBA) zu versorgen und zuzuweisen.

_schneggal_06

#26
naja nicht das gelbe vom ei- was würdest du den vorschlagen...der chef wollte es so
also hab ichs auch so gemacht...

ok mir ist das mit der Datensatzherkunft schon klar, aber in vba kann ich so gut wie nix...
kannst du mir da vl helfen?

_schneggal_06

#27
Hilfe!!:)
Also ich würde jetzt aus dem ersten Kombinationsfeld ein afterUpdate() funktion schreiben, die ähnlich ist, wie jene, die du für das Kombinationsfeld Parametertypen verwendet hast und wahrscheinlich dann über innerjoins zum ergebenis....aber ich weiß nicht, was in die WHERE Klausel kommt?

irgendwie so oder:
Private Sub CmbTyp_AfterUpdate()
Me!lstParam.RowSource = "SELECT p.fldProbensubtypFK, ps.fldProbensubtyp, w.fldParameterFK, pa.fldBezeichnung, w.fldProbenFK, p.fldProbenID FROM tblProbensubtypen pa INNER JOIN tblProben p ON ps.fldProbensubtypID = p.fldProbensubtypFK INNER JOIN w.tblWerte ON p.fldProbenID = w.fldProbenFK AND p.fldProbenID = w.fldProbenFK INNER JOIN tblParameter pa ON w.fldParameterFK = pa.fldParameterID = " & Me!cmbProbe & " order by fldBezeichnung "
End Sub

DF6GL

#28
Hallo,


Private Sub CmbTyp_AfterUpdate()
Me!lstParam.RowSource = "SELECT p.fldProbensubtypFK, ps.fldProbensubtyp, w.fldParameterFK, pa.fldBezeichnung, w.fldProbenFK, p.fldProbenID FROM tblProbensubtypen pa INNER JOIN tblProben p ON ps.fldProbensubtypID = p.fldProbensubtypFK INNER JOIN w.tblWerte ON p.fldProbenID = w.fldProbenFK AND p.fldProbenID = w.fldProbenFK INNER JOIN tblParameter pa ON w.fldParameterFK = pa.fldParameterID = " & Me!cmbProbe & " Where [DeinFKFeldFürDenTyp] = " & cmbTyp & " order by fldBezeichnung "
End Sub


Tipp:

geh in Abfrageentwurf, füge alle beteiligten Tabelle hinzu und setz für die Kriterien einen Parameter(namen) ein.
Teste die Abfrage, ob sie das erwartete Ergebnis bringt.

Kopiere aus Ansicht/SQL-Ansicht den SQL-String und verwende den in der VBA-Prozedur. Dabei sind Anpassungen bzgl. Syntax und der Ersatz der Parameternamen durch die Variablen, bzw. Steuerelement-Verweise nötig.


_schneggal_06

#29
Juhu also es funktioniert jetzt mal, dass wenn ich den Subtyp auswähle er mir nur die Paramter gibt, der dieser enthält:)
Private Sub CmbTyp_AfterUpdate()
Me!lstParam.RowSource = "SELECT tblParameter.fldParameterID, tblParameter.fldBezeichnung, tblWerte.fldProbenFK, tblWerte.fldParameterFK, tblProben.fldProbenID, tblProbensubtypen.fldProbensubtypID , tblProbensubtypen.fldProbensubtyp, tblProben.fldProbensubtypFK FROM tblParameter INNER JOIN tblWerte ON tblParameter.fldParameterID = tblWerte.fldParameterFK INNER JOIN tblProben ON tblWerte.fldProbenFK = tblProben.fldProbenID INNER JOIN tblProbensubtypen ON tblProben.fldProbensubtypFK = tblProbensubtypen.fldProbensubtypID Where tblProben.fldProbensubtypFK = " & cmbTyp & " order by fldBezeichnung "
End Sub


Drei Sachen fehlen jetzt noch bis zum endgültigen Erfolgt:
- Wenn ich dann im zweiten Kombinationsfeld nach der Parametergruppe sortieren will, gibt er mir alle Parameter dieser Gruppe aus und nicht nur die Parameter dieser Gruppe, die dieser Probesubtyp enthält.
- Es werden mir die gleichen Parameter öfters angezeigt. DISTINCT hilft da auch nichts....
- Es gibt Probesubtypen die keine Parameter besitzen - wie mache ich das, dass diese nicht im Kombinationsfeld angezeigt werden?
zumindest die zwei letzten sind mal wichtig!
idee?