Neuigkeiten:

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

Mobiles Hauptmenü

Verknüpfung mit Unterformular

Begonnen von Henrik, August 07, 2011, 14:49:54

⏪ vorheriges - nächstes ⏩

Henrik

Liebe Leser und Accesskundige,
Ich habe eine Frage zum verbinden von einem Formular zu seinem Unterformular. Und zwar geht es darum das ich in dem Hauptformular mehrere Eintragungen von Namen habe z.B. Direktor [Vorname] [Nachname] oder Lehrer [Vorname] [Nachname] jetzt besteht die Möglichkeit das die Personen bereits in dem Unterformular Anschrift und Kontaktdaten eingetragen sind. Für diesen fall möchte ich das wenn ich z.B. oben den Direktor eingetragen habe ich durch klicken auf ein Feld daneben oder ähnliches ihn im Unterformular Anschrift angezeigt bekomme mit seinen Daten. Falls er nicht eingetragen ist so soll dieses mitgeteilt werden. Das mit dem klicken oder ähnlichem soll zu allen 5 Namens Eintragungen im Hauptformular klappen.


                                                                                      Hauptformular
[Vorname][Nachname]   [Vorname][Nachname]   [Vorname][Nachname]   [Vorname][Nachname]    [Vorname][Nachname]
                  \                                       \                                      l                                        /                                       /
                    \                                       \                                    l                                       /                                       /
                                                                                      Unterformular
                                                                                   [Vorname] [Nachname]

So ähnlich ist das dann grafisch dargstellt.

Ich hoffe wegen Zeitdruck auf baldige Antwort und falls ihr etwas an der Fragestellung nicht versteht so sagt dies bitte:
Henrik

Henrik

Achja wenn ihr sagt das euch das bei der Beantwortung helfen würde kann ich auch mal versuchen n Screenshot hochzuladen.

DF6GL

Hallo,


ich befürchte, das Du meine Antwort nicht hören willst..  ;) :


Ein solcher Formularaufbau ist nicht zielführend...  "Horizontale" Listen von Feldern mit gleichem sinngemäßem Inhalt ("Personen") bringen Verdruß und Ärger.


Wie auch immer, Du könntest mit Hilfe von 5 Schaltflächen in deren Ereignisprozedur(en) "Beim Klicken" das UFO entspr. dem eingebenen Namen filtern.  Eine Mitteilung bei "fehlenden" Namen ist überflüssig, weil das UFO dies schon dadurch mitteilt, dass kein DS angezeigt wird.


Sub btnName1_Click()
Me!Ufo_Steuerelementname.Form.Filter="Nachname='" & me!Nachname1 & "' and Vorname ='" & Me!Vorname & "'"
Me!Ufo_Steuerelementname.Form.FilterOn =true
End Sub



Wohlgemerkt:  Dies ist nur eine Lösung zu Deiner geschilderten Situation und keine, die für ein korrektes DB-Design brauchbar ist.



Henrik

Also schonmal danke für die Antwort und n paar Fragen zum Verständnis und Verbesserung:

1. Also ich habe keinerlei Ahnung von Ereignisprozeduren etc. deswegen wollte ich fragen wenn die Felder in dem Hauptformular z.B. "Ansprechpartner Vorname" und "Ansprechpartner Nachname" heißen  und die zu verbindenden im Unterformular "persVorname" und "persNachname"  wie das dann aussehen würde. Oder du erklärst mir halt die einzelenen Funktionen in dem Befehl und die Bedeutungen ;).


2. Du sagst das das keine schöne Lösung sei. Kannst du mir vieleicht erklären wieso genau und wie es ansonsten besser geht?

Ich danke für deine Hilfe
Henrik

DF6GL

#4
Hallo,

1) ist zunächst nicht von Vorteil... und Du solltest mal u. st. Link #3 unter "Anfänger" studieren

Anstelle der Ereignisprozeduren kannst Du aber mal versuchen, dies durchzuführen:


in den UFO-Steuerelement-Eigenschaften "Verknüpfen von" dies einzutragen:

persVorname;persNachname
und bei "Verknüpfen nach" dieses:

[Ansprechpartner Vorname];[Ansprechpartner Nachname]


Hier ist dringend darauf achten, Sonder- und Leerzeichen in Namen zu vermeiden.

Das funktioniert aber nur für genau einen Namen , die anderen 4 Namen bleibe aussen vor, ausser die Verknüpfungseigenschaften werden per VBA dynamisch eingestellt, je nachdem, welchen Button man drückt.

Die Alternative mit der Filterung des UFO hab ich schon geschrieben. Dort brauchst Du nur die Namen anzupassen.

Eine Ereignisprozedur erstellt man (z. B.) , indem man auf die am rechten Rand der Ereigniseigenschaften-Zeile auf die 3 Pünktchen klickt, dann "Code" auswählt und die eigentlichen Codezeilen in den vorbereiteten Prozedurrumpf einträgt.

Entspr. Deinen Feldnamen sieht das so aus, wobei die Schaltfläche für den "Ansprechpartner-Namen "btnAnsprechpartner" heißt und   ich noch nicht weiß, wie das UFO-St-El. heißt:

Sub btnAnsprechpartner_Click()
Me!Ufo_Steuerelementname.Form.Filter="persNachname='" & me![Ansprechpartner Nachname] & "' and persVorname ='" & Me![Ansprechpartner Vorname] & "'"
Me!Ufo_Steuerelementname.Form.FilterOn =true
End Sub



2)  "unschön" ergibt sich schon daraus, dass die Tabellen vermutlich nicht normalisiert sind.  (siehe u. st. Links 1 und 1a)
Wie schon gesagt, "horizontale" Aufzählungen von gleichsinnigen Feldern bringt Probleme mit sich.

Henrik

OK die Tabellen sind durchaus nicht normalisiert  aber bei den Namen sollte das kein Problem sein die sind nämlich schon normalisiert. Und mein Befehlt funktioniert irgendwie nicht soweit das einfach nix passiert. Hier zeig ich mal wie ichs geschrieben habe:

Private Sub Befehl55_Click()
Me!frmlAnsprechpartner.Filter = "Nachname='" & Me![Ortsgemeinde Ansprechpartner Nachname] & "' and Vorname ='" & Me![Ortsgemeinde Ansprechpartner Vorname] & "'"
Me!frmlAnsprechpartner.Form.FilterOn = True
End Sub

Private Sub Befehl56_Click()

End Sub


P.S. meine Kenntnisse über Access beziehen sich aus hierheraus:  Microsoft-Access-2010-Das-Handbuch von Lorenz Hölscher wobei ich den letzten Teil Programmierung ausließ. Ansonsten hab ich mir noch n bisschen was zusammengetüftelt aber soweit wars das dann.

DF6GL

Hallo,

die Namensgebung geht nicht mir Deinen Angaben konform....



Lad die Db mal hier gezippt hoch (vorher komprimieren/reparieren und auch anmelden)

Wenn möglich , in A2003-Version

swimmingball

Da es sich um eine vertrauliche Datenbank handelt würde ich sie lieber per email verschicken...

MzKlMu

Hallo,
erstelle eine Kopie der Datenbank mit Sieldaten die kannst Du dann hier hochladen. Das ist ja ein Forum und da sollen es alle sehen, das ist ja der Sinn eines Forums.
Gruß Klaus

swimmingball

Das zip ist mit 900 kb zu groß -.-

database

Hallo,

Zitat von: DF6GL am August 07, 2011, 19:14:03

Lad die Db mal hier gezippt hoch (vorher komprimieren/reparieren und auch anmelden)


...bitte auch besonders die Worte innerhalb der Klammern beachten, komprimieren/reparieren wirkt oft Wunder!

Bei 900KB in gezippter Form .... hast du 100 Formulare da drin?

swimmingball

Ich habe es gezippt (von 40 MB gings auf einen) und dann repariert und getestet und sonst was aber an der Größe hats nix geändert...

P.S. 3 Tabllen davon eine mit Inhalt und 2 Formulare

database

Hallo,

was ist den in der einen Tabelle drinnen? Bilder? oder was?

Komprimieren/reparieren  und dann zippen ... hmmmm umgekehrt geht das nicht.

Lösch aus der Version mal die Daten bis auf 5 Datensätze raus und wiederhole dann den Vorgang
Bei 3 Tabellen mit Textinhalten und 2 Formularen alles OHNE Bilder udgl. schätze ich die Größe komprimiert und gezippt auf max 40 KB!

swimmingball

so jetzt hab ich es endlich geschafft hatte das mit dem komprimieren nicht so ganz gecheckt ;)

[Anhang gelöscht durch Administrator]

database

Hallo,

also nach der ersten kurzen Besichtigung .....  :-\ :-\ :'(

Der Tabellenaufbau ist für die Tonne, sorry wenn ich das so hart sage, aber damit kannst du GAR NIX anfangen!  :o

Zitat... aber bei den Namen sollte das kein Problem sein die sind nämlich schon normalisiert ...
Das kommt halt dann auch auf die Sichtweise drauf an - was bitte verstehst du denn unter normalisierten Namen?

Das Problem zieht sich von mehrfach zu speichernden Informationen in unterschiedlichen Tabellen über die Benamsung der Tabellenfelder
(sicher gab es in diesem Forum schon 100-e Male diese Hinweise keine reservierten Worte, keine Umlaute, keine Leer- und Sonderzeichen zu verwenden)
bis hin zu den fehlenden Beziehungen und nicht aufgelösten n:m Beziehungen.
Dass dabei div. Nachschlagetabellen auch von Vorteil wären rundet dann die Sache noch ab.

Warum hast du denn keine Beispieldaten eingetragen - das würde eine Analyse des Datenmodells bzw. dessen was einmal eines werden soll um Einiges erleichtern.

Schildere doch bitte UNBEDINGT mal die Aufgabe der Datenbank - also wozu dient sie, was soll sie leisten, welches Ergebnis soll sie bringen.
Alles in Allem also bitte ein Szenario aus dem abgeleitet werden kann welche Daten benötigt werden und welchen Zweck die DB hat.

Meine obigen durchaus schwer kritischen Bemerkungen bitte jetzt nicht in die falsche Kehle rutschen lassen!

Es hilft nichts, wenn wir, insbesondere Franz, der in diesem Thread schon einiges geschrieben hat, dir eine VBA-Lösung für ein einzelnes klitzekleines Problem liefern
und im Hintegund wackelt das Fundament deiner Applikation so, dass es beim kleinsten Tastendruck zusammenfällt.

Es MÜSSEN als Erstes die Tabellen richtig gestellt und die Beziehungen zwischen den Relationen hergestellt werden
um überhaupt eine funktionierende Datensammlung zu ermöglichen.
Es ist eine gutgemeinte Kritik um dich vor der totalen 'Verfrustung' zu bewahren!  ::)

HTH