Verknüpfungsauswahl filtern um bereits verknüpfte Datensätze
Hi,
ich habe zu einem Datensatz eine Verknüpfungstabelle 1:n. Wenn ich auf "neuer Datensatz" klicke, kommt die nächste Maske in welcher ich wiederum klicken kann um dann einen Datensatz auszuwählen der Verknüpfungstabelle auszuwählen. HIer habe ich einen Filter auf ein Feld bereits gesetzt, um nur relevante Datensäätze ind er Auswahl angezeigt zu bekommen.
Nun sollen aber auch Datensätze in der Auswahltabelle nicht mehr angezeigt werden, die bereits verknüpft sind.
Der Versuch: a.Projekte != b.Verkauf führe leide rnicht zum Erfolg auch Dinge wie a.Projekte.Nr != b.Verkauf.Nr klappt nicht.
Kann jemand helfen?
Gruß, Timo
14 Antworten
-
Hallo Timo,
wundert mich ein wenig. Wenn ich 1:n Verknüpfungen habe und werden die bereits verknüpften Datensätze eigentlich sowieso nicht mehr zur Auswahl angezeigt da die ja bereits Verknüpft sind und nicht nochmal verknüpft werden könne. In welcher Tabelle ist die Verknüpfung denn 1:n? Doch in der, in der Du den Datensatz asuwählen willst oder?
2. Frage. Du meinst sicher "suchen und hinzufügen" und nicht neuer Datensatz" oder? Weil dann öffnet es sich ja kein Auswahldialog sonder ein neuer Datensatz wird erstellt.
Unabhängig davon könntest Du ja einfach eine Spalte anzeigen lassen mit der Verknüpfung (Also 'Verkauf' wenn cih das richtig sehe) und die auf "leer" filtern.
lg Florian
-
Hi Florian,
das mit dem Anzeigfilter würde gehen, dann filtert es mir aber alle Datensätze aus Verkauf die mit irgendeinem Projekt verknüpft sind.
Die Struktur sieht so aus.
Tabelle "Projekte":
1:n Verknüpfung zu Verkauf. Hier wird dann an der Tabelle "neuer Datensatz" angezeigt. Dann kommt das Verknüpfungsfeld "Verkauf". Klick darauf, wird die Tabelle aller Datensätze aus der Tabelle "Verkauf" angezeigt. Hier filter ich schon nach allen Datensätzen die unter "Projekte" mit dem gleichen Kunde verknüüpft sind, das klappt soweit. Nun müsste der Filter ja so erweitert werden, dass in der Tabellenauswahl nur noch Datensätze aus "Verkauf" angezeigt werden, für die es noch keine Verknüpfung in der Tabelle Projekte_Verkauf gibt. Hier fehlt mir der Ansatz, da der Filter auf "Verkauf" ja bedingt werden müsste durch die Verknüpfungstabelle Projekte_Verkauf? -
achso also nicht wenn Du auf neuer Datensatz klickst sonder in die Tabelle rein. Das enspricht ja dann "Suchen und Hinzufügen".
Ok dann Spalte einfügen -> Funktion. Und einfach die Spalte nochmal auswählen. Dann hast du die Spalte 2x zum filtern.
-
Oder hast Du nochmal eine VErknüpfungs-Hilfstabelle dazwischen? Wenn ich deinen ersten Post lese kommt mir das gerade so vor
-
Es gibt eine Verknüpfungstabelle Projekte zu Verkauf...
-
oh, die Bildbeschreibungen werden offenbar nicht angezeigt...
1: In Projekte die angezeigten Verknüpfungen. Dann klick auf "neuer Datensatz"
2: Auswahl der Verknüpfung
3: Anzeige der Tabelle aus "Verkauf" die nun gefilter sein soll um Datensätze die in (1) schon stehen -
Ah ja ok also eine Hilftabelle damit man die Datensätze öfter Verknüpfen kann. Frage mich nur warum es die gibt wenn du das ja gar nicht willst. So eine Zwischenverknüpfung nimmt man ja um n:n zu verknüpfen. Aber egal.
-
Dann würde ich beim Verknüpfungsfeld 'Verkauf' über erweiterte Optionen anzeigen -> Einschränkungen festlegen:
-
a = 0
-
Weil Du willst doch da nur Datensätze angezeigt haben die noch nicht mit der aktuellen Datenbank (a) verknüft sind. Müsste ich aber jetzt selbst vor mir haben zum testen :-)-
lg
-
Oder eher a = null
-
ich würde ja eher auf
not b.Projekte_Verkauf
tippen
-
Ein Datensatz aus Verkauf kann durchaus auch noch bei einem anderen Projekt verknüpft sein. Bei ein und dem selben Projekt aber nur einmal, daher die Tabelle dazwischen.
a = null zeigt überhaupt keine Datensätze mehr an
not b.Projekte_Verkauf filtert die schon verknüpften auch nicht raus
Vielleicht ist es echt ganz easy, aber von der Logik her müsste ich doch erstmal alle Datensätze aus ProjekteVerkauf sammeln, bei denen Projekt.Nr = this.Nr ist. Dann aus den gewonnenen Zeilen die Verkauf.Nr erhalten und nun die Tabelle filtern um alle diese Verkauf.Nr. Bekommt man das in einem a.xy != b.yz hin?
-
Müsste das echt mal sehen. Aber a ist doch a(Projekte_Verkauf) und b(Verkauf) oder?
-
Dann würde die Einschränkung a=null doch bedeuten, dass nur Verkauf Datensätze angezeigt werden die noch keine VerknÜpfung zu Projekte_Verkauf haben. Und das ist doch was du wolltest oder?
-
oder vielleicht:
-
b.Projekte_Verkauf.Verkauf = null
-
Das hab ich aber noch nicht probiert ob das geht...
-
Danke für eiuren Input. Die Anzeige der Verknüpfung in Tabelle, um dann dort nach leeren zu fltern hat mich in die richtige Richtung geleitet.
Mit dem Filter a.Projekte != b.Projekte.Projekte klappts!
-
Hi Timo,
das wird aber nur so lange klappen, wie ein Datensatz im Verkauf mit nur exakt einem Projekt verknüpft ist.
not contains(concat(b.Projekte.Projekte.<Textfeld>),a.Projekte.<Textfeld>)
<Textfeld>
meint ein eindeutiges Textfeld in Projekte. Code ohne Gewähr - a und b würfel ich gerne mal durcheinander :-)lg, Torsten
-
guter Hinweis, Danke!
Content aside
- vor 3 JahrenZuletzt aktiv
- 14Antworten
- 949Ansichten