Form_Current Ereignis funktioniert nicht

Hallo,

ich brauche wieder einmal eure Hilfe.

Ich habe zwei Formulare. Auf dem ersten Formular befindet sich eine Optionsgruppe. Hinter dieser ist ein Code der ein bestimmtes Feld auf dem zweiten Formular sichtbar macht. (wenn die Voraussetzung erfüllt ist)

Nun meine Frage:
Damit das bei allen Datensätzen funktioniert, muss ich doch den Code auch hinter dem Formular bei Form_Current hinterlegen, oder?

Das funktioniert auch soweit, nur wenn ich die Datenbank öffne und ins zweite Formular gehe, ist das Feld nicht sichtbar. Ich muss erst wieder ins erste Formular gehen und durch die Datensätze klicken, dann ins zweite Formular gehen und dann wird mir erst das zweite Feld angezeigt.

Kann ich sonst auch ein anderes Ereignis nehmen? Ich habe Form_load schon probiert, aber das hat auch nicht funktioniert.

Was kann ich ändern? Bin für jegliche Hilfe dankbar.

Code:

Private Sub Optionsgruppe\_Click() 
 On Error Resume Next 
 If Me!Optionsgruppe = 1 Then 
 Forms!Form\_B![Feld1].Visible = True 
 Else 
 Forms!Form\_B![Feld1].Visible = False 
 End If 
End Sub

Moin, emma,

keiner traut sich, weil keiner versteht, was Du da vorhast. Ich auch nicht, aber ich versuch’s mal :smile:

wenn ich die Datenbank öffne und

sofort?

ins zweite Formular gehe, ist das Feld nicht sichtbar.

dann weiß die Form_B nichts vom Optionsfeld.

Vielleicht wird es einfacher, wenn Du beschreibst, warum der Text mal sichtbar sein soll und mal nicht. Könnte ja sein, dass jemandem eine ganz andere Lösung einfällt.

Gruß Ralf

N’abend,

Damit das bei allen Datensätzen funktioniert, muss ich doch
den Code auch hinter dem Formular bei Form_Current
hinterlegen, oder?

jein

Das funktioniert auch soweit, nur wenn ich die Datenbank öffne
und ins zweite Formular gehe, ist das Feld nicht sichtbar.

kommt auf deinen Code dort an

Ich muss erst wieder ins erste Formular gehen und durch die
Datensätze klicken, dann ins zweite Formular gehen und dann
wird mir erst das zweite Feld angezeigt.

kommt auf deinen Code dort an

Kann ich sonst auch ein anderes Ereignis nehmen? Ich habe
Form_load schon probiert, aber das hat auch nicht
funktioniert.

also falscher Code

Was kann ich ändern? Bin für jegliche Hilfe dankbar.

Also diese Code ist im 1. Formular aktiv, d.h. damit dein Code funktioniert, muss das 1. Formular geöffnet sein.

Code:

Private Sub Optionsgruppe_Click()
On Error Resume Next

damit das funktioniert, muss das 2. Formular auch gleichzeitig geöffnet sein, sonst bekommst du einen Fehler

If Me!Optionsgruppe = 1 Then
Forms!Form_B![Feld1].Visible = True
Else
Forms!Form_B![Feld1].Visible = False
End If
End Sub

Lösung: immer beide Formulare öffnen, damit dein Code funktioniert.

Wie du selber festgestellt hast, ist das Blödsinn und nicht Anwenderfreundlich.

Deine Optionsgruppe stellt einen Schalter dar. Der im Moment des Schließens des Formulars weg ist. Also mußt du dafür sorgen, dass die Information des „Schalters“ gespeichert wird.

Sinnvoller Weise in der Tabelle zum angezeigten Datensatz.

Beim Öffnen des Zweiten Formulars gehst du dann zum entsprechenden Datensatz und ließt diese „Schaltereinstellung“ einfach aus, um damit das Feld ein- oder auszublenden.

Ob ein Optionsfeld die richtige Wahl dafür ist, kann ich im Moment mangels Informationen nicht beurteilen. Ich vermute aber: nein, nicht sinnvoll.

Ob ein zweites Formular geöffnet werden muss , kann ich im Moment mangels Informationen nicht beurteilen. Ich vermute aber: nein, nicht sinnvoll. Vermutlich würde ein UFO mehr Sinn machen.

btw mit welcher Access-Version arbeitest du?

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo und danke für eure Antworten. Ich arbeite mit der Version 2003.

Ich beschreibe mal genauer was ich vorhabe.
Ich habe 2 Formulare (A+B). Auf dem A Formular habe ich 10 Textfelder (werden Artikel reingeschrieben) und daneben jeweils eine Optionsgruppe mit ja(1) und nein(0) (ob dieser Artikel versendet worden ist oder nicht). Dieses Formular ist auch das Startformular.
Auf dem A Formular befindet sich eine Schalfläche mit der ich das Formular B öffne. Daher fange ich auch die Fehlermeldung ab, die mir sagt, dass Access beim Starten der Datenbank das Formular B nicht finden kann.
Auf dem Formular B befinden sich 10 ungebundene Textfelder. In diesen Feldern lasse ich mir den Inhalt anzeigen, die auf dem Formular A eingegeben wurden. Jetzt möchte ich aber nur die Felder sehen, die versendet worden sind. Sprich ich möchte nur die Felder sehen, wo ja(1) bei der Optionsgruppe ausgewählt wurde, um nur diese weiter zu bearbeiten.

Vielen Dank für eure bisherige Hilfe.

Liebe Grüße Emma

Hallo,

wenn ich dein Problem richtig verstanden habe, soll ein oder mehrere Felder in FormB abhaengig von ein Option in FormA aus bzw. eingeschaltet werden ?!?!

Warum codierst du dann eine Aktion die FormB betrifft in FormA?

Das ein/ausschalten des Steuerelementes sollte in FormB stattfinden. Hierzu hast du viele Optionen:

  1. den Schalter in OpenArgs uebergeben und in OnOpen von FormB darauf reagieren
  2. im Ereignis BeiAktivierung von FormB den Wert aus FormA auslesen
  3. mit einer globalen Variable arbeiten
    uswusf

Auserdem ist es kein guter Stil das Programm in einen Fehler laufen zu lassen, wenn FormB geschlossen ist, das kann man vorher ueberpruefen und entsprechend reagieren.

Hope tis helps
Peter

Moin, Emma,

Kunstfehler 1: Unabhängige Formulare sollten niemals auf Eingaben reagieren, die auf anderen Formularen getätigt werden.

Kunstfehler 2: Ein Merkmal der Daten muss bei den Daten gespeichert werden. Wenn das Versenden nur in einem Optionsfeld auf der Form festgehalten wird, lebt das Merkmal nur, solange die Form geöffnet ist. Heute als versandt gekennzeichnete Sätze gelten morgen wieder als nicht versandt.

Das Speichern bei den Daten hat den Vorteil, dass andere Forms diese Daten nutzen können.

Gruß Ralf