Mai 25, 2022, 12:10:03

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


HF Datensatz speichern nicht möglich da Beziehung zum UF "fehlt"

Begonnen von Eisman333, Januar 05, 2022, 17:27:53

⏪ vorheriges - nächstes ⏩

Eisman333

Hallo Liebe Community,

vorab erst einmal, ich weiß dass dieses Thema bzw. ähnliche schon mehrfach in diesem und auch anderen Foren gestellt wurden. Hier habe ich einige Beiträge durchgesehen und die erwähnten Antworten durchprobiert, leider aber ohne Erfolg. Ich gehe davon aus dass ich einfach etwas ganz einfaches übersehe/missverstehe, aber ich komm einfach nicht drauf.

Als absoluter Access Neuling bin ich derzeit dabei eine Datenbank aufzubauen, mein Problem bezieht sich auf folgende Daten:

Tabellen: tblArtikel & tblEigenschaften (tA & tE)
Formulare: frmArtikel & frmArtikelEigenschaften (fA & fAE)

Der Übersichtlichkeit halber verwende ich folgend die oben angegebenen Abkürzungen.

tA beinhaltet wichtige Artikeldaten wie GTIN, Artikelnummer, Hersteller etc.
tAE beinhaltet weitere Eigenschaften zum Artikel wie z.B. Größe, Farbe, Länge, Material (die Auftrennung kommt daher, dass für manche Artikel mehrere "Eigenschaften-Sets" vorhanden sind, die Stammdaten hier sind aber identisch und würden sonst zu doppelten Einträgen in tA führen)

Folgende Beziehung existiert zwischen den Tabellen:

tA.IDArtikel(AutoWert) zu tE.lngArtikel(Long, Duplikate möglich) [tA 1:n tE]

fA ist das Hauptformular, dieses bezieht die Daten aus tA und hat das Formular fAE als Unterformular eingebunden. fAE bezieht die Daten von der Tabelle tE.

In den Eigenschaften des Unterformulars ist folgendes eingestellt:
Verknüpfen nach: IDArtikel
Verknüpfen von: lngArtikel

Im Verknüpfungsassistent wird damit angezeigt "Felder in übergeordneter Tabelle: IDArtikel" und "Felder in untergeordneter Tabelle: lngArtikel", als Ergebnis folgendes ausgegeben: " 'tE' für jeden Datensatz in 'tA' mit 'IDArtikel' anzeigen ".
Die Einstellung hatte Access automatisch vorgenommen, vermutlich basierend auf der vorhandenen Beziehung zwischen den Tabellen.

Wenn ich nun aber einen neuen Datensatz hinzufügen möchte, erhalte ich die Fehlermeldung das der Datensatz nicht gespeichert werden kann, weil es in tA keinen verknüpften Datensatz gibt. Soweit so klar, immerhin gibt es tA.IDArtikel ja erst wenn das HF den Datensatz einmal speichert, bis dahin hat das UF keinen Wert den es in tE.lngArtikel hinterlegen könnte.

Aber es muss doch irgendwie möglich sein das ganze so korrekt eizustellen das ich es so umsetzen kann, ohne den Nutzer dazu zwingen zu müssen, erst fA auszufüllen und anschließend manuell fAE öffnen zu müssen nur um die restlichen Daten nachzutragen.

In anderen Beiträgen dieser Art wurde empfohlen die Referentielle Integrität der Beziehung zu deaktivieren, habe ich probiert, leider ohne Erfolg. Ein weiter Tipp war die "0" aus der Eigenschaft "Standardwert" bei tE.lngArtikel zu entfernen die Access dort automatisch einfügt. Auch das habe ich getan ohne dass sich das Verhalten verändert hat.

Für die Navigation zwischen den Datensätzen verwende ich übrigens einfach die Eingebauten Schaltflächen ganz unten im Formular. VBA Scripts sind keine im Formular vorhanden mit Ausnahme eines Knopfs der die Daten aus 3 Feldern in einem neuen Feld auf bestimmte Art und Weise zusammen fasst. Ich gehe aber nicht davon aus dass ein simples verbinden von Strings und einfügen in eines der Felder Einfluss auf das Verhalten des Formulars nimmt.

Wie bereits erwähnt bin ich sicher dass ich etwas ganz einfaches übersehe aber es nicht realisiere, oder ist es tatsächlich einfach unmöglich einen neuen Datensatz in mehreren Tabellen "gleichzeitig" anzulegen und meine Nutzer müssen dann für jede zusätzliche Tabelle immer wieder ein einzelnes neues Formular verwenden?

Vielen Dank im Voraus für jegliche Hilfe!

Viele Grüße
Kevin

DF6GL

Hallo,



es ist zwingend nötig (bei ref. Integrität) dass zunächst ein passender Datensatz in der 1-Tabelle existiert bevor ein DS in der n-Tabelle hinzugefügt wird.


Normalerweise zeigt man die 1-Tabellendaten mit einem Einzelformular an, das ein UFO-Steuerelement enthält, das wiederum das Endlosform mit Datenbasis zur n-Tabelle anzeigt.

Dabei muss das UFO-St.-El. bei den Eigenschaften "Verknüpfen von/nach" über die Schlüsselfelder verknüpft sein.

Ansonsten wäre es sinnvoller, statt langer Prosa den Screenshot des Beziehungsfensters zu zeigen und evtl. sogar die DB hier komprimiert/repariert und gezippt hochzuladen.

Beaker s.a.

Hallo Kevin,
ZitatTipp war die "0" aus der Eigenschaft "Standardwert" bei tE.lngArtikel zu entfernen
Ja, das ist richtig.
Zitatwurde empfohlen die Referentielle Integrität der Beziehung zu deaktivieren,
Das ist falsch, ohne RI bekommst du einen Datenhaufen. Die Site wo du das gelesen hast
rufe nie wieder auf.
Ansonsten folge Franz' Hinweisen.

gruss Ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Eisman333

Zitat von: DF6GL am Januar 05, 2022, 17:40:20Ansonsten wäre es sinnvoller, statt langer Prosa den Screenshot des Beziehungsfensters zu zeigen und evtl. sogar die DB hier komprimiert/repariert und gezippt hochzuladen.
Als erstes einmal, vielen Dank für die schnelle Rückmeldung! Ich habe nochmal alles geprüft aber soweit ich es erkenn kann, sollte es eigentlich richtig konfiguriert sein.
Um Fehler aus anderen Quellen auszuschließen habe ich gerade einmal Testweise die Daten in eine neue Datenbank übernommen und alle anderen Beziehungen oder sonstiges dort gelöscht, auch die Formulare habe ich auf das absolute Minimum reduziert. Das Problem tritt aber weiterhin auf, daher lade ich mal diese beschnitte Variante hier hoch. Bzw. hatte ich das vor, kann hier aber keine Schaltfläche dafür finden, daher folgend ein WeTransfer Link, hoffe das geht so in Ordnung: https://we.tl/t-LFgFNuvmZb

Vor dem Upload habe ich einmal auf den Button "Datenbank komprimieren und reparieren" geklickt, ich vermute mal dass das gemeint war auch wenn ich von dem Prozess nichts bemerkt habe mit Ausnahme des Neuladens der einzelnen Bestandteile. Liegt aber vermutlich an der sehr überschaubaren Menge von Testdatensätzen.

Vielen Dank schonmal im Voraus für die weitere Hilfe bzw. den Hinweis was ich übersehen habe!

Zitat von: Beaker s.a. am Januar 06, 2022, 17:34:55Das ist falsch, ohne RI bekommst du einen Datenhaufen. Die Site wo du das gelesen hast
rufe nie wieder auf.
Danke ebenfalls für deine Antwort, so etwas in der Art dachte ich mir schon aber unversucht habe ich es trotzdem nicht gelassen. Ich weiß nicht mehr wo genau ich das gefunden hatte, aber inzwischen habe ich ein paar Seiten gefunden auf denen die Hilfe sehr kompetent zu seien scheint, hier natürlich mit eingeschlossen, daher kann ich mich ja zukünftig über die hiesige Suchfunktion vorkämpfen anstatt blind über Google zu gehen.

MzKlMu

Hallo,
bitte lade die DB im Forum hoch. Bei Deiner Uploadseite muss man erst mal Cookies und deren AGB akzepieren und da klicke ich gleich mal weg.

Beim Antworten unten findest Du einen Button "Attachments and other options", dort kannst Du eine Datei hochladen. Bitte als Zippfile.
Gruß
Klaus

DF6GL

Hallo,

Lösche die Beziehung zwischen tblArtikel und tblArtikel_1.

Entferne den Standardwert (0) für lngVater aus tblArtikel (und lösche auch die 0-Werte aus den Datensätzen  --> auf NULL aktualisieren).

Setze die Beziehung zwischen IDArtikel und lngVater neu und stelle ref. Int. ein.


Wenn lngVater = NULL dann ist der DS (Artikel)  kein "Kind"  .  Das Feld blnIstKind ist überflüssig.

Eisman333

Zitat von: DF6GL am Januar 07, 2022, 17:25:31Setze die Beziehung zwischen IDArtikel und lngVater neu und stelle ref. Int. ein.


Wenn lngVater = NULL dann ist der DS (Artikel)  kein "Kind"  .  Das Feld blnIstKind ist überflüssig.

Vielen Dank für die ausführliche Antwort. Zwar war diese Beziehung zwischen den genannten Feldern nicht die von der ich eigentlich geredet hatte, allerdings hat sich herausgestellt das genau diese Beziehung das Problem war und ich die ganze Zeit an der falschen Stelle gearbeitet habe.

Vielen lieben Dank für die Hilfe und noch eine schöne Woche.

Viele Grüße
Kevin