PDA

Vollständige Version anzeigen : Kombifeld - wenn gebundene Spalte ausgeblendet verschwindet Anzeige


Smaug
07.05.2004, 09:00
Guten Morgen zusammen,
ich habe hier ein Problem mit der Auswahl in einem Kombifeld. Das Kombifeld in Tabelle ErgebnisseQuant bezieht seine Datenherkunft aus einer Tabelle Analysenmethoden und soll die ID in der Tabelle tblToxQuant im Feld BA abspeichern. So weit ist alles o.k.
Allerdings darf man für dieses Feld nur eine Analysenmethode auswählen, die in einer anderen Tabelle (BestAnalysen) für die Komponente aus der Tabelle ToxQuant für den jeweils aktuellen Datensatz im Formular hinterlegt ist – also etwa so:
SELECT IDAnalysenmethode, MethodenName, tblBestAnalysen.fiCompound
FROM tblAnalysenmethoden
INNER JOIN tblBestAnalysen
ON tblAnalysenmethoden.IDAnalysenmethode = tblBestAnalysen.fiAnalysenmethode
WHERE (tblBestAnalysen.fiCompound)=[Comp];
(wobei Comp der Alias-Name für fiCompound in der Tabelle ErgebnisseQuant ist da fiCompound in 2 Tabellen vorkommt!)
Anm.: Ich habe mehrere Verknüpfungsvarianten zwischen den einzelnen Tabellen ausprobiert- jedoch führten alle zum gleichen Problem.
Letztendlich kann ich auch die korrekte Auswahl treffen wonach mir nach Verlassen des Feldes (im Formular ist bei Datensatzwechsel noch ein Requery definiert um die Komponente des nächsten DS zu aktualisieren) allerdings nur die gespeicherte Zahl angezeigt wird. Wenn ich die 1.Spalte im Kombifeld auf 0cm einstelle, verschwindet der ausgewählte Wert beim Verlassen des Datensatzes ganz und es wird nur ein leeres Kombifeld angezeigt (der Wert ist allerdings korrekt gespeichert).
Frage: was ist hier faul ??

J_Eilers
07.05.2004, 10:28
Hi,

leider scheint das an dem Endlosformular zu liegen. Wenn du das Form auf Einzelformular umschaltest, dann funktioniert es tadellos. Was mich etwas stutzig macht, ist, dass die ID's angezeigt werden und bleiben, denn bei der Zuweisung neuer Daten, sollten diese normalerweise auch verlorengehen :confused:

Smaug
07.05.2004, 10:40
Hallo Jan,
erst mal danke dass Du Dir mein Dilemma angeschaut hast. ;) Bei mir ist kein Unterschied zwischen Einzel- und Endlosdarstellung. Das Problem ist genau dass im Feld BestAnalyse nur die ID angezeigt wird - wo ich doch den Namen der Komponente wollte. Ich könnte zwar ein Textfeld teilweise drüberlegen und dieses unsichtbar schalten wenn das Kombifeld aktiv ist - aber das wäre etwas quick and dirty.
Ich fürchte es wird wohl doch arg schwierig wenn auch Du bei dieser Kombifeld-Sache vor einem Rätsel stehst - wo Du dich so gut auskennst mit Kombi- und Listenfelder.
Vielleicht kommt ja noch eine Idee aus dem Forum :confused:

Arne Dieckmann
07.05.2004, 10:43
Mich irritiert das Kriterium in der Abfrage. Woher kommt [Comp]? Die Tabelle "ErgebnisseQuant " als Lieferant ist in dem SQL-String nicht zu sehen. Liesse sich das nicht über einen Join lösen, oder was hast Du damit vor. Wenn das Kriterium testweise weggelassen wird, funktioniert das Kombifeld dann besser (Spaltenbreiten entsprechend auf 0 und 2 cm stellen)?

J_Eilers
07.05.2004, 10:45
Das Problem ist definitiv das Kriterium und ich frage mich gerade warum es überhaupt funktioniert. Welches Feld aus welcher Tabelle soll dort eingetragen werden?

Smaug
07.05.2004, 10:52
Da fiCompound in zwei Tabellen enthalten ist (in ErgebnisseQuant und in der Tabelle BestAnalysen) kam es zu Zugriffskonflikten bei der Definition des Kriteriums weswegen ich im Formular das Feld mit dem Steuerelementinhalt fiCompound (aus der Tabelle ErgebnisseQuant) in Comp umbenannt habe. Anschliessend hat Access das Kriterium akzeptiert. Ich habe die gleichen Probleme wenn ich die Tabelle ErgebnisseQuant in der Datenherkunft des Kombifeldes habe (z.B. mit einer Verknüpfung zwischen dem Feld BA und der IDAnalysenmethode aus der Tabelle Analysenmethoden.
Ich denke auch dass es sich um ein Verknüpfungsproblem handeln könnte da es ohne Kriterium funktioniert.
Hintergrund ist dass für eine gemessene Komponente für Nachmessungen eine weitere Analysenmethode als Referenzmethode vereinbart werden soll. Die Zuordnung von Komponente und Analysenmethode wird in der Tabelle BestAnalysen festgelegt.

J_Eilers
07.05.2004, 10:58
Setze mal das in deine Abfrage ein. Damit wird mir zumindest ein Ergebnis angezeigt:

[tblErgebnisseQuant]![fiCompound]

Smaug
07.05.2004, 11:26
habe nun als Datenherkunft des Kombifeldes
SELECT DISTINCT tblAnalysenmethoden.IDAnalysenmethode, tblAnalysenmethoden.MethodenName, [tblErgebnisseQuant]![fiCompound] AS Ausdr1
FROM (tblErgebnisseQuant INNER JOIN tblAnalysenmethoden ON tblErgebnisseQuant.BA = tblAnalysenmethoden.IDAnalysenmethode) INNER JOIN tblBestAnalysen ON tblAnalysenmethoden.IDAnalysenmethode = tblBestAnalysen.fiAnalysenmethode
WHERE ((([tblErgebnisseQuant]![fiCompound])=[comp]));
was bei mir aber leider nichts in der Darstellung geändert hat. Ich sehe wiederum bei Weggehen nur die ID wie zuvor. Bei einem Einsatz von [tblErgebnisseQuant]![fiCompound] würden alle BestAnalysen angezeigt - was wiederum falsch wäre.

Arne Dieckmann
07.05.2004, 11:30
In der ersten Zeile muss dann aber auch

...tblAnalysenmethoden.MethodenName, [tblErgebnisseQuant]![fiCompound] AS Comp ...

stehen, oder?


und im Kriterium:

WHERE (tblBestAnalysen.fiCompound)=[Comp];

Smaug
07.05.2004, 12:08
@Arne: ja so funkioniert es insofern wieder dass dann die ID aus der ersten Spalte wieder im Formular angezeigt werden. (Wenn man sich column0 und column1 anzeigen lässt) Beim Verlassen des Kombifeldes ist dann der Name der Analysenmethode wieder verschwunden und die Zahl bleibt stehen. Schaltet man column0 unsichtbar alles wie gehabt... :confused:

Smaug
11.05.2004, 07:46
@ Arne und Jan: nochmals Vielen Dank an Euch beide für die viele Mühe. Ich habe das Problem jetzt mit einem Textfeld umgangen das ich über das Kombifeld gelegt habe und das bei Fokuserhalt einfach auf das Kombifeld schaltet und dieses aufklappt. Zwar etwas quick und dirty - aber der Anwender sollte mit dieser Möglichkeit gut klar kommen.

Nouba
11.05.2004, 08:15
Ich würde das Datenmodell noch mal unter die Lupe nehmen. Du hast da meines Erachtens merkwürdige Abhängigkeiten in die Beziehungen einflochten und in der Abfrage kommt dann eine Beziehung zu Tage, die nicht mal im Beziehungsfenster definiert ist.

Ein Analyseauftrag kann mehrere Komponenten zur Untersuchung haben. Da die Komponente schon einen Verweis auf den Auftrag hat, ist die Beziehung zu tblBestAnalysen von tblAnalysen IMHO falsch bzw. zumindest überflüssig, weil keine Mehrinformation dadurch gewonnen werden kann.

Der Rang, der anscheinend berechnet wird, sollte nicht unbedingt abgespeichert werden, es sei denn, die Berechnungen sind zu zeitintensiv für eine Abfrage. Ich kann mich aber auch täuschen und der Rang bezieht sich auf die Anylysen und hätte in dem Fall nichts mit den Komponenten am Hut.

Smaug
11.05.2004, 08:37
Das Ganze ist wirklich etwas problematisch. Ein Analysenauftrag enthält mehrere Analysen mit mehreren Komponenten. Da es nun vorkommen kann, dass bei den Analysenergebnissen zu einzelnen Komponenten Grenzwerte verletzt werden können, muss ggf. für eine oder mehrere Komponenten wiederum eine Bestätigungsanalyse (Analysenmethode) durchgeführt werden - d.h. es gibt sozusagen ein Folgeauftrag bei dem wiederum eine Analysenmethode mit mehreren Komponenten benötigt werden. Die Zuordnung welche Analysenmethode für welche Komponente noch als Bestätigungsanalyse definiert werden soll, erfolgt in der Tabelle tblBestAnalysen mit einem zusammengesetzten Primärschlüssel. Hierbei kann für eine Komponente eine oder mehrere Analysenmethoden als Bestätigungsanalyse definiert werden - der Anwender hat später die freie Wahl welche Methode er als Bestätigungsanalyse auswählt (auf jeden Fall immer nur eine einzige - sonst ufert das Ganze noch mehr aus). Ich habe allerdings nicht alle Tabellen in die Beispiel-Datenbank belassen und vielleicht noch aus Versehen irgendwo eine Beziehung gelöscht. Bei den bisherigen Versuchen funktionierte die Sache mit dem Kombifeld weder mit noch ohne definierte Beziehungen. Ich weiss auch nicht ob mein Modell 100% o.k. ist - bin aber sehr froh über jede Anregung - und daher schon jetzt vielen Dank dass Du Dir die Sache anschaust. :angel:

Nouba
11.05.2004, 15:34
Hallo Smaug,

Ein Analysenauftrag enthält mehrere Analysen mit mehreren Komponenten.
Normalerweise fallen zur Darstellung dieser Aussage 3 Tabellen an.
Da es nun vorkommen kann, dass bei den Analysenergebnissen zu einzelnen Komponenten Grenzwerte verletzt werden können, muss ggf. für eine oder mehrere Komponenten wiederum eine Bestätigungsanalyse (Analysenmethode) durchgeführt werden
Das würde bedeuten, dass die Verknüpfungstabelle, die Fremdschlüssel auf Analyse und Komponente enthält, 1:n mit der Bestätigungsanalyse zu verknüpfen wäre. Die eigentliche Analyse (Durchführung) hätte dann einen Fremdschlüssel auf die vorherige Methodentabelle.

Smaug
12.05.2004, 06:06
Hallo Nouba. Ich habe die relevanten Beziehungen mal als Grafik angehängt. Beim Erteilen des Auftrags werden fiAuftrag und alle fiCompound zu einer Probe in Abhängigkeit der gewählten Analysen-methoden zu einem Fall (die übergeordnete Tabelle zu tblProben habe ich ausgeblendet)über ein Insert-Statement in die ErgebnisseToxQuant geschrieben - und diese damit vorbelegt so dass nur noch die Ergebnisse eingetragen werden müssen. Wenn ich Dich richtig verstehe, brauche ich also für die tblBestAnalysen einen Primärschlüssel und eine Verknüpfung mit der Ergebnistabelle.
Die eigentliche Analyse (Durchführung) hätte dann einen Fremdschlüssel auf die vorherige Methodentabelle.
Wie wäre das zu realisieren ? Wäre dann noch eine weitere Zwischentabelle mit den Analysenmethoden notwendig ??

Der Rang, der anscheinend berechnet wird, sollte nicht unbedingt abgespeichert werden
Beim Rang handelt es sich nur um eine Priorisierung in der Anzeige die vom User gewünscht ist.

Nouba
12.05.2004, 07:57
Hallo Smaug,

ich steige nicht durch, weil ich die Handlungsabläufe nicht in den Tabellen erkennen kann. Zuerst einmal müßte geklärt werden, was ein Auftrag beinhaltet. Ich würde mal meinen, dass ein Auftraggeber, eine Zeitpunktangabe, wann der Auftrag durchzuführen ist zumindest dazugehört. Jetzt müßte man wissen, ob ein Auftrag verschiedene Details hat. Aus der fiktiven Praxis gesprochen, Du erhälst einen benutzten Aschenbecher und einen Kochtopf mit Essensresten und eine Kleiderprobe. Wenn dem so sein kann, wäre es aus meiner Sicht angebracht, diese Einzelanalyseaufträge wie beim Einkaufen in einer Detailtabelle zum Auftrag anzulegen. Wenn der Auftraggeber eine Reihenfolge oder Priorität festlegt, welche Ergebnisse zuerst abgefordert werden, bzw. Terminvereinbarungen zu jedem Detail vereinbart wurden, gehört diese Beschreibung in die Detailtabelle. Die Materialtabelle enthielte in diesem Fall den Ascher, etc. - beim Einkaufen wären es die Artikel.

Jetzt müßte man wohl Details zu den Details definieren. Sagen wir mal der Auftraggeber möchte wissen, ob THC, Benzol, und eine andere Verbindung vorhanden sind, so wäre einmal eine Tabelle mit nur diesen Verbindungen plus deren Charakteristika (Formel, u. a. Eigenschaft) zu definieren. Die zuvor erwähnte Detailtabelle zur Detailtabelle würde dann für jedes zu untersuchende Material eine Fremdschlüssel auf die zu untersuchende Verbindung erhalten. Ggf. wären Einzelheiten wie Grenzwerte, falls sie vom Auftraggeber und keiner anderen (gestzlichen) Bestimmung (vielleicht gibt es ja Standards) vorgegeben werden, in dieser Detai-lDetailTabelle festzuhalten. Gleiches gilt auch für eine Reihenfolge in der Abarbeitung der Analysen. Wird zu jedem Detail nur ein Wert ermittelt, käme das Ergebnis plus Durchführungsdetails (wer, wann, wo, wie lange, wieviel) mit in diese Tabelle. Werden aber mehrere Ergebnisse je Detail-Detailtabelle erwartet, würden diese Attribute in einer weiteren Detailtabelle zur letztgenannten Detail-Detailtabelle notwendig sein.

Ich hänge mal ein stark auf das notwendige Modell angehangen, dass wir vielleicht als Anhaltspunkt für weitere Diskussionen nehmen können. Vielleicht liege ich mit meiner Vermutung auch komlett daneben. Zum besseren Verständnis könntest Du beitragen, wenn Du eine kurze Ablaufbeschreibung der Objekte und ihreree Handlungen für einen kompletten Zyklus in zeitlicher Reihenfolge angibst. Was ist übrigens der (Haupt)zweck der DB?

Smaug
12.05.2004, 08:54
@Nouba: zuerst mal vielen Dank für Deine Hilfe.
Hauptzweck der DB ist eine Fallverwaltung. Jeder Fall hat einen Auftraggeber und kann eine oder mehrere Proben enthalten (es können bis ein Fall abgeschlossen ist auch nachträglich neue Proben dazu kommen). Die Analyseaufträge (ab hier setzt meine Grafik an) werden für jede Probe vergeben. Für jede Probe können eine oder mehrere Analysenmethoden beauftragt werden. Im Formular geschieht die Zuordnung aber Fallbezogen; d.h. es sind zu einem Fall alle Proben eines Falles sowie alle zur Verfügung stehenden Analysenmethoden aufgelistet. Die Zuordnung geschieht in SQL-Statements die in die tblAnalysenauftrag geschrieben werden (fiProbe, fiAnalysenmethode, Auftragsbeginn, idAuftrag ist ein fortlaufender Autowert).
Zu jeder Analysenmethode sind eine oder mehrere zu untersuchenden Komponenten fix definiert (bis auf einige Spezialfälle die hier aber nicht relevant sind). Limits sind gesetzlich vorgegeben und sind in der tblKomponenten für jede Komponente definiert. Eigenschaften zu den einzelnen Komponenten sind jedoch hier (zum Glück) nicht relevant und brauchen daher nicht berücksichtigt werden.
Bei der Auftragsvergabe der einzelnen Analysen zu den Proben werden des weiteren aufgrund der definierten Analysenmethoden die entsprechend definierten Komponenten zusammen mit der fiAuftrag in die Ergebnistabelle tblErgebnisseToxQuant geschrieben wo die Eingabe der Messergebnisse erfolgt.
Bei nicht plausiblen Analysenergebnissen (entscheidet letztendlich der Benutzer) oder Überschreitung der Limits (in Komponententabelle festgelegt) werden ggf. Bestätigungsanalysen fällig; d.h. die Ergebnisse werden mit einer zweiten Analysenmethode überprüft.
Hierbei werden zu jeder Komponente eine oder mehrere Analysen-methoden als Bestätigungsanalysen definiert. Welche Methode hierbei ausgewählt wird, entscheidet der Benutzer. In diesem Fall wird dann automatisch ein Nachauftrag ausgelöst. In diesem Fall beginnt das Ganze natürlich wieder von vorne; d.h. die neue fiAuftrag und alle fiCompounds der gewählten Analysenmethode (diesmal als Bestätigungs-analysenmethode!)werden neu angelegt.
Der Ablauf könnte sich also etwa wie folgt darstellen:
Fallauftrag --> Proben --> Analysenmethoden <--Komponenten
Proben + Analysenmethoden --> Analysenaufträge --> Ergebnisse

ich kann auch mal eine Beispiel-DB mit den beteilgten Tabellen anhängen wenn dies weiterhilft.

Smaug
12.05.2004, 09:18
@Nouba: noch eine Nach-Bemerkung zu Deiner Grafik: Das dürfte weitgehend meinem Modell entsprechen - wobei Du allerdings noch zusätzlich den Namen der Komponente in einer Tabelle Verbindung ausgegliedert hast - was auf bzgl. Normalisierung auf jeden Fall Sinn macht und ich leider vergessen hatte (schäm).

Nouba
12.05.2004, 09:51
Hallo Smaug,

schön zu wissen, dass wir uns gedanklich in etwa einig sind. Ich habe absichtlich vereinfachte Namen verwendet und weitestgehend auf Attribute verzichtet, die ich als Nicht-Chemiker nicht so recht weiß - da dürfte Jan Eilers eher aushelfen können.

Mit einem Ja/Nein Feld in der METHODE (da findet ja die Auswahl statt, was untersucht wird) könnte man eine Bestätigungsanalyse kenntlich machen. Wenn in der Realität je METHODE nur 1 (ein) Ergebnis resultiert - hast Du in wirklichkeit in der Tabelle ANALYSE eine 1:1 Beziehung vorliegen. Dazu wäre dann der Primärschlüssel in ANALYSE ein langes Ganzzahlenfeld in der Autowert PK METHODEID aus METHODE verweist dauf.

Wenn man jedoch die Bestätigungsanalyse nur interpretiert, ohne ein Merkmal dafür in einer Tabelle anzulegen, entspräche, falls z. B. der Zeitpunkt der Analyse bzw. ein Autowert vorhanden ist, zwangsläufig der jüngste Zeitpunkt bzw. der höchste Autowert in der ANALYSE zu einer ausgewählten METHODE einer Bestätigungsanalyse.


Wenn sich in den Methoden Paare von VERBINDUNGEN und PROBEN wiederholen, könnte ma diese in einer weiteren Tabelle gruppieren, damit z. B. keine fehlerhaften Kombinationen auswählbar sind. Das müßtest Du mal anhand Deiner konkreten Situation prüfen.

Bei Beziehungsansichten habe ich mir angewöhnt, die 1er-Seite immer links anzuordnen, damit die Hierarchie der Tabellen schnell und gut lesbar ist. Vielleicht hift es Dir auch bei Deinem Modell.

Vom ursprünglichen Thema sind wir ja jetzt weit weg. Aber wenn es dann nach wie vor Probleme mit dem Kombifeld gibt, melde Dich auf jeden Fall noch einmal.

J_Eilers
12.05.2004, 10:09
@Smaug

Fallauftrag --> Proben --> Analysenmethoden <--Komponenten
Proben + Analysenmethoden --> Analysenaufträge --> Ergebnisse

Ich gehe mal davon aus, dass es Drogentests sind. Dann sollte es IMHO eher so aussehen:

Auftrag 1 <-> n Proben 1 <-> n Komponenten 1 <-> n Analyse

Dann könnte man die Nachprüfung, wie von Nouba vorgeschlagen mit einem Ja/Nein-Feld kenntlich machen und die Nachprüfungsmethode aus einem SelfJoin der tblAnalyse suchen. Meine Erfahrungen mit den Tests liegen leider etwas zurück, aber in der Regel war es so, dass man zu erst einen selektiven Scan gemacht hat und bei Ausschlag einen eigenen Test auf den entsprechenden Stoff durchgeführt hat. Das sollte man mit dem Aufbau umsetzen können. Oder verstehe ich dort etwas falsch?

Smaug
12.05.2004, 10:19
@Nouba:
Mit einem Ja/Nein Feld in der METHODE (da findet ja die Auswahl statt, was untersucht wird) könnte man eine Bestätigungsanalyse kenntlich machen.
Dieses Feld gibt es – ich hatte es allerdings weggelassen weil ich befürchtete dass es zu komplex wird.

Wenn in der Realität je METHODE nur 1 (ein) Ergebnis resultiert
Deine Tabelle Methode scheint der Analysenauftrag-Tabelle zu entsprechen. Die Verknüpfung zwischen Auftrag und Analysenmethode für eine bestimmte Probe ist sozusagen 1:1; d.h. die Zuordnung von einer Probe zu einer Analysenmethode ergibt einen Eintrag (idAuftrag = Autowert LongInteger).
Allerdings sind zu jeder Analysenmethode noch Komponenten vorhanden; d.h. es gibt mehrere Ergebnisse zu einer Methode. Die Ergebnisse sind also den Komponenten (Verbindung) zugeordnet, daher gibt es als ein weiteres Feld in der Tabelle Ergebnisse (Analysen) noch die fiCompound (VerbindungID) die ebenfalls über das SQL-Statement bei der Auftragsvergabe eingetragen wird. Die AnalyseID ist ein fortlaufender Autowert.
Ob ich auf eine Verknüpfung der fiCompound aus der Ergebnistabelle zur Komponenten-Tabelle verzichten könnte, wäre noch interessant zu wissen.

Wenn sich in den Methoden Paare von VERBINDUNGEN und PROBEN wiederholen
leider muss dies ggf. möglich sein da die gleiche Kombinations wieder via Bestätigungsanalyse beauftragt werden kann - wird aber geprüft und muss vom User bestätigt werden.

Ein Analyseauftrag kann mehrere Komponenten zur Untersuchung haben. Da die Komponente schon einen Verweis auf den Auftrag hat, ist die Beziehung zu tblBestAnalysen von tblAnalysen IMHO falsch bzw. zumindest überflüssig, weil keine Mehrinformation dadurch gewonnen
werden kann.
Ich denke ich werde auf jeden Fall diesen Vorschlag von Dir genau testen. Vielleicht hilft das sogar entscheidend weiter.
Auf jeden Fall schon mal vielen,vielen Dank. Ich konnte wieder mal sehr viel von Dir lernen. :angel:

Smaug
12.05.2004, 10:22
@ Jan: Du liegst mit Deiner Einschätzung genau richtig !!
die Nachprüfungsmethode aus einem SelfJoin der tblAnalyse suchen
wie könnte so etwas z.B. aussehen. Damit habe ich nun leider keinerlei Erfahrungen. Ich kann zwar einen SelfJoin prinzipiell anwenden, doch in dem konkreten Fall hierzu fehlt mir momentan jede Idee.
De facto möchte ich auch im Feld BestAnalyse in der Ergebnistabelle genau dies tun - nur mit der Einschränkung dass es sich um eine zugelassene Bestätigungsanalyse für die Komponente handeln muss (Zuordnungstabelle BestAnalysen mit den Feldern fiAnalysenmethode und fiCompound mit zusammengesetztem Schlüssel). Doch genau hier hat das Kombifeld seine Schwierigkeiten - die mit Sicherheit an den verknüpften Beziehungen liegen dürften.

J_Eilers
12.05.2004, 10:26
Erstelle in der Tabelle Analysenmethode eine separate Spalte. Wenn es ein selektiver Scan ist, dann bleibt die Spalte leer. Wenn es ein Folgetest ist, kommt hier die ID der Vorgängermethode hinein. Im 1. Kombi lässt du dann alle mit IsNull anzeigen und im 2. alle, die die entsprechende VorgängerID haben.

Smaug
12.05.2004, 10:42
Das klingt sehr gut. Das Problem ist nur dass die Definition der Nachfolge-Analyse nicht von der Analysenmethode ausgeht, sondern ein bestimmtes Ergebnis einer Komponente (Limit, Plausibiliät des Messwertes) eine Nachanalyse auslösen kann - bei der aufgrund des "Messfehlers" gleich eine komplette Analysenmethode mit weiteren Komponenten ausgelöst wird. Es gibt de facto also eine Rückverknüpfung zwischen Komponente und Analysenmethode die ich momentan in der tblBestätigungsanalysen definiere.
PS: Die Definition ob es sich um eine Screening-Methode handelt geschieht über ein Ja-Nein-Feld in der tblAnalysenmethoden.

J_Eilers
12.05.2004, 10:49
Angenommen ein Screening liefert mir:

Test erfolgreich
THC positiv
Optiate positiv

Dann kommen als Nachfolgetests doch nur noch Tests in Frage, die
a) Kein Screening sind
b) Auf THC testen
c) Auf Optiate testen

Wenn es nur um eine Unterscheidung zwischen Screening und Einzeltest geht, dann reicht ein Ja/Nein-Feld um die entsprechenden Tests auszuwählen unter Berücksichtigung der Komponenten. Ich versuche mal ein Beispiel zu erstellen. Vielleicht könnte man es dann so lösen. Aber das kann etwas dauern.

Nouba
12.05.2004, 10:51
Hallo Smaug,

Allerdings sind zu jeder Analysenmethode noch Komponenten vorhanden; d.h. es gibt mehrere Ergebnisse zu einer Methode. Die Ergebnisse sind also den Komponenten (Verbindung) zugeordnet,
Dann würde ich leicht abgewandelt so vorgehen. Und eine Art Auswahltabelle erstellen und dazu 1:1 verknüpft die Resultate erfassen.

Die KOMPONENTEN würden die Verbindung zwischen VERBINDUNG und METHODE darstellen, die ja häufiger vorkommt.

J_Eilers
12.05.2004, 11:01
@Norbert So in etwa habe ich es mir auch gedacht. Allerdings würde ich in der Methodentabelle noch ein Feld Screening (Ja/Nein) einbauen, um eher sehen zu können, ob die Methode viele oder nur ein Ergebnis bringt. Auch die Ergebnistabelle würde ich als 1:n aufbauen, da ein Screening mehrere Ergebnisse haben kann. Und generell muss man dann auch eine Aussage wie:
Screening:
Test Ok
THC positiv
Opiate positiv

Einzeltest THC:
Test OK
THC positiv

Einzeltest Opiate:
Test Ok
Optiate negativ

darstellen können.

Smaug
12.05.2004, 11:18
@Nouba: Das sieht sehr gut aus. Das werde ich auf jeden Fall so ausprobieren - sollte funktionieren. Dann wäre ich die zweite Verknüpfung in der Ergebnistabelle los die mir sowieso schon etwas zweifelhaft erschien.

@Jan:
Dann kommen als Nachfolgetests doch nur noch Tests in Frage, die
a) Kein Screening sind
b) Auf THC testen
c) Auf Optiate testen

Das stimmt soweit nicht. Leider ist es komplizierter:

Fall a)
Es gibt eine Analysenmethode, die nur 8 Substanzen messen kann.
Um diese Ergebnisse zu bestätigen brauche ich für jede dieser Substanzen eine weitere Methode, da es keine 2. Methode gibt, die diese Substanzen gleichzeitig messen kann. Somit ist die Bestätigungsmethode für jede Substanz unterschiedlich. Diese Bestätigungsmethode kann aber wiederum ein Screening, oder eine Methode mit festen Substanzen sein.

Fall b)
Es wird ein Screening gemessen, bei dem nicht klar ist, welche Substanzen gemessen werden. Zur bestätigung kann man nun ein anderes Screening machen, oder (wenn es das für die gefundenen Substanz gibt) eine "definierte" Analysenmethode.

Deshalb mussen die Bestätigungsanalysen an die Substanz (Komponente) gebunden sein. Es kann natürlich auch sein, dass es mehrere Methoden für eine komponente gibt (unabhängig davon, in welcher Methode diese gemessen wurde).

Bahnhof? :)

Smaug
12.05.2004, 14:55
@ Nouba / Jan: so nun hab ich mir Eure Ideen mal in der Mittagspause in Ruhe durchgelesen. Bis auf die Ausgliederung der besagten Einzel-substanzen in die Verbindungstabelle (ich beziehe mich hier auf Noubas Grafik) und das Herunterbrechen der Ergebnistabelle in eine reine Resultattabelle (Analyse) mit 1:1-Verknüpfung scheint die Struktur ja weitgehend übereinzustimmen. Wobei - wie Jan sagt - die Ergebnistabelle 1:n sein muss da ein Screening tatsächlich mehrere Ergebnisse haben kann. Nur die festgelegten Nicht-Screening-Analysenmethoden haben fixe Komponenten und dürfen nicht (für einen Auftrag) erweiterbar sein.
Das Problem bleibt dann wohl die Rückwärtsverknüpfung des Feldes Bestätigung in der Tabelle Analysenauftrag mit einer Analysenmethode wobei das Kriterium im Feld KomponenteID der Auftragstabelle selbst gegeben ist. Das Kombifeld erlaubt die korrekte Auswahl der Methode zur Bestätigung hat aber Schwierigkeiten mit der Darstellung des MethodenNamens nach Verlassen des Datensatzes im Endlosformular.
Wie wäre dann die Sache mit der Auswahl der Bestätigungsanalysen zu implementieren ? Bisher habe ich einen doppelten Schlüssel in der tblBestAnalysen auf fiMethode und fiCompound. Auf jeden Fall werde ich mich in den nächsten Tagen schon mal an dem Umbau machen - so viel ist es ja nicht. Ihr habt mir bereits jetzt schon sehr geholfen - vielen Dank !!