Neuigkeiten:

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

Mobiles Hauptmenü

Navigationsformulare

Begonnen von VerenaM, November 09, 2021, 15:59:41

⏪ vorheriges - nächstes ⏩

DF6GL

#15
Hallo,

ich finde das Darstellungskonzept etwas ünglücklich, sprich nicht dem Tabellenkonzept entsprechend.

Dadurch ergeben sich Tricksereien und programmtechnischer Aufwand.

Wenn ich es recht verstehe, willst Du ausgehend von der aktuell angezeigten  Person unter Button "Personal Information"  die Daten bei den restlichen Navi-Buttons synchronsieren.


Dann muss Folgendes gemacht werden:

A)
Speichern der PersonID bei "Form_Current" in eine globale Variable (bzw. Tempvars-Auflistung oder benutzerdefinierten Property oder Collection).  In jedem Form, das mit den Navi-Buttons angezeigt wird, muss beim Laden des Forms (Ereignis "Form_Load")  mit dieser globalen Variablen die Filterung auf die PersonID durchgeführt werden.


oder (nicht getestet)

B)
--Erstell im Detailbereich des Navi-Form ein (unsichtbares) Textfeld ("txtPersonID").
--Bei Ereignis "Form_Current" des "Personal Information"-Formulars wird die personID in dieses Textfeld geschrieben:
   Sub Form_Current()
     Me.Parent!txtPersonID = Me!PersonID
   End Sub

-- Bei "Where-Klausel für Navigation" zu jedem Navi-Button kommt zu stehen:     PersonID = txtPersonD
-- Beim Laden des Navi-Forms sollte txtPersonID mit einer gültigen PersionID vorbesetzt werden.





VerenaM

Hallo Franz,

vielen Dank für deine Hilfe!

Ich werde mich gleich bilden :-D (habe noch nie Variablen in Access benutzt) und versuchen, deinen Vorschlag einzubauen.

Was das Darstellungskonzept betrifft, da wußte ich am Anfang nicht, mit welchen Problemen und Problemchen ich zu kämpfen bekomme.
Ich würde diese Version so abgeben (natürlich ist die deadline da...) und dann versuchen, das Ganze zu verbessern.

Liebe Grüße,
Verena

DF6GL

Hallo,


Zitathabe noch nie Variablen in Access benutzt

dann nutze Vorschlag B).....


Was nicht heißen soll, dass Du Dich nicht mit VBA auseinandersetzen sollst.  Ohne VBA bekommst Du keine    vernünftige Ablaufsteuerung und sonstige zusätzliche Funktionen hin.

VerenaM

Hallo Franz,

vielen lieben Dank!
Die B) Variante hat geklappt (wenn ich auch nicht verstehe, wie Access das auch bei einem Formular hat, das keine on Load Funktion hat (Das war bei 'Contract Info' so...)

Hier habe ich angefangen, mich an der Variante A) zu versuchen.

So habe ich mir das Deklarieren der globalen Variable vorgestellt (nur weiß ich nicht, ob es dafür einen bestimmten Ort auch gibt?) und das Zuweisen der PersonID:

********
Dim intPerson As Integer

Private Sub Form_Current()
    intPerson = Person.PersonID
End Sub
********

Und so dachte ich, dass das Filtern funktionieren könnte (was es natürlich nicht tut :-D):

********
Private Sub Form_Load()
    Me!PersonID = intPerson
End Sub
********

Aber gehe ich wenigstens in die richtige Richtiung?

Danke,
Verena

DF6GL

#19
Hallo,

wenn man die Richtung korrigiert, ist es schon die richtige...  ;)



Zitatob es dafür einen bestimmten Ort auch gibt

Die Deklarierung der globalen Variablen muss in einem globalen (Standard-) Modul, nicht in einem Form-Klassenmodul passieren:


In einem allgemeinen (Standard-)Modul:

Option Compare Database
Option Explicit

Public intPerson as Long   ' Long, weil Integer einen zu kleinen Wertebereich besitzt.


Die Form_Current-Prozedur muss so heißen:

Private Sub Form_Current()
    intPerson = Me!PersonID
End Sub



Das Filtern kann z. B. so aussehen:

Private Sub Form_Load()
    Me.Filter  = "PersonID = " & intPerson
    Me.FilterOn = True

End Sub


Zitatwenn ich auch nicht verstehe, wie Access das auch bei einem Formular hat, das keine on Load Funktion hat (Das war bei 'Contract Info' so...)

versteh das nicht, was Du damit genau meinst.

VerenaM

Hallo Franz,

vielen Dank dir noch mal für deine Hilfe, die Tips und Ideen.

Ich werde wohl in VBA noch viel üben müssen, um alles so zu bekommen, wie ich es mir vorstelle :-)
Bin aber noch an den Reports  dran, möchte ja alles für den Benutzer freundlich machen.

Liebe Grüße,
Verena