Wiederverwendung von Eintrag eines dynAF verhindern
Guten Morgen,
ich benötige mal einen Denkanstoß.
Es existieren 2 Tabellen im jeweiligen mehreren Tausend Datensätzen, eine Kunden-Tabelle und eine Gutschein-Tabelle. In den Datensätzen der Kunden kann per dynamischen Auswahlfeld ein Gutschein aus der Gutscheintabelle zugeordnet werden.
Problemstellung: da es eben ein dynAF und keine Rückverknüpfung ist, kann jeder Eintrag aus der Gutscheintabelle in beliebig vielen Kundendatensätzen ausgewählt werden.
Das ist nicht erwünscht.
Was ich natürlich vermeiden möchte ist, dass bei jemand Aufruf des dynAF zunächst ein Array erstellt, in dem geprüft wurde, welche Gutscheine in welchen Kundendatensätzen bereits hinterlegt wurden. Das wären a. h. S. extrem rechenaufwändige SELECT Abfragen.
Dieses dynAF gegen eine Rückverknüpfung zu ersetzen, wäre theoretisch machbar. Dann müssten aber pro Datenbank an 25 Stellen Skripte angepasst werden, die das dynAF verwendet.
Ich wäre daher für eine pfiffige Idee sehr dankbar.
Ralf
9 Antworten
-
Eine einfache Lösung wäre, in der Gutschein-Tabelle ein Ja/Nein-Feld anzulegen und dieses mit einem Änderungstrigger im DynAF auf true zu setzen. In der select-Abfrage des dynAF könntest du dann gleich auf die Gutscheine filtern, die noch nicht zugeordnet wurden (false).
-
Hallo zusammen,
ja, die Problematik mit dem abwählen ist schon kniffelig.
Ich würde es so machen dass ich in beiden Tabellen je ein numerisches Feld erstelle.
In der Tabelle Kunden - GutscheinId und in der Tabelle Gutscheine - KundenId.
Dann Auswahl für dmulti in der Kundentabellelet customerId := number(this); select Gutscheine where not KundenId or KundenId = customerId
Trigger nach Änderung im Auswahlfeld:
let existVoucherId := GutscheinId; let customerId := number(this); let selectedVoucherId := number(Gutscheine); if selectedVoucherId then record(Gutscheine,existVoucherId).(KundenId := null); record(Gutscheine,selectedVoucherId).(KundenId := customerId); GutscheinId := selectedVoucherId else record(Gutscheine,existVoucherId).(KundenId := null); GutscheinId := null end
Leo
Content aside
- vor 18 StundenZuletzt aktiv
- 9Antworten
- 51Ansichten
-
5
Folge bereits