Neuigkeiten:

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

Mobiles Hauptmenü

Falscher Wert in Kombinationsfeld nach Wechsel Formular/Entwurf/Formular-Ansicht

Begonnen von DerSolide, April 20, 2025, 09:56:20

⏪ vorheriges - nächstes ⏩

DerSolide

Hallo,

ich habe ein Phänomen bezüglich der Anzeige des Inhalts eines gebundenen Kombinationsfeldes nach dem Wechsel der Formular/Entwurf/Formular-Ansicht (oder auch bei Neustart von Access und Aufruf des Formulars), welches ich mir nicht erklären kann.

Folgende Eingabe werden im Formular (in der Reihenfolge von links nach rechts) getätigt:

Sie dürfen in diesem Board keine Dateianhänge sehen.
Wechsle ich jetzt von der Formular in die Entwurdsansicht und wieder zurück habe ich folgendes Ergebnis (wieder von links nach rechts betrachtet):

Sie dürfen in diesem Board keine Dateianhänge sehen.
Die Abfrage zum Befüllen der beiden Kombifelder Abhängigkeit und AbhängigkeitID (letzteres dient nur zur Info während der Entwicklung um den Fehler zu finden) lautet:

Private Sub cboAbhaengigkeit_AfterUpdate()

  Me!cboVerweis.RowSource = "SELECT tblVerweis.VerweisID,tblVerweis.Verweis " & _
                            "FROM tblVerweis " & _
                            "WHERE tblVerweis.VerweisID " & _
                            "IN (" & _
                                "SELECT tblQuelleAbhaengigkeit.VerweisID " & _
                                "FROM tblQuelleAbhaengigkeit " & _
                                "WHERE tblQuelleAbhaengigkeit.QuelleID = " & Me!cboQuelle & " AND tblQuelleAbhaengigkeit.AbhaengigkeitID = " & Me!cboAbhaengigkeit & _
                              ") " & _
                            "ORDER BY tblVerweis.Verweis ASC;"
 
  Me!cboVerweisID.RowSource = "SELECT tblQuelleAbhaengigkeit.QuelleID,tblQuelleAbhaengigkeit.AbhaengigkeitID,tblQuelleAbhaengigkeit.VerweisID " & _
                              "FROM tblQuelleAbhaengigkeit " & _
                              "WHERE tblQuelleAbhaengigkeit.QuelleID = " & Me!cboQuelle & " AND tblQuelleAbhaengigkeit.AbhaengigkeitID = " & Me!cboAbhaengigkeit & " " & _
                              "ORDER BY tblQuelleAbhaengigkeit.VerweisID ASC;"
                             
End Sub

Meiner Meinung nach kann es nur an der Abfrage liegen, aber warum funktioniert es dann bis zum Speichern des Formulars und zeigt mir bei einem Neuaufruf die Auswahlmöglichkeit des darüberliegenden Kombinationsfelds an?

Ich habe mittlerweile x-verschiedene Variationen ausprobiert, aber den Fehler leider nicht gefunden. Hat jemand eine Idee?



Schöne Grüße,
Christian

andyfau

Hallo,
es sieht danach aus, als sei da was mit der "gebundenen" Spalte des Kombifeldes nicht i.O.
Beste Grüße
Andreas

MzKlMu

Hallo,
abhängige Kombifelder sind auf Formularen nicht so einfach wie man denken könnte.
Wenn die Abhängigkeit nicht passt, wird kein Inhalt angezeigt.
Das kann nur ziemlich aufwendig korrigiert werden.
Eine Möglichkeit ist, das Kombi so klein zu machen dass man nur den Pfeil sieht. Daneben wird ein Feld plaziiert, das den Klartext über eine Abfrage zeigt. Man kann auch mit überlagerten Feldern arbeiten.
Das alles setzt aber die richtige Einstellung des Kombis voraus wie z.B. Anzahl der Spalten, gebunden Spalte, Spaltenbreiten.

Sind die Kombifelder bereits in der Tabelle angelegt (als Nachschlagefelder)?
Zeige mal ein Bild des Beziehungsfensters.
Gruß Klaus

DerSolide

Hallo MzKlMu,

für das Kombifeld Verweis (bzw. VerweisID) habe ich folgende Werte verwendet ...

Gebundene Spalte = 1
Spaltenanzahl= 2 (ID und Wert)
Spaltenbreite = 0 (ID wird ausgeblendet)

... und die Kombifelder sind in den Tabellen alle als Nachschlagefelder hinterlegt.

Nachfolgend - als Beispiel - die Datensatzquelle des Formulars, in der die Inhalte der Kombifelder auch korrekt gespeichert werden, aber bei erneutem Aufruf des Formulars im Kombifeld Verweis dann auf einmal - wie bereits beschrieben - die Auswahlmöglichkeiten des Kombifeldes Abhängigkeit(!) hat.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Das Beziehungsfenster bildet ja nur die m:n Beziehung ab, welche ich klassisch in zwei 1:n Beziehungen "gesplittet" habe und den Verweis auf den Wert über die ID in der Tabelle tblVerweis.
Sie dürfen in diesem Board keine Dateianhänge sehen.

Zitat von: MzKlMu am April 20, 2025, 11:21:42Wenn die Abhängigkeit nicht passt, wird kein Inhalt angezeigt.

Obwohl die Werte korrekt in der Zieltabelle abgespeichert werden, werden sie dann falsch - aber nur in einer von 3 Kombiboxen - eingelesen?

Wunder über Wunder, aber mit dieser Erkenntnis kann ich das Problem leider nicht lösen, weil ich keine Ahnung habe, wo ich ansetzen soll  ;) .


Schön Grüße,
Christian

MzKlMu

Hallo,
Dein Problem kann ich nicht ganz verstehen.
Erst mal folgende Anmerkungen:
- Nachschlagefelder in den Tabellen entfernen, ganz normale Textfelder einrichten, damit man sieht, was wirklich in den Tabellen steht. Nachschlagefelder sind in Tabellen ein No-Go.
- Hänge an die Fremdschlüsselfelder ein _F an, damit man zweifelsfrei die richtigen Felder verwendet.
- Für die Verweis Beziehungen auch referentielle Integrität einrichten
- Zusammengesetzte Primärschlüssel würde ich unbedingt vermeiden, richte in der TAbelle auch ein Autowert als PS ein.

Du kannst auch hier eine Beispieldb hochladen, da wäre das Problem sicher schnell gelöst.
Gruß Klaus

DerSolide

Hallo Klaus,

danke für die Informationen.

Ich denke, wir reden aneinander vorbei, deshalb habe ich die Beispiel-DB - aus der die Abbildungen stammen und wo das Problem beim neuerlichen Aufruf des Formulars auftritt und somit nachvollziehbar ist - hochgeladen.

Zur Info:
Da die Dateiendung ".accdb" als Anlage nicht unterstützt wird und beim Hochladen eine Fehlermeldung bringt, habe ich die Datei "Beispieldatenbank.accdb" in "Beispieldatenbank.jpg" umbenannt, was natürlich nach dem Download wieder rückgängig gemacht werden muss.


Schöne Grüße,
Christian

MzKlMu

Hallo,
das scheint mir unlogisch, was Du da gezimmert hast. Die 2. Tabelle mit der VerweisID und dem Verweis ist doch unnötig. Das Kombi mit dem Verweis hatte eine falsche Datenquelle. In dem Formular wählst Du mit einem Kombi die VerweisID und den Verweis aus, das kann doch aber nicht sein. Eine VerweisID hat doch immer den gleichen Verweiswert.
Ich habe das Formular geändert.
In meinem Beispiel sind obige Anmerkungen von mir eingebaut bzw. umgesetzt.

Abhängigkeiten sind bei diesem Aufbau nicht erkennbar bzw. umsetzbar.
Du solltest mal den Zweck der DB erläutern.

ZitatDa die Dateiendung ".accdb" als Anlage nicht unterstützt wird
Du musst ein Zipfile anlegen.
Gruß Klaus

DerSolide

Hallo Klaus,

na dann hole Dir Mal ein Getränk und Popcorn  :) :

In der Datenbank sollen Behälter erfasst werden, wobei jeder Behälter verschiedene Kenndaten wie Hersteller, Behältertyp (=Kombinatsfeld "Quelle"), Behältermerkmal (=Kombinationsfeld "Abhängigkeit"), Nettogewicht (=Kombinationsfeld "Verweis"), Bruttogewicht, Seriennummer, Herstellungsdatum, Inhalt, etc.) besitzt.
In dem Bestand sollen dann diverse Filtermöglichkeiten implementiert werden.

Die drei o.a. Kombinationsfelder sind somit nur ein Teil des Formulars, welche zur Dateneingabe benötigt und deren Werte in der Behälterdatenbank "tblQuelleAbhängigkeitVerweis" gespeichert werden, welche dem Eingabeformular als Datenquelle dient.
Die Auswahl des Behältermerkmals im Kombinationsfeld "Abhängigkeit" ist allerdings bedingt abhängig von der Auswahl des Behältertyps im Kombinationsfeld "Quelle", da mehrere verschiedene Behältertypen identische Behältermerkmale aufweisen können. Das stellt ja eine m:n-Beziehung dar, welche ich durch die Hilfstabelle "tblQuelleAnhängigkeit" gesplittet habe und über eine SQL-Abfrage (INNER JOIN) das Kombinationsfeld "Abhängigkeit" befülle.

Das funktioniert auch alles wunderbar, daher wollte ich jetzt noch das Nettogewicht ebenfalls bedingt abhängig, allerdings von der Auswahl des Behältertyps im Kombinationsfeld "Quelle" UND der Auswahl des Behältermerkmals im Kombinationsfeld "Abhängigkeit" über eine ganz normale SQL-Abfrage (geschachteltes SELECT) in das Kombinationsfeld "Verweis" schreiben. Dazu bot sich die Tabelle "tblQuelleAbhängigkeit" an, da dort ja bereits alle möglichen Kombination über die beiden Fremdschlüssel vorhanden sind und ich die Tabelle nur mehr mit einer Spalte für die ID das Nettogewicht ergänzen musste.

Auch das funktioniert wunderbar, zumindest bei der Eingabe und dem Speichern der Werte in der Tabelle "tblQuelleAbhängigkeitVerweis".
Sollen die Daten aber wieder aus der Tabelle gelesen werden, tritt in der Kombinationsbox der schon genannte Effekt - aber eben nur in diesem Kombinationsfeld auf.

Ich hoffe, ich konnt in groben Zügen den Zweck erläutern.


Schöne Grüße,
Christian

MzKlMu

Hallo,
ZitatBehältertyp (=Kombinatsfeld "Quelle"), Behältermerkmal (=Kombinationsfeld "Abhängigkeit"), Nettogewicht (=Kombinationsfeld "Verweis"),
Wie kann man nur auf die Idee kommen, derartig unpassende Tabellennamen zu verwenden.

Behältertyp Tabelle Quelle
Behältermerkmal Tabelle Abhängigkeit
Nettogewicht Tabelle Verweis

Da blickt doch ein Außenstehender nicht durch.
Warum nennst Du Deine Tabellen nicht passend zu dem was drinsteht ?

ZitatDas stellt ja eine m:n-Beziehung dar,
Kann eine Abhängikeit (Merkmal) wirklich mehrere Quellen (Behältertyp) haben ?
Ein Behälter ist ein bestimmter Typ, aber doch nicht mehrere.
Die gleiche Frage stellt sich auch für das Nettogewicht.
Zitatdas Nettogewicht ebenfalls bedingt abhängig, allerdings von der Auswahl des Behältertyps
Wenn das Nettogewicht vom Typ abhängig ist, so gehört in die Tabelle mit dem Behältertyp ein FS zum Nettogewicht.

Das im Beispiel gezeigte Formular kann so niemals stimmen.
Es ist völlig ausgeschlossen, dass der Verweis und die VerweisID getrennt über Kombis gewählt werden können.
Eine VerweisID entspricht einem bestimmten Verweis, der durch die Wahl der VerweisID festgelegt wird. Ein zweites Kombi für den Verweis ist völlig sinnlos.


Gruß Klaus

DerSolide

Hallo Klaus,

Zitat von: MzKlMu am April 21, 2025, 19:01:05Wie kann man nur auf die Idee kommen, derartig unpassende Tabellennamen zu verwenden.
Als ich die Frage stellte, ging ich davon aus, dass das es sich um ein eher triviales Problem handelt und ich einfach nur zu dumm war, es zu lösen. Aus diesem Grund habe ich das ganze in ein kleines kompaktes Formular gepackt und versucht, selbsterklärende Namen (Quelle, Abhängigkeit, Verweis) zu verwenden um keine Irritationen auszulösen..

Zitat von: MzKlMu am April 21, 2025, 19:01:05Da blickt doch ein Außenstehender nicht durch.
Auf Grund dessen, dass sich das ganze "etwas" komplizierter als gedacht entwickelt hat, gebe ich Dir recht. Allerdings wollte ich danach den ganzen Kontext nicht mehr neu einbringen, da das - meiner Meinung nach - erst recht zu Verwirrungen geführt hätte.

Zitat von: MzKlMu am April 21, 2025, 19:01:05Warum nennst Du Deine Tabellen nicht passend zu dem was drinsteht ?
Habe ich im Originalformular auch gemacht (siehe Anlage "Benutzeroberfläche")

Zitat von: MzKlMu am April 21, 2025, 19:01:05Kann eine Abhängikeit (Merkmal) wirklich mehrere Quellen (Behältertyp) haben ?
Ein Behälter ist ein bestimmter Typ, aber doch nicht mehrere.
Ja, kann sie (siehe Anlage "Abhängigkeiten der Kombinationsfelder", z.B. das Gelb markierte Beispiel). Die Merkmale beschreiben die Ausführungsform des Behältertyps, analog zu z.B. 100kW Motor (Behältermerkmal) oder 150kW Motor (Behältermerkmal) bei einem Golf V (Behältertyp). Dieselben Motoren könnten aber auch in einem Golf VI verbaut sein.

Zitat von: MzKlMu am April 21, 2025, 19:01:05Die gleiche Frage stellt sich auch für das Nettogewicht.
Zitatdas Nettogewicht ebenfalls bedingt abhängig, allerdings von der Auswahl des Behältertyps
Wenn das Nettogewicht vom Typ abhängig ist, so gehört in die Tabelle mit dem Behältertyp ein FS zum Nettogewicht.
Das ist nur die halbe Wahrheit. Ich hatte geschrieben
Zitatdas Nettogewicht ebenfalls bedingt abhängig, allerdings von der Auswahl des Behältertyps UND der Auswahl des Behältermerkmals
Diese beiden FS gemeinsam definieren eindeutig das Nettogwicht des Behälters (siehe Anlage "Abhängigkeiten der Kombinationsfelder", z.B. das Orange markierte Beispiel), deshalb habe ich auch die ID des Nettogewichts genau in diese Tabelle, nämlich der Hilsfstabelle "tblBehältertypBehältermerkmal" (siehe Anlage "tblBehältertypBehältermerkmal") eingefügt, welche auf die Tabelle "tblBehältergewichtTara" verweist  (siehe Anlage "tblBehältergewichtTara").

Zitat von: MzKlMu am April 21, 2025, 19:01:05Das im Beispiel gezeigte Formular kann so niemals stimmen.
Doch, tut es, bis auf das Problem, dass meine Frage initiert hat.

Zitat von: MzKlMu am April 21, 2025, 19:01:05Es ist völlig ausgeschlossen, dass der Verweis und die VerweisID getrennt über Kombis gewählt werden können.
Vollkommen klar, das Kombinationsfeld mit der VerweisID hatte ich auch nicht nicht für die zusätzliche Auswahl eingefügt, sondern lediglich dafür, um bei der Fehlersuche nachzusehen, ob die dynamische Zuweisung der Auswahlmöglichkeiten funktioniert oder ob es vielleicht beim Speichern ein Problem gegeben hat.
Hat aber nicht wirklich etwas gebracht.

Was mich letztendlich wieder an den Anfang zurückführt: Das Speichern der angezeigten Werte über deren ID funktioniert bei allen Kombinationsfeldern, das Wiedereinlesen bei allen Kombinationsfeld bis auf das Kombinationsfeld für das Nettogwicht, trotz Anwendung derselben "Speicherstrategie" bei alle Kombinationsfeldern.

Ich hoffe, jetzt sind alle Klarheiten beseitigt und ich habe Dich vollkommen verwirrt ... was ich von Anfang an vermeiden wollte  ;) .


Schöne Grüße,
Christian


DerSolide

Ok,

da keine weiteren Lösungsvorschläge in Sicht sind habe ich jetzt in der Hilfstabelle "tblBehältertypBehältermerkmal" anstatt des Verweises auf die Tabelle mit den Behältergewichten die Werte für die Behältergewichte eingetragen und Frage mittels der LOOKUP-Funktion über die beiden FS die Behältergewichte in der Tabelle ab.
Der Benutzer kann dann durch eine Meldung bestätigen, ob er den Wert übernehmen will oder nicht.

Ist nicht besonders "schön", weil man jetzt natürliche mehrfach dieselben Gewichter in der Tabelle stehen hat, aber es funktioniert wenigstens problemlos.

@Mod: Wenn ich den Betrag als "Gelöst" markieren soll, obwohl er es im Grunde genommen ncht wirklich ist, teilt mir das bitte mit.


Schöne Grüße,
Christian

Knobbi38

Hallo Christian,

Zitat von: DerSolide am Mai 01, 2025, 06:59:26Ist nicht besonders "schön", weil man jetzt natürliche mehrfach dieselben Gewichter in der Tabelle stehen hat, aber es funktioniert wenigstens problemlos.

das ist vollkommen ok, weil das individuelle Gewicht ein Attribut des Behälters ist.

Gruß Knobbi38