Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: ChemSim am Februar 11, 2024, 19:44:25

Titel: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 11, 2024, 19:44:25
Hallo zusammen,

folgende Ausgangslage. In meiner Datenbank habe ich eine Tabelle tblHersteller, in der die Hersteller von Produkten gespeichert werden.

Die Tabelle hat die folgenden Felder:


Nun habe ich basierend auf der Tabelle tblHersteller ein Formular erstellt, um bestehende Hersteller zu bearbeiten oder neue anzulegen. Das funktioniert soweit auch problemlos.

Nun möchte ich folgendes erreichen:

In der Tabelle tblHersteller gibt es ja drei Ja/Nein-Felder ("Eigenständig", "Konzern-Tochter von", "JV von"). Zunächst einmal möchte ich auch über das Formular die Möglichkeit haben, über eine Optionsgruppe eines der drei Felder für einen Hersteller auszuwählen. Ich habe dazu eine Optionsgruppe erstellt und die drei Ja/Nein-Felder angegeben. Erstelle ich jetzt einen neuen Eintrag über das Formular, so werden alle Angaben übernommen bis auf die Ja/Nein-Felder, d. h. diese bleiben in der Tabelle tblHersteller unausgefüllt. Wo könnte der Fehler liegen?

Weiterhin würde ich gerne folgendes realisieren: In der Tabelle tblHersteller gibt es ebenfalls das Feld "KonzernID_F". Über ein Kombinationsfeld habe ich auch dieses in das Formular eingebaut, wodurch man jetzt aus einer Liste verfügbarer Konzerne wählen kann. Ist es möglich, dieses Kombinationsfeld im Formular nur dann anzuzeigen (und auch nur dann soll eine Eingabe erforderlich sein), wenn zuvor im Optionsfeld die Option "Konzern-Tochter von" ausgewählt wurde.

Wäre über erneute Hilfe sehr dankbar!

Gruß
ChemSim


Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 11, 2024, 20:04:33
Hallo,
eine Optionsgruppe kann nur ein Tabellenfeld (Zahl) haben, daher scheidet diese grundsätzlich aus. Man kann für 3 Hakenfelder keine Optionsgruppe bilden. Zwei der Drei ja/nein Felder halte ich für überflüssig, wurde ein Konzern eingetragen ist der Hersteller nicht eigenständig wozu dann noch die Haken?
Das FS Feld für den Konzern kann unsichtbar sein und wird dann nur z.B. bei einem Doppeöklick auf den Namen eingeblendet und kann ausgefüllt werden. Ist es mal ausgefült bleibt es automatisch eingeblendet.

Was machst Du wenn es 2 Konzerne gibt für einen Hersteller (z.B. je 50%) was ja vorkommen kann. Das kannst Du jetzt nicht abbilden.

Was bedeutet J/V von?

PLZ und Ort gehören in eine extra Tabelle und in diese muss der Fremdschlüssel zum Land.
In der Tabelle des Herstellers kommt er dann raus.

PS:
Verwende keine Leer und Sonderzeichen in Feld und Objektnamen.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 11, 2024, 20:19:57
Hallo MzKlMu,

ich habe drei Ja/Nein Felder erstellt, da beim Anlegen eines neuen Herstellers entschieden werden soll, um welchen "Typ" es sich handelt. "Eigenständig" soll dabei definieren, dass es sich auch um eine einzelne Firma handeln kann, die keinem Konzern zugeordnet ist (eine Firma, die es quasi nur einmal auf der Welt gibt, dann ist das ja keine Konzern-Mutter). Unter "Konzern-Tochter" soll man dann, sofern die Firma zu einem größeren Konzern mit mehreren Tochtergesellschaften gehört, angeben können, um welchen Konzern es sich handelt. Dazu gibt es ja eine extra Tabelle tblKonzerne, in der nur Konzern-Mütter gespeichert werden. Die dritte Option, "JV von" gibt an, dass es sich weder um ein eigenständiges Unternehmen handelt oder eine einfache Tochtergesellschaft eines Konzern, sondern um ein Gemeinschaftsunternehmen (Joint Venture, JV) von bis zu vier Konzernen. Wenn diese Option ausgewählt wird, sollte man dann in bis zu vier Feldern Konzern-Mütter auswählen können, die dieses Gemeinschaftsunternehmen bilden.

ZitatPLZ und Ort gehören in eine extra Tabelle und in diese muss der Fremdschlüssel zum Land.
In der Tabelle des Herstellers kommt er dann raus.

Ich habe PLZ und Ort bewusst unabhängig als Textfelder im Formular erstellt, da die Eingabe "frei" bleiben soll.

ZitatPS: Verwende keine Leer und Sonderzeichen in Feld und Objektnamen.
Ist die Verwendung von LandID_F zur Kennzeichnung des Fremdschlüsselfeldes als Feldname erlaubt?

Gruß
ChemSim
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 12, 2024, 00:07:26
Hallo,
Du hast die Funktionsweise einer Optionsgruppe noch nicht verstanden. Es ist nicht möglich zwei  und mehr Ja/Nein Felder zu einer Optionsgruppe zusammenzufassen. Eine Optionsgruppe kann nur ein Tabellenfeld haben. Und dort wird nur der Optionswert als Zahl gespeichert. Der Optionstext "Eigenständig",  "Konzern-Tochter", "J/V", jeder Optionstext wird einer Zahl zugeordnet. Der Rahmen (anklicken) der Optionsgruppe zeigt den Steuerlementinhalt, nämlich das eine Tabellenfeld. Die Optionen schließen sich gegenseitig aus.
Um z.B. in einem Bericht diese Texte nicht immer schreiben zu müssen empfiehlt es sich die Optionstexte in eine extra Tabelle (tblFirmenarten) abzulegen, mit der Optionszahl als Primärschlüssel.

Zitat.... angeben können, um welchen Konzern es sich handelt.
Und was machst Du, wenn die Firma mehrere Konzerne hat ?

Zitatsondern um ein Gemeinschaftsunternehmen (Joint Venture, JV) von bis zu vier Konzernen. Wenn diese Option ausgewählt wird, sollte man dann in bis zu vier Feldern Konzern-Mütter auswählen können, die dieses Gemeinschaftsunternehmen bilden.
Das geht so nicht. Hier ist eine extra Tabelle erforderlich mit einem FS zum Hersteller in der die Konzerne in je einem Datensatz (nicht in 4 Feldern) erfasst werden Die Anzeige erfolgt dann in einem Unterformular direkt im Erfassungsformular für die Hersteller. 4 Felder dazu in der Herstellertabelle ist tabu. Das wären Aufzählungsfelder die in einer DB nicht verwendet werden.

ZitatIch habe PLZ und Ort bewusst unabhängig als Textfelder im Formular erstellt,
Davon würde ich Dir dringend abraten. Du kriegst durch Tipfehler einen ziemlichen Wildwuchs. Außerdem, willst Du wirklich auch bei ausländichen Namen (die kompliziert sein können) immer neu schreiben ?
Und dann das Land. Ein Ort gehört doch zu einem bestimmten Land, wie willst Du ohne Tabellen sicherstellen, das das richtige LAnd zum Ort eingetragen wird ?
Außerdem kannst Du auch mit Tabelle die Einträge frei wählen. Über das Ereignis "Bei nicht in Liste" kannst Du direkt im Erfassungsformular für die Hersteller weitere Orte mit Land erfassen.
Alles kein Problem.

Zu den Sonderzeichen:
Als Sonderzeichen sollte nur der _ verwendet werden. LandID_F wäre also OK.
Bei den Beziechnungsfeldern kann man sich dann austoben.
Felder mit Sonderzeichen erfordern immer die Verwendung eines [] Klammerpaares, was lästig ist.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 12, 2024, 05:55:26
Hallo,

ZitatDu hast die Funktionsweise einer Optionsgruppe noch nicht verstanden. Es ist nicht möglich zwei  und mehr Ja/Nein Felder zu einer Optionsgruppe zusammenzufassen. Eine Optionsgruppe kann nur ein Tabellenfeld haben. Und dort wird nur der Optionswert als Zahl gespeichert. Der Optionstext "Eigenständig",  "Konzern-Tochter", "J/V", jeder Optionstext wird einer Zahl zugeordnet. Der Rahmen (anklicken) der Optionsgruppe zeigt den Steuerlementinhalt, nämlich das eine Tabellenfeld. Die Optionen schließen sich gegenseitig aus.

Ich habe mich hier an ein YouTube-Video gehalten (https://www.youtube.com/watch?v=KreA9rpallI), da in dem Access-Tutorial (https://www.access-tutorial.de/formulare/steuerelemente.htm) Optionsgruppen nicht ausführlich erklärt werden. Dort wird als Beispiel eine Anwesenheitstabelle erstellt, die mit der Mitarbeitertabelle verknüpft ist. Unter anderem gibt es die Ja/Nein-Felder "Anwesend", "Krank", "Urlaub" und "Dienstreise" und in diesem Video hat die Verknüpfung mit einem Optionsfeld auch funktioniert. Auch dort kann immer nur eine Option zutreffen, denn ein Mitarbeiter kann beispielsweise nich gleichzeitig "Krank" und im "Urlaub" sein. Deswegen hatte ich mich gefragt, ob man anhand der ausgewählten Option eine Abhängigkeit zu einem oder mehreren Kombinationsfeldern erstellen kann.

ZitatUnd was machst Du, wenn die Firma mehrere Konzerne hat ?
Dafür gibt es das Optionsfeld "JV von".

Gruß
ChemSim
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 12, 2024, 10:55:01
Hallo,
das Video finde ich bis auf Kleinigkeiten OK (oh Wunder  ;D ). Allerdings hast Du das mit der Optionsgruppe nicht richtig verstanden. Die Optionsgruppe wird nicht über die 4 Ja/Nein Felder gebildet, sondern über das Feld Status. Für den Status wurde richtigerweise auch eine Tabelle angelegt. Die 4 ursprünglichen Ja/Nein Felder in der TAbelle müssen gelöscht werden. Ob das im Video gemacht wurde, kann ich nicht sagen, ich habe das Video im Schnelldurchlauf geschaut. Das musst Du Dir noch mal anschauen.


ZitatDafür gibt es das Optionsfeld "JV von".
Bei mehreren Konzernen geht das so nicht. Hier ist eine n:m Beziehung notwendig in der die Konzerne zum Hersteller erfasst werden.
Ist es ein Konzerntochter wird nur ein Konzern eingetragen, ist es ein JV werden mehrerer Konzerne als je ein Datensatz erfasst.
Die Darstellung erfolgt in einem Unterformular (Ufo) im Hauptformular (Hafo).
Womit wir wieder bei der Optionsgruppe wären. Die halte ich nach wie vor für überflüssig. Du brauchst nur ein Ja/Nein Feld "Eigenständig". Ist das angehakt wird das Ufo nicht angezeigt. Ist das nicht angehakt, ist das Ufo sichtbar und es können 1 bis n Konzerne eingetragen werden. Alles ganz einfach und übersichtlich.

Was ist mit meinen Anmerkungen zu PLZ und Land?
Dazu noch ein Hinweis: Wie willst Du sicherstellen (bei völlig freier Eingabe) dass zu einem Ort auch die richtige PLZ gewählt wird (und umgekehrt). Da können ja Tipfehler entstehen, besonders bei ausländischen Orten und PLZ.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 12, 2024, 18:38:00
Hallo Klaus,

sorry für die verspätete Antwort, aber ich war heute arbeiten ;D

Ich habe mir deine Vorschläge zu Herzen genommen und zunächst eine Tabelle tblAdressen erstellt.

tblAdressen.PNG

In dieser habe ich ein Feld "LandID_F" erstellt, welches als Fremdschlüsselfeld mit der LandID der Tabelle tblLänder verknüpft ist. Ich denke, dass ist das, was du von Anfang an gemeint hattest. Wenn hier noch Fehler sind, gerne anmerken!

Die Tabelle tblAdressen habe ich dann mit der Tabelle tblHersteller über den "AdresseID_F" Fremdschlüssel verknüpft:

tblHersteller.PNG

Zudem habe ich alle Ja/Nein Felder gelöscht und nur noch eines erstellt, welches "Eigenständig" heißt, um zu entscheiden, ob der Hersteller eigenständig ist (Ja) oder eben nicht (Nein). Die Tabelle tblHersteller hat somit nur noch die folgenden Felder:


Ist jetzt alles korrekt und kann ich mich mit der Erstellung des Unterformulares befassen?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 12, 2024, 19:22:19
Hallo,
ZitatIst jetzt alles korrekt
Nein nicht ganz.
ZitatKonzernID_F (Fremdschlüssel zur tblKonzerne, um 1 oder mehrere Konzern auszuwählen)
Wie willst Du da mehrere Konzerne auswählen, Du hast ja nur ein Feld ?
Wie ich in #5 schrieb geht das so nicht. Dieses Feld muss aus der Herstellertabelle raus. Du kannst auch so kein Unterformular verwenden.

Du brauchst eine extra Tabelle (nenne die z.B. tblEigentümer oder so)

In diese Tabelle muss der Fremdschlüssel zum Konzern (KonzernID_F) und ein Fremdschlüssel zum Hersteller (HerstellerID_F). Wenn Du willst, kann hier noch ein Feld eingebaut werden für den Anteil in %.

Mit dieser neuen Tabelle (und nur mit dieser) kann dann das Unterformular erstellt werden.

Der Rest ist OK denke ich.

PS:
Ist das mit der Funktionsweise der Optionsgruppe jetzt klar ?
Irgendwann kannst Du das ja vieleicht mal brauchen.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 12, 2024, 19:48:48
Hallo Klaus,

ZitatWie willst Du da mehrere Konzerne auswählen, Du hast ja nur ein Feld ?
Wie ich in #5 schrieb geht das so nicht. Dieses Feld muss aus der Herstellertabelle raus. Du kannst auch so kein Unterformular verwenden.

Stimmt, das hatte ich noch vergessen. Die Tabelle tblHersteller sieht nun so aus:

tblHersteller.PNG

ZitatDu brauchst eine extra Tabelle (nenne die z.B. tblEigentümer oder so)

In diese Tabelle muss der Fremdschlüssel zum Konzern (KonzernID_F) und ein Fremdschlüssel zum Hersteller (HerstellerID_F). Wenn Du willst, kann hier noch ein Feld eingebaut werden für den Anteil in %.

Alles klar, ich habe eine Tabelle tblEigentümer erstellt, die so aussieht:

tblEigentümer.PNG

Bei Anteil habe ich als Felddatentyp "Zahl" gewählt und als Format "Prozentzahl" angegeben.

ZitatPS:
Ist das mit der Funktionsweise der Optionsgruppe jetzt klar ?
Irgendwann kannst Du das ja vieleicht mal brauchen.

Ja, die Funktionsweise der Optionsgruppe ist jetzt für mich klar, danke! :)

Bezüglich des Unterformulars:

Ich habe ein neues Formular mit dem Namen ufrmEigentümer erstellt und ihm als Datensatzquelle die eben neu erstellte tblEigentümer zugeordnet. Aber wie genau gehe ich jetzt vor, um die Auswahl für bis zu vier Konzerne zu ermöglichen. Muss ich viermal das Feld "KonzernID_F" als Kombinationsfeld in das Unterformular einbauen?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 12, 2024, 20:16:08
Hallo,
sieht gut aus. Muss Dich mal etwas motivieren, bevor ich wieder nörgle.  ;D
ZitatMuss ich viermal das Feld "KonzernID_F" als Kombinationsfeld in das Unterformular einbauen?
Nein, Du brauchst das Kombi nur 1x. Bei 4 Konzernen gibt das 4 Datensätze, nur dann kannst Du ja auch deren Anteil erfassen. Wenn Du das Ufo in das Hafo ziehst, muss Hafo und Ufo über die Schlüsselfelder verknüpft werden.

ZitatBei Anteil habe ich als Felddatentyp "Zahl" gewählt und als Format "Prozentzahl" angegeben.
Nimm eine Ganzzahl (Integer, falls Du keinen Kommazahl braucht, wenn doch Double) und lasse das "Prozentzahl" weg. Prozentzahl rechen intern immer /100 . 20% werden als 20% angezeigt aber intern als 0,2 gespeichert. Was gelegentlich zu überraschenden Problemen führen kann/könnte.

PS:
Hast Du was mit Lu zu tun ?
Da kann ich hinspucken.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 12, 2024, 20:46:14
Hallo Klaus,

ZitatNein, Du brauchst das Kombi nur 1x. Bei 4 Konzernen gibt das 4 Datensätze, nur dann kannst Du ja auch deren Anteil erfassen.

Okay, ich habe also das Unterformular mit der Datensatzquelle tblEigentümer erstellt und ein Kombinationsfeld cboKonzern hinzugefügt, welches als Datensatzherkunft die tblKonzerne hat und den Steuerelementinhalt "KonzernID_F", Herkunftstyp ist "Tabelle/Abfrage". Dann habe ich ein Textfeld txtAnteil erstellt, welches als Steuerelementinhalt das Feld "Anteil" (der Tabelle tblEigentümer) hat. Ist das so korrekt?. Zumindest kann ich jetzt aus der Liste des Kombinationsfeldes die bisher vorhandenen Konzerne auswählen.

In der Tabelle tblEigentümer habe ich den Datentyp in eine Double-Zahl geändert, weil ich vermutlich Komma-Zahlen brauche.

Im Formular frmHerstellerBearbeiten habe ich das Unterformular eingebaut. Als Herkunftsobjekt ist das ufrmEigentümer ausgewählt, Verknüpfen nach ist "HerstellerID" aus der Tabelle tblHersteller und Verknüpfen von ist "HerstellerID_F" aus der Tabelle tblEigentümer. Ist das so korrekt? Komischerweise erscheint jetzt beim Öffnen des Formulars frmHerstellerBearbeiten ein Pop-Up Fenster mit dem Titel "Parameterwert eingeben" und ich soll die HerstellerID eingeben?!

ZitatPS:
Hast Du was mit Lu zu tun ?
Da kann ich hinspucken.

Ne, hab da nichts direkt mit zu tun, aber da dort die BASF ist, ist der Standort in meiner Datenbank  ;D
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 12, 2024, 21:14:59
ZitatKomischerweise erscheint jetzt beim Öffnen des Formulars frmHerstellerBearbeiten ein Pop-Up Fenster mit dem Titel "Parameterwert eingeben" und ich soll die HerstellerID eingeben?!

Komando zurück, ich habe vermutlich irgendetwas falsch gemacht. Jetzt geht es, glaube ich zumindest.

Das Formular sieht so aus:

Formular.PNG

Der erste Eintrag in tblHersteller sieht so aus:

tblHersteller.PNG

Und in Tabelle tblEigentümer sind jetzt nur noch Zahlen ;D

tblEigentümer.PNG

Es sieht doch so aus, als habe ich alles richtig gemacht, stimmt's?  ;D

ZitatAußerdem kannst Du auch mit Tabelle die Einträge frei wählen. Über das Ereignis "Bei nicht in Liste" kannst Du direkt im Erfassungsformular für die Hersteller weitere Orte mit Land erfassen.
Alles kein Problem.

Jetzt würde ich gerne diese Möglichkeit implementieren. Das Ereignis "Bei nicht in Liste" im Kombinationsfeld PLZ, Ort habe ich gefunden. Aber wie heißt der zugehörige Code, damit ich das machen kann?

Gruß,
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 12, 2024, 23:48:10
Hallo,
sieht richtig aus.

Kleine Anmerkungen:
Wie stellst Du PLZ und Ort in einem Feld dar? Es geht, aber ich möchte wissen wie Du es machst.
Das Ufo würde ich auf Endlosformular stellen und den Konzern und Anteil in einer Zeile.


Zitat"Bei nicht in Liste" im Kombinationsfeld PLZ, Ort habe ich gefunden. Aber wie heißt der zugehörige Code,
Da gibt es verschiedene Möglichkeiten.

Siehe hierzu:

Kombi Eintrag hinzufügen (https://www.donkarl.com/?FAQ4.13)

Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 13, 2024, 08:06:11
Hallo Klaus,

ZitatWie stellst Du PLZ und Ort in einem Feld dar? Es geht, aber ich möchte wissen wie Du es machst.

Das Kombinationsfeld cboPLZOrt hat als Datenherkunft die Tabelle tblAdressen und dort habe ich eine Abfrage erstellt mit den drei Spalten "AdresseID", "PLZ" und "Ort", wobei ich die Spaltenanzahl auf 3 gesetzt habe und die Spaltenbreite auf 0cm;2,54cm;2,54cm. Im Kombinationsfeld werden mir dann in einer Doppelspalte links die PLZ und rechts der zugehörige Ort angezeigt

cboPLZOrt.png

Gibt es da eine bessere Lösung für? Tatsächlich hätte ich gerne zwei separate Felder, eines für PLZ und das andere für den Ort. Geht das?

ZitatDas Ufo würde ich auf Endlosformular stellen und den Konzern und Anteil in einer Zeile.

Stimmt, ist eine gute Idee und habe ich so umgesetzt! Funktioniert auch wunderbar!

Noch eine andere Frage: Ich habe eine Schaltfläche zum Löschen von Hersteller erstellt. Sobald ich aber einen Datensatz löschen möchte, bekomme ich folgende Fehlermeldung. Wie kann ich das Problem lösen?

Fehlermeldung.PNG

Gruß,
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 13, 2024, 10:50:09
Hallo,
so wie das Kombi cboPLZOrt jetzt eingestellt ist, zeigt es bei der Auswahl PLZ und Ort, nach der Auswahl ist nur die PLZ zu sehen, denn ein Kombi kann nach dem Zuklappen nur eine Spalte anzeigen. Das kannst Du so lassen.
Dann kannst Du in die Abfrage für das Formular die Ortstabelle mit dazu nehmen. Dann kannst Du den Ort als Feld mit in das Formular aufnehmen und neben der PLZ anzeigen.

Du kannst das auch ganz anders machen (was ich hier bevorzugen würde):
Erstelle 2 Kombis eines für die PLZ (hast Du schon) und eines für den Ort.
Die Kombis bekommen dann wie gehabt 3 Spalten
Spalte 1 wird mit Breite 0cm ausgeblendet. Bis dahin beide Kombis gleich.
Kombi PLZ:
Spalte 2 (die PLZ) und Spalte 3 (der Ort) werden angezeigt (Spaltebreite >0cm ).
Kombi Ort:
Spalte 2 (Ort) und Spalte 3 (PLZ) werden angezeigt (Spaltebreite >0cm ).
Die Kombis haben also unterschiedliche Spaltenreihenfolgen.
Zur Beachtung:
Beide Kombis müssen an den gleichen FS AddresseID_F gebunden werden.
Beide Kombis syncronisieren sich gegenseitig dann automatisch. In einen kannst Du über die PLZ auswählen im anderen den Ort. Find ich persönlich sehr praktisch.
AdressenID ist übrigen ein irritierender Name, die Adresse mit Straße ist ja ein extra Feld. Nenne das Feld OrtID und entsprechend OrtID_F. Mache es gleich, je länger man damit wartet um so aufwendiger wird es.
Zitat.... bekomme ich folgende Fehlermeldung.
Die Fehlermeldung ist doch eindeutig, denke mal darüber nach.
Wenn es in der Eigentümertabelle Datensätze gibt die sich auf einen Hersteller beziehen, kann der Hersteller nicht gelöscht werden. Das ist eine der Aufgaben der referentiellen Integrität.
Aber in der RI kann man Löschweitergabe einstellen, dann werden bei Löschung einen Herstellers auch die abhängigen Datensätze gelöscht. Es werden nur die Datensätze in der Eigentümertabelle mit gelöscht, Konzerndatensätze sind da nicht betroffen. Die Einstellung sollte trotzdem mit Bedacht gewählt werden.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 13, 2024, 16:05:53
Hallo,

ZitatDu kannst das auch ganz anders machen (was ich hier bevorzugen würde)

ich habe diese Vorgehensweise umgesetzt. Als Ergebnis habe ich jetzt zwei Kombinationsfelder cboPLZ und cboOrt. Jedes Kombinationsfeld hat drei Spalten, wovon die erste der Primärschlüssel bzw. ID ist und nicht angezeigt wird (0 cm), die beiden anderen Spalten werden angezeigt.

PLZ.png

Ort.png

Aber wäre es nicht besser, in dem einen Feld nur die PLZ anzuzeigen (0cm, x cm, 0cm) und in dem anderen nur den Ort (0 cm, 0 cm, x cm)?

ZitatAdressenID ist übrigen ein irritierender Name, die Adresse mit Straße ist ja ein extra Feld. Nenne das Feld OrtID und entsprechend OrtID_F. Mache es gleich, je länger man damit wartet um so aufwendiger wird es.

Das ist ein guter Punkt, ich habe es entsprechend geändert!

Die Verwendung des Codes

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

Response = acDataErrAdded
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tblAdressen", dbOpenDynaset)

rs.AddNew
rs!Feldname = NewData
rs.Update

rs.Close: Set rs = Nothing
Set db = Nothing

End Sub

um einen neuen Eintrag direkt im Kombinationsfeld hinzuzufügen funktioniert nicht. Sobald ich in das Feld "PLZ" etwas eingebe, bekomme ich die Fehlermeldung "Benutzerdefinierter Typ nicht definiert". Was habe ich falsch gemacht?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 13, 2024, 16:19:51
Hallo,
ZitatAber wäre es nicht besser, in dem einen Feld nur die PLZ anzuzeigen
nein. Es gibt ja verschiedene Orte mit gleicher PLZ und eine PLZ kann sich auf mehrere Orte beziehen. Daher benötigst Du zu einer zweifeldfreien Auswahl immer PLZ und Ort bzw. Ort und PLZ in der Anzeige. Ist das Kombi geschlossen sieht man ohnehin nur die 1. sichtbare Spalte. Die Spaltenbreite für die sichtbaren Spalten musst Du natürlich anpassen.

Zum Fehler mit dem Typ kann ich jetzt nichts sagen, müsste ich nachstellen. Aber, für "Nicht in Liste" ist die Variante 1 nicht geeignet. Damit kann ja nur ein Wert übergeben werden. Du musst aber auch den Ort dazu eingeben können, sonst musst Du das ja nachholen.

Daher erstelle eine Eingabeformular für PLZ und Ort (kann dann auch zur Datenkorrektur verwendet werden).
Für "Nicht in Liste" verwendest Du dann die  Variante 2.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 13, 2024, 18:07:25
Hallo,

ZitatEs gibt ja verschiedene Orte mit gleicher PLZ und eine PLZ kann sich auf mehrere Orte beziehen. Daher benötigst Du zu einer zweifeldfreien Auswahl immer PLZ und Ort bzw. Ort und PLZ in der Anzeige.

Das stimmt, ich habe es so gelassen und nur die Spaltenbreiten angepasst.

ZitatDaher erstelle eine Eingabeformular für PLZ und Ort (kann dann auch zur Datenkorrektur verwendet werden).
Für "Nicht in Liste" verwendest Du dann die  Variante 2.

Hat alles super geklappt und ich kann jetzt direkt im Formular frmHerstellerBearbeiten eine neue PLZ und einen neuen Ort über das sich dann öffnende Formular frmAdressenBearbeiten hinzufügen.

Ein Problem habe ich aber noch: Es gibt manche ausländische Tochtergesellschaften, von denen ich die Adresse nicht weiß und somit auch nicht eintragen kann. Wenn ich die Kombinationsfelder cboPLZ und cboOrt aber leer lasse, bekomme ich eine Fehlermeldung, dass ein entsprechender Eintrag in der Tabelle tblAdressen fehlt (weil ich ja keinen Ort und PLZ angegeben habe). Ist es möglich, durch eine Einstellung diese Felder auch leer zu lassen oder müssen diese zwingend ausgefüllt werden? Falls letzteres der Fall ist, müsste ich mir überlegen, ob ich nicht einen Eintrag "nicht bekannt" für PLZ und Ort erstelle.

Außerdem: Wie kann ich es schaffen, dass das Unterformular ufrmHerstellerBearbeiten im Formular frmHerstellerBearbeiten nur dann angezeigt wird, wenn "Eigenständig" nicht ausgewählt wurde?

Unbenannt.PNG

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 13, 2024, 19:27:40
Hallo,
Zitatdurch eine Einstellung diese Felder auch leer zu lassen oder müssen diese zwingend ausgefüllt werden?
müssen nicht ausgefüllt werden. Es ist auch relativ einfach zu beheben.
Wenn man in Access im Tabellenentwurf ein Zahlenfeld anlegt, wird dies (unsinnigerweise) automatisch mit 0 vorbelegt. Auch die Fremdschlüsselfelder (..._F).
Somit steht bei einem neuen Datensatz eine 0 als Fremdschlüssel. Es gibt aber keinen Primärdatensatz mit dem Schlüssel 0 demzufolge gibt es diesen Fehler.
Mache Dir einmalig die Mühe und lösche in allen Tabellen mit Fremdschlüssel den Standardwert 0 (einfach leer lassen). Der Fehler sollte dann weg sein.
Und denke daran, bei allen neuen Tabellen mit FS immer gleich den Standardwert löschen, sofort. Mache ich auch immer/meistens, aber habe ich jetzt vergessen.
Zitat... nur dann angezeigt wird, wenn "Eigenständig" nicht ausgewählt wurde?
Auch relativ einfach.

Im Ereignis "Nach Aktualisierung" des Feldes "Eigenständig":
Me.UfoName.Visible = Me.Eigenständig = False
Die gleiche Codezeile muss auch noch in das Formularereignis "Beim Anzeigen" damit auch beim durchblättern bzw. Datensatzwechsel das Ufo mit dem Hakenfeld syncronisiert wird.

Zur Beachtung: UfoName ist der Name des Ufo Steuerelements. Den Namen findest Du in den Eigenschaften wenn der Rahmen des Ufos angeklickt wird.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 13, 2024, 19:52:43
Hallo,

ZitatMache Dir einmalig die Mühe und lösche in allen Tabellen mit Fremdschlüssel den Standardwert 0 (einfach leer lassen). Der Fehler sollte dann weg sein.

Danke, ich habe alle Standardwerte in den Fremdschlüsselfeldern gelöscht und jetzt funktionert es problemlos.

ZitatMe.UfoName.Visible = Me.Eigenständig = False

Danke, auch dieser Code funktioniert bestens! ;D 

ZitatDaher erstelle eine Eingabeformular für PLZ und Ort (kann dann auch zur Datenkorrektur verwendet werden). Für "Nicht in Liste" verwendest Du dann die  Variante 2.

In meinem Eingabeformular frmOrteBearbeiten, welches ich nach der Variante 2 (https://www.donkarl.com/?FAQ4.13) mit dem Formular frmHerstellerBearbeiten verknüpft habe, muss laut Tutorial beim Schließen des Eingabeformulars noch ein Code angefügt werden. Bei mir sieht dieser so aus.

Private Sub Form_Close()

    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery

End Sub

Möchte ich das Formular allerdings nur zur Datenkorrektur nutzen, so gibt es einen Fehler "Microsoft Access kann das Formular 'frmHerstellerBearbeiten' nicht finden, auf das verwiesen wird", weil es nicht offen ist oder so. Kann ich das irgendwie umstellen, sodass ich das Formular auch entkoppelt von dem Formular frmHerstellerBearbeiten nutzen kann?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 14, 2024, 00:16:13
Hallo,
einem Formular kann man mit OpenForm einen Parameter mitgeben, die sogenannten Öffnungsargumente (OpenArg). Muss als String übergeben werden.
Das kann man nutzen um den Code beim Schließen zu steuern.

Ändere die Zeile mit OpenForm wie folgt:
DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd, , "Ufo"
Dann noch eine Zeile im Close.
Private Sub Form_Close()
If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
End Sub
Wenn OpenArgs leer (Null) ist, wird die Sub einfach verlassen.

Man könnte auch einen Leerstring ("") als OpenArgs übergeben, aber über einen Text kann man ein Formular in verschiedenen  OpenArgs steuern kann.
Ich habe hier daher mal vorsichtshalber "Ufo" verwendet, man weis ja nicht was noch kommt.

Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 14, 2024, 07:04:26
Hallo,

hat funktioniert, danke! :)

Neben dem Formular frmHerstellerBearbeiten habe ich auch noch das Formular frmKonzerneBearbeiten, dass ich nun auch so umgebaut habe, dass man PLZ und Ort nicht über ein Textfeld eingeben kann, sondern mit der Tabelle tblOrte verknüpft ist, um eine eindeutige Zuordnung zu ermöglichen. Das Formular frmKonzerneBearbeiten habe ich auch mit dem Formular frmOrteBearbeiten verknüpft.

Jetzt ist das Problem, dass wenn ich einen neuen Konzern anlegen möchte und eine PLZ, Ort eingebe, die es noch nicht gibt, ich wunschgemäß auf das Formular frmOrteBearbeiten weitergeleitet werde, beim Schließen des Formulars frmOrteBearbeiten komme ich aber dann zum Formular frmHerstellerBearbeiten, vermutlich wegen dem Code:

Private Sub Form_Close()
If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
End Sub

Kann ich das noch irgendwie anpassen, dass ich beide Formulare frmHerstellerBearbeiten und frmKonzerneBearbeiten mit dem Formular frmOrteBearbeiten verknüpfen kann und zur Eingabe von PLZ und Ort nutzen kann?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 14, 2024, 19:18:21
Hallo,
wie ich in #20 schon schrieb, kann man mit den OpenArgs gezielt Code ausführen.
Hier übergibst Du Ufo1
..... , , "Ufo1"Für das andere Formular dann z.B.
..... , , "Ufo2"
Dann musst Du beim Schließen auswerten un entsprechend reagieren:

Private Sub Form_Close()
Select Case Nz(Me.OpenArgs,"")
   Case "Ufo1"
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
       Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboOrt.Requery
   Case "Ufo2"
       'Bezüge auf anderes Hafo

   End Select
End Sub
Nz() ist notwendig um den Fehler abzufangen wenn die OpenArgs leer (Null) sind.

Für Ufo1 und Ufo2 verwende kurze aussagefähige Namen.

Ich glaube, VBA ist bei diesen Befehlen relativ einfach zu verstehen. Wenn man im VBA Editor den Cursor auf einen Befehl stellt und F1 drückt, öffnet sich die VBA/Access Hilfe die nicht so schlecht ist wie ihr Ruf. Oft erhält man ausführlich Hilfe mit hilfreichen Beispielen. Und oft auch noch recht gut in Deutsch übersetzt.
Falls Du es nicht selbst schon festgestellt hast.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 14, 2024, 19:38:26
Hallo,

Zitathat funktioniert, danke! :)

Irgendwie hatte ich heute morgen übersehen, dass wenn ich den Code aus #20 bei mir eingebe, das Herstellerformular nicht mehr mit dem neu hinzugefügten Ort aktualisiert wird.

Im Formular frmOrtBearbeiten habe ich im Eigenschaftsdatenblatt unter "Ereignis" die folgenden VBA-Codes stehen:

Bei Laden:

Private Sub Form_Load()

DoCmd.GoToRecord , , acNewRec

End Sub

um beim Öffnen immer einen neuen Datensatz anzulegen.

Beim Öffnen:

Private Sub Form_Open(Cancel As Integer)

DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

Beim Schließen:

Private Sub Form_Close()

If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
   
End Sub

Habe ich noch einen Fehler drin oder was vergessen?

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 14, 2024, 19:58:58
Hallo,
hast du das in #22 schon realisiert bzw. umgesetzt wie in #22 beschrieben?
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 14, 2024, 20:09:26
Hallo,

ja, kann aber sein, dass ich noch einen Fehler drin hab oder ich es falsch aufgefasst habe. Im Formular frmOrteBearbeiten habe ich jetzt folgendes stehen.

Beim Öffnen:

Private Sub Form_Open(Cancel As Integer)

DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd, , "Ufo1"
DoCmd.OpenForm "frmKonzerneBearbeiten", , , , acFormAdd, , "Ufo2"

End Sub

Beim Schließen:

Private Sub Form_Close()
Select Case Nz(Me.OpenArgs, "")
   Case "Ufo1"
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
       Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboOrt.Requery
   Case "Ufo2"
       Forms!frmKonzerneBearbeiten!cboPLZ = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboPLZ.Requery
       Forms!frmKonzerneBearbeiten!cboOrt = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboOrt.Requery
   End Select
  
End Sub

Der Fehler tritt weiterhin auf!

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 14, 2024, 20:26:09
Hallo,
der erste Code kann ja nicht sein, Du kannst ja da nur ein Formular aufrufen.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 14, 2024, 20:39:00
Müsste ich quasi eine Kopie von frmOrteBearbeiten erstellen und dieses Formular dann mit dem Formular frmKonzerneBearbeiten verknüpfen?

Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 14, 2024, 23:32:55
Hallo,
der Parameter OpenArgs wird nur benötigt wenn Du die Formulare aus NotInList öffnest.
Wenn die Formulare normal geöffnet werden sind keine OpenArgs erforderlich.

Ich habe allerdings etwas den Faden verloren, mit dem was Du da gerade machst.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 15, 2024, 08:18:37
Hallo Klaus,

ZitatIch habe allerdings etwas den Faden verloren, mit dem was Du da gerade machst.

Alles klar, nochmal die Zusammenfassung des Problems.

In meiner Datenbank habe ich ein Formular frmHerstellerBearbeiten, bei dem ich die Felder PLZ und Ort mit einem Formular frmOrteBearbeiten verknüpft habe. Lege ich also einen neuen Hersteller an und die PLZ und Ort sind noch nicht vorhanden, habe ich die beiden Kombinationsfelder cboPLZ und cboOrt im Formular frmHerstellerBearbeiten beim Ereignis "Bei nicht in Liste" mit dem folgenden Code versehen:

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If

bzw.

Private Sub cboOrt_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If

Dadurch werde ich zum Formular frmOrteBearbeiten weitergeleitet:

frmOrteBearbeiten.PNG

Hier kann ich dann eine neue PLZ und einen neuen Ort hinzufügen. Wenn ich das Formular dann schließe, werde ich wieder zum Formular frmHerstellerBearbeiten weitergeleitet, um den neuen Hersteller fertig einzutragen. Das Problem das ich habe ist, dass der neu hinzugefügte Ort nicht in dem Formular frmHerstellerBearbeiten aktualisiert wird. Ich müsste das Formular erst wieder schließen und erneut öffnen, dann ist der Ort da.

Im Formular frmOrteBearbeiten habe ich bei den Ereignissen die folgenden Codes stehen:

Beim Öffnen:

Private Sub Form_Open(Cancel As Integer)

DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

Beim Schließen:

Private Sub Form_Close()

If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
   
End Sub

Das Hauptproblem ist, dass das Formular frmHerstellerBearbeiten nicht mit dem neuen Ort aktualisiert wurde, nachdem ich den Ort durch das Formular frmOrteBearbeiten hinzugefügt habe.

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 15, 2024, 09:18:57
Hallo,
das mit den Ufo muss in das Ereignis "NotInList"
Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)
.
.

    DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
Sinngemäß dann auch für das andere Kombi.

ZitatIm Formular frmOrteBearbeiten habe ich bei den Ereignissen die folgenden Codes stehen:
Da muss das mit dem Ufo raus.
Private Sub Form_Open(Cancel As Integer)
   DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd
End Sub

So wie Du das jetzt hast, bleibt ja bei den NotInList OpenArgs leer und der Code in Form_Close wird nicht ausgeführt.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 15, 2024, 10:15:59
Hallo Klaus,

Zitatdas mit den Ufo muss in das Ereignis "NotInList"

ich habe nun im Formular frmHerstellerBearbeiten beim Ereignis "Bei Nicht in Liste" der beiden Kombinationsfelder cboPLZ und cboOrt den Code angepasst:

cboPLZ:

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If

DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

cboOrt:

Private Sub cboOrt_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If

DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

ZitatDa muss das mit dem Ufo raus.

Im Formular frmOrteBearbeiten habe ich jetzt beim Ereignis "Beim Öffnen" nichts mehr stehen. Leider funktioniert es trotzdem nicht.

Gruß,
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 15, 2024, 12:13:11
Hallo,
das ist immer noch falsch, daher jetzt vollständig. Versuche doch mal den logischen Ablaf zu verfolgen. Der Code wird einfach nach und nach abgearbeitet.
Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)
If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If
End Sub
Private Sub cboOrt_NotInList(NewData As String, Response As Integer)
If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If
End Sub


Für das Formular "frmOrteBearbeiten" dann
Private Sub Form_Close()
If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
End Sub
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 15, 2024, 13:28:02
Hallo Klaus,

vielen Dank, der Code funktioniert jetzt für das Formular frmlHerstellerBearbeiten. Ich habe gerade selbst versucht, den Code auch für das Formular frmKonzerneBearbeiten anzupassen und es hat nicht funktioniert. Im Formular frmKonzerneBearbeiten habe ich die beiden Kombinationsfelder cboPLZ und cboOrt unter dem Ereignis "Bei Nicht in Liste" mit folgendem Code versehen:

Private Sub cboOrt_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo2"
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If

End Sub

bzw.

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo2"
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If

End Sub

Den Code im Formular frmOrteBearbeiten habe ich angepasst zu:

Private Sub Form_Close()
Select Case Nz(Me.OpenArgs, "")
   Case "Ufo1"
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
       Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboOrt.Requery
   Case "Ufo2"
       Forms!frmKonzerneBearbeiten!cboPLZ = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboPLZ.Requery
       Forms!frmKonzerneBearbeiten!cboOrt = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboOrt.Requery
   End Select
End Sub

Irgendwas stimmt also immer noch nicht!

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 15, 2024, 14:05:39
Hallo,
füge mal einen Stop Befehl im Code ein:
Private Sub Form_Close()
Stop
Select Case Nz(Me.OpenArgs, "")
.
.
Der Code kann dann mit F8 im Einzelschritt durchlaufen werden.
Vor dem F8 stellst Du aber mal den Cursor auf die Mitte der Variablen OpenArg und Ufo1/Ufo2.
Dann wird Dir deren Wert angezeigt.
Eine andere Möglichkeit vor Stop noch einfach eine MsgBox

MsgBox Me.OpenArgsUnd dann erst mit F8 sehen wie es weiter geht.


PS:
Ich bin erst heute Abend wieder am PC.

Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 15, 2024, 17:22:10
Hallo,

ich hatte irgendwo noch einen kleinen Fehler in der Benennung der Kombinationsfelder ::).  Jetzt scheint es zu laufen und das Thema kann geschlossen werden!

Ich bedanke mich bei Dir für die ganze Hilfe! :D

Gruß
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: Beaker s.a. am Februar 15, 2024, 17:42:32
Hallo,

Hätte da noch ein/zwei Fragen.
1. "Ufo1" bzw. "-2"), - sind die beiden Formulare mit den Kombis?
2.
@klaus
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
Müsste das nicht anders herum, - erst aktualisieren und dann auf den
neuen Wert einstellen?

gruss ekkehard
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: ChemSim am Februar 18, 2024, 19:42:30
Hallo,

Zitat1. "Ufo1" bzw. "-2"), - sind die beiden Formulare mit den Kombis?
Ja, es sind die beiden Formulare frmHerstellerBearbeiten und frmKonzerneBearbeiten.

Gruß,
Simon
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: MzKlMu am Februar 18, 2024, 19:56:25
Hallo,
@ekkehard
Nein, das ist so richtig.
Erst die neue ID in das Kombi und dann mit Requery das Kombi aktualisieren.
Siehe auch die entsprechende FAQ von DonKarl.
Titel: Re: Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern
Beitrag von: Beaker s.a. am Februar 19, 2024, 16:13:36
O.K., danke.