ich habe mir zwei Ansichten „Preisschreiben“ und „Modell“ erstellt, sowie eine Verbindungstabelle, die die Einträge beider Tabellen als n:m-Relation verbindet
Preisschreiben 1–n Verbindungen n–1 Modelle
Wenn nun ein neues Preisschreiben eingetragen wird, soll der User es - möglichst bequem - den Modellen zuordnen können, für die es gilt.
Ich bräuchte also die ID des neuen Preisschreibens und die IDs der Modelle, um per Insert die Verbindungen herstellen zu können.
Außer, einen Filter manuell zu erstellen, diesen abzuspeichern und dann dem Preisschreiben zuzuweisen fällt mir nichts gescheites ein. Und dieser Ansatz wird die damit betrauten User wahrscheinlich überfordern (abgesehen davon müsste ich ihnen die Rechte zum Erstellen und Speichern von Filtern geben, das ist nicht vorgesehen)
Für Denkanstöße aller Art bin ich (wie üblich) dankbar
Spontan: Ich würde per CreateRecordSet einen RecordSet für die (ggf. eingeschränkt nur in Frage kommenden*) Modelle erzeugen und dann per RecordSet.DialogSelectRecordMultiple die Anwender:innen alle ankreuzen lassen, für die das Preisschreiben gelten soll. Beim Klick auf OK würden Sie denn den zurückgelieferten RecordSet iterieren und für alle Records in der N:M Tabelle Datensätze erzeugen und die ModellID (und die PreisschreibenID, um die es gerade grundsätzlich geht) eintragen (und dabei auch am besten zuvor noch kurz checken, ob das Modell evtl. schon bereits eingetragen wurde, um Mehrfachzuweisungen desselben Modells zu vermeiden).
Danach würde ich eine Frage stellen: „Möchten Sie noch weitere Modelle zuordnen? (JA/NEIN)“. So kann man auch kleinteiliger in verschiedenen Iterationen die Modelle zuordnen und muss nicht eine riesige große Liste mit vielen Haken erst in dem Dialog erzeugen. Lieferte DialogSelectRecordMultiple Nothing zurück, wurde der Dialog abgebrochen, dann sparen Sie sich natürlich die Frage.
Bei Ja loopen Sie wieder hoch. Bei Nein sind Sie fertig.
*) z.B. schonmal alle die rausfiltern, die bereits Teil der N:M Verknüpfung sind, das macht es benutzungsfreundlicher.
nun habe ich eine Datenbankview erstellt, die meine Modelle beinhaltet (eine Auswahl aus dem Gesamtkatalog, natürlich mit UID-Feld). Leider erhalte ich beim Anwählen eines Datensatzes folgende Fehlermeldung:
So tolle Fehlermeldungen sind echt käse und mir gerade ein bisschen peinlich…
Hier sollte eigentlich der Feldaliasname des Feldes vom internen Typ „Datensatz-ID“ drin stehen, aber der ist wohl leer. Und ich denke, das ist nur ein Folgeproblem, denn ich denke das eigentliche Problem ist, dass diese Ansicht gar kein Feld vom internen Typ „Datensatz-ID“ hat und somit dann auch kein Aliasname für diese (Folge-)Fehlermeldung besorgt werden kann.
(„Schlüsselfeld“ bei einer Datenbanksicht sicherheitshalber auch ankreuzen, da manche Abfragen darüber laufen.)
Wir kümmern uns drum, dass dieser Umstand („Feld vom Typ ‚Datensatz-ID‘ muss vorhanden sein“) bei dem Dialog VOR der obskuren Meldung, dass das Datensatz-ID Feld des angekreuzten Datensatzes nachher keinen leeren Inhalt haben darf, geprüft wird, so dass man hier direkt erfährt, was das originäre Problem ist.
PS: In Ihrem Screenshot ist mir noch der Dialogtitel ins Auge gestochen: bitte ändern Sie das Encoding Ihrer VBScript-Datei, sonst gibt es Probleme mit den Umlauten.
Nehmen Sie entweder ‚ANSI‘, oder ‚UTF-8 mit BOM‘ (=‚byte order mark‘) oder auf ‚UTF-16‘. Sie haben ziemlich sicher ‚UTF-8 (ohne BOM)‘, und das gibt ein Problem mit Umlauten und anderen Sonderzeichen.