Mit Button auf anderes Formular wechseln

Hallo,

ich habe ein Button im Formularfuss meines Hauptformulars „frm_hersteller1_0“ angelegt. In diesem Formular liegt ein Unterformular „frm_eckdaten_tag“. Wenn man auf den Button clickt, soll ein weiteres Formular geöffnet werden „frm_transponder1_0“, das dann die eckdaten_ID anzeigt. Sprich, wenn ich auf dem Hauptformular Daten anschauen und das Eingabeformular „frm_transponder1_0“ dann öffnen möchte, soll das über einen Button gehen und es soll genau die ID Anzeigen, die ich vorher im Hauptformular angeschaut habe.

ganz einfach
Hallo
Wenn ich die Frage richtig verstanden habe, ist die Lösung ganz einfach.
Also erstmal müssen Deine Daten in irgendeiner Form public oder global sein.
Formulare kannst Du zunächst alle laden, bzw. must Du sogar, wenn deren Code genutzt werden soll.
Mit der Show Methode kann man Parameter übergeben, welche eine gebundene Darstellung oder eine unabhängige erlauben.
(Modal-Nichtmodal).
Steht alles im Handbuch.
Darüber kommts auch drauf an, was Du genau machen möchtest.
Sich durch überlange Beschreibungen zu kämpfen ist allerdings durchaus unangenehm, falls Du öfters hier Fragen stellen möchtest.
Versuch mal immer, ein einfaches Prinzip anzuwenden, sonst gibts Spagetti mehr und mehr, auch in Deinem Code.
MfG
Matthias

Vielen Dank für die Hilfe,

mein Problem bleibt allerdings.

Nochmal kurz was ich machen will:
Wenn man auf den Button (btn_click) im Formularfuß auf dem Hauptformular (frm_hersteller1_0) anklickt, soll ein neues Formular (frm_transponder1_0) sich öffen, das Hauptformular sich schließen und das neue Formular soll die Daten anzeigen, bei denen die IDs des Unterformulars (frm_eckdaten_tag) mit dem neuen Formular (frm_transponder1_0) übereinstimmen.
Das Unterformular ist im Hauptformular eingebettet.
Ich weiß nicht ob das verständilich für Dich ist. Wenn nicht, dann sag mir an welcher Stelle ich unverständlich schreibe und ich versuche mein Bestes.

mfg fsp

Hallo FSP,

redest du von VB ? Du kannst in VB Formaulare und Module verwenden!
Formulare sind die Fenster die du siehst und Module da kannst du zum Bsp. Functionen reinschreiben, wo du von verschiedenen Formen raus drauf zugreifst :wink:

Du schreibst das du ein Hauptformular hast und darin sind dann unterformulare ? Wie meinst du das denn?
Ist das "Hauptformular eine MDI Form und die Formen dann Fensterkinder, sprich Formulare die in der MDI Form angezeigt werden sollen? oder handelt es sich bei den ganzen Formularen um normale Formulare?
Wie startest du denn dein Project? Über die Sub Main oder direkt in der Form xyz?
Du hast desweiteren auch geschrieben, das du wenn du auf form x einen Button klickst, dann Form y angezeigt werden der die daten von Form z uebernimmt. Dabei willst du aber das Form x wieder weg ist.
Was ist wenn du dann Form y verlaesst? Welches Formular soll dann angezeigt werden?
Die Daten in Form z sind sie als privat oder public declariert?
Stehen die Daten evtl. auf der Form z schon in Steuerelementen( Textboxen, labels, listboxen etc.? )
Warum stehen die Daten in Form z wenn du sie in Form y haben magst?

Das sind die Fragen die ich mir auf die schnelle stelle. Ohne diese angaben ist es schlecht dir eine lösung zu praesentieren :frowning:

Beantworte mal bitte die Fragen und ich schaue mal was man da machen kann.

Aber prinzipell musst du alle Formen laden mit load Formname
Anzeigen kannst du das Formular über Formularname.show vbmodal / modal ( je nach wunsch)
Ausblenden kannst du sie mit formularname.hide
Entladen kannst du Formulare ueber unload Formularname
Zugreifen auf die Daten kannst du über Variablenname. Alternativ kannst du noch den Modulnamen davor schreiben. Achte dabei aber darauf das sie als Public declariert sind!
Auf einzelne Steuerelemte kannst du zugreifen mit Formularname.Steuerelementname.Eigenschaft / Methode ( Bei Methoden muessen die Functionen / Sub auch Public sein)

MFG Alex

Hallo
So mit Formular und Unterformular, das gibts eigentlich nicht. Nur wenn es sich um eine MDI Anwendung handelt, wie bereits beschrieben.
oder Du meinst Windows. Jedes Control und jeder Button ist eine eigene Art von Window. Dabei gibts dann Parents und Childs usw…
Im Prinzip kann man Dir dabei die Arbeit aber nicht abnehmen.
Eine Möglichkeit:
Setze alle notwendigen Controls auf ein Formular.
Dann mache einen Teil davon unsichtbar (Controlxyz.Visible = False).
Möchtest Du den unsichtbaren Teil verwenden, mache sie alle sichtbar und positioniere sie ggf. an der richtigen Stelle.
Die unerwünschten machst Du dann unsichtbar.
Das ist eine Möglichkeit.
Die andere, und das würde ich im Moment vorziehen, das ist die modale Show-Methode mit einem anderen Formular. Die Daten kannst Du wahlweise in ein Standard-Modul(.bas) setzen, oder auch in einem unsichtbarem Formular ansprechen. Ein unsichtbares Formular ist immer noch geladen und vom Code her funktionsfähig. Das tag-Dingens hab ich noch nie verwendet. Dafür darfst Du lediglich das Form nicht entladen, würde ich sagen.
In anderen Worten, Du kannst Dir was aussuchen.
MfG
Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Alex,

Ich habe die Formulare in Access erstellt, also unter Formulare >> Erstellen in Entwurfsansicht. Ich weiß gar nicht was MDI Formulare sind.
Ich möchte 8 Formulare erstellen, die unten im Formularfuß 8 Buttons haben, mit denen man dann auf die anderen Formulare wechseln kann. Clickt man einen Button an, so schließt sich immer das aktuelle und das gewünschte öffnet sich. Somit gewährleiste ich, dass alles gespeichert wird und immer nur ein Formular bearbeitet werden kann.
Auf dem ersten Formular, das mit einem Makro beim Starten des Programms geöffnet wird, stehen Firmendaten, die da auch eingegeben oder verändert werden können und es sind noch zwei Unterformulare eingebettet, die schon extra als Formular angelegt sind. Also die mit dem Tool „Unterformular/-Bericht“ in das Formular miteingearbeitet wurde.
Das eine Unterformular zeigt Ansprechpartner an, die hinzugefügt oder verändert werden können. Das andere Unterformular zeigt nur ein paar Daten von Produkten an, die nicht verändert werden können, da die Felder gesperrt sind und sie sollen nur 5 von 25 Attributen anzeigen um auf diesem Formular Unternehmensdaten, Ansprechpartner und diese Eckdaten auf ein Mal zu sehen um einen Überblick zu bekommen. Will man die Produktdaten ändern oder ein neues anlegen, so soll man unten im Formularfuß den entsprechenden Button clicken und das Formular Produkt soll sich öffnen, aber es soll dann gleich das selbe Produkt anzeigen, das zuvor auf dem anderen Formular, im Unterformular zu sehen war. Ist dies vollbracht und man möchte zurück oder ein ganz anderes Formular öffnen, clickt man wieder im Formularfuß auf den entsprechenden Button, das neue Formular öffnet sich und das eben benutzte schließt sich. So hat der User immer nur die Möglichkeit ein Formular zu öffnen bzw. zu bearbeiten und speichert so seinen Daten bei jedem Wechsel ab. Ich hoffe, ich habe es so ein wenig verständlicher gemacht. Ich sollte also den Code wissen, den man dazu braucht ein neues Formular zu öffnen, das alte zu schließen und das neue soll das gleiche Produkt anzeigen, wie das was auf dem Unterformular zu sehen war. Der Button liegt nicht im Unterformular sonder im Formularfuß und muss so explizit das andere Formular ansprechen. Wenn ich aber alle 8 Buttons im Formularfuß decodiert habe, kann ich diese kopieren und in alle anderen Formulare ebenfalls in den Fuß kopieren.

mfg fsp