Juli 14, 2020, 03:18:37

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Leere Spalten ausblenden Unterformular im Navigationf. Vba

Begonnen von PaulB1970, Juni 26, 2019, 10:19:32

⏪ vorheriges - nächstes ⏩

PaulB1970

Hallo liebe Community,

es gibt ein folgendes Problem:

Ich habe ein Navigationsformular mit einem Unterformular, in diesem Unterformular sind 3 weitere Unterformulare sowie Kombiboxen die ich als Filter benutze für die 3 Unterformulare.

Dies funktioniert auch alles super, jetzt ist das einzige Problem das ich durch das Filtern in den 1. beiden Tabellen bis auf eine Spalte, alles leere Spalten habe, welche ich gerne ausblenden lassen würde. Im Internet habe ich schon Codes gefunden, die ich nicht auf meine Access anwenden konnte. Dazu muss ich sagen das ich mittlerweile über sehr gute Kenntnisse mit Access und Sql verfüge jedoch nicht VBA erfahren bin.

Ich würde mich über Hilfe freuen

Mit freundlichen Grüßen
Paul

DF6GL

Hallo,

Zitatdurch das Filtern in den 1. beiden Tabellen bis auf eine Spalte, alles leere Spalten habe, welche ich gerne ausblenden lassen würde.


"in den 1. beiden Tabellen "  bezieht sich auf die Unterformulare, die leere Felder anzeigen?

Wenn so, dann evtl. so:

ZitatSub Form_Current()
Me!Feld1.Visible=not  Isnull(Me!Feld1)
Me!Feld2.Visible=not  Isnull(Me!Feld2)
.
.
End Sub


Dies funktioniert allerdings nicht erwartungsgemäß  in einem Endlosform.

PaulB1970

Juni 26, 2019, 12:22:01 #2 Letzte Bearbeitung: Juni 26, 2019, 12:33:33 von PaulB1970
Zitat"in den 1. beiden Tabellen "  bezieht sich auf die Unterformulare, die leere Felder anzeigen?


Ja genau, die Unterformulare sind Querys als Endlostabellen.

ZitatSub Form_Current()
Me!Feld1.Visible=not  Isnull(Me!Feld1)
Me!Feld2.Visible=not  Isnull(Me!Feld2)
.
.
End Sub


Müsste ich das dann als Button einfügen? oder als nach Aktualisierungsereignis direkt im jeweiligen Unterformular?

******edit****
Ich habe es jetzt einmal eingefügt.
Me!P0.Visible = Not IsNull(Me!P0)
Me!T1D1.Visible = Not IsNull(Me!T1D1)
Me!T1D2.Visible = Not IsNull(Me!T1D2)
Me!T1D3.Visible = Not IsNull(Me!T1D3)
Me!T1D4.Visible = Not IsNull(Me!T1D4)
Me!T1D5.Visible = Not IsNull(Me!T1D5)
Me!T1D6.Visible = Not IsNull(Me!T1D6)
End Sub


Jedoch kommt die Meldung, dass er das Feld P0 nicht kennt. Muss ich für Feld1 nicht die Spaltennamen  eintragen?

L.G. und vielen Dank für die schnelle Hilfe

DF6GL

Hallo,

recht unklar, was Du sagst:

Zitatdie Unterformulare sind Querys als Endlostabellen


Heißt, das, dass die Abfragen direkt mit Drag&Drop in ein Hauptform eingefügt wurden und es gar keine "(Endlos-)Formulare" sind?

Dann ist das ganze Unterfangen so nicht lösbar.

ZitatMüsste ich das dann als Button einfügen


Nein, der Code ist die Ereignisprozedur für das Form-Ereignis "Beim Anzeigen" (Form_Current).


ZitatJedoch kommt die Meldung, dass er das Feld P0 nicht kennt. Muss ich für Feld1 nicht die Spaltennamen  eintragen?


Du verwechselt vermutlich Abfragen, Tabellen/Abfrage-Felder, Formulare und Steuerlelemente.

Es müssen die Steuerelementnamen aus dem betroffenen (Unter-)Formular verwendet werden. Nur solche Steuerelemente (hier Textfelder) können auf diese Weise manipuliert werden.

PaulB1970

So sieht ungefähr meine Access aus.

---------------------------------------------------------------------
Navigationskopf mit Unterpunkte
---------------------------------------------------------------------
Formular

Kombifeldfilter auf Abteilung


Qry 1(UFo 1)    Qry 3(UFo 2)   Qry 3(UFo 3)

Konto      -  Abt 1           Konto      -  Abt 1               Konto      -  Dif
--------------------         --------------------------       --------------------------   
Kosten     -  1                 Kosten     -   1                     Kosten -  0
Einahmen -   1                Einahmen    -    1                     Einahmen -  0
etc       - 1                 etc        -    1                     etc     -   0



Es gibt in UFo1+2 mehrere Abteilungen und durch den Kombifliter wird dann logischer weise nur eine Abteilung ausgewählt und die anderen werden leer. Diese will ich also ausblenden.

PaulB1970

Juni 26, 2019, 13:03:20 #5 Letzte Bearbeitung: Juni 26, 2019, 13:19:58 von PaulB1970
ZitatHeißt, das, dass die Abfragen direkt mit Drag&Drop in ein Hauptform eingefügt wurden und es gar keine "(Endlos-)Formulare" sind?

Dann ist das ganze Unterfangen so nicht lösbar.

Die Abfragen sind als eigene Formulare gespeichert(Endlosformulare) und dann als Unterformulare in einem nicht Endlosformular nebeneinander eingefügt. Dieses Formular habe ich dann per drag and drop im Navi gespeichert.
Zitat
Du verwechselt vermutlich Abfragen, Tabellen/Abfrage-Felder, Formulare und Steuerlelemente.

Es müssen die Steuerelementnamen aus dem betroffenen (Unter-)Formular verwendet werden. Nur solche Steuerelemente (hier Textfelder) können auf diese Weise manipuliert werden


Forms.F_00_01_Navigationsformular.Navigationsunterformular.Form.F_25_01_Finanz_Vergleich1!T1D1

Dann wäre das der Steuerelement Name oder?


Ist es besser verständlich jetzt?

DF6GL

Hallo,

nein,


der Steuerelementname wäre "T1D1"   in dem Formular ("Me") , in dem der Code abläuft.. 

PaulB1970

Dann müsste es doch aber mit Sub Form_Current()
Me!T1.Visible = Not IsNull(Me!T1)
Me!T2.Visible = Not IsNull(Me!T2)
Me!T3.Visible = Not IsNull(Me!T3)
Me!T4.Visible = Not IsNull(Me!T4)
Me!T5.Visible = Not IsNull(Me!T5)
Me!T6.Visible = Not IsNull(Me!T6)
Me!P0.Visible = Not IsNull(Me!P0)
End Sub


funktionieren?


Beaker s.a.

Hallo,
Wenn
Zitatein Navigationsformular mit einem Unterformular, in diesem Unterformular sind 3 weitere Unterformulare
fehlt hier IMO eine Ebene
Forms.F_00_01_Navigationsformular.Navigationsunterformular.Form.F_25_01_Finanz_Vergleich1!T1D1
"Forms.F_00_01_Navigationsformular" = Navi-Form
"Navigationsunterformular" = Navi-Ufo-Control
"Form" = (HFo-?)Formular im Navi-Ufo-Control
"F_25_01_Finanz_Vergleich1" müsste dann das UFo-Control im "Form" sein.
Um auf dessen Controls zugreifen zu können ist auch hier wieder das darge-
stellte Formular mit .Form zu referenzieren; - also
Forms.F_00_01_Navigationsformular.Navigationsunterformular.Form.F_25_01_Finanz_Vergleich1.Form!T1D1
Je nachdem in welchem Formular das dann abläuft kann die Referenz ab
diesem Formular mit "Me." abgekürzt werden.
Beispiel in "Form" (s.o.)
Me.F_25_01_Finanz_Vergleich1.Form!T1D1
läuft es im untersten UFo
Me!T1D1
auf dem Naviform
Me.Navigationsunterformular.Form.F_25_01_Finanz_Vergleich1.Form!T1D1

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.

DF6GL

Hallo,

der Code kann ja nur im entspr. Formular ablaufen, wenn es sein muss, halt in jedem der 3 (Unter-)Formulare eingebaut werden.

Vielleicht ist aber etwas ganz anderes gemeint:  Evtl. soll das Unterform(-Steuerelement)  ausgeblendet werden, wenn es gar keine DS (Abteilungen) bezgl. der Filterung zum Anzeigen gibt.

PaulB1970

Vielen Dank für eure Hilfe, ich probiere es mal aus und gebe dann Feedback.

VG Paul