PDA

Vollständige Version anzeigen : A97 Listenfeld auf Markierung in anderem Listenfeld begrenzen


Harilo
02.06.2003, 10:23
In meiner Db gehören zu einer Person mehrere Adressen und zu einer Adresse mehrere Telefonnummern. In meiner Anzeige schaffe ich zwar, dass die zur aktiven Person zugehörigen Adressen in einer Liste angezeigt werden, aber wenn ich dann eine Adresse anklicke, möchte ich in einer anderen Liste die Telefonnummern der angeklickten Adresse erhalten. Hierfür finde ich einfach keine Lösung. Ich habe die db als Anhang zugefügt. Die Hauptansicht ist das Formular Personen2, die Adressansicht ist im Unterformular Personendaten und hier unter Liste106. Die Telefonnummern sollen in Feld Liste 102 erscheinen.

A.S.
02.06.2003, 10:47
Wie im Dateianhang zu sehen ist, zunächst die Datenquelle für Liste102 von Liste106 abhängig machen und bei erfolgter Auswahl (Nach-Aktualisierung-Ereignis) im Feld Liste106 das Feld Liste102 aktualisieren.

Gruß

Arno

Harilo
02.06.2003, 12:13
Du hast innerhalb von ein paar Minuten mein Problem, an dem ich seit Wochen hänge, zu lösen Vielen Dank.

Für mich bleibt nur noch die Frage offen, wie die Datenquellen abhängig gemacht werden?. Ich habe mir die Eigenschaften angesehen aber nichts gefunden.

Grüße von
Harald

Harilo
02.06.2003, 14:30
Beim Austesten stellte ich fest, dass die Telefonnummern nicht gelöscht werden wenn ein ander Datensatz aufgerufen wird. Das führt natürlich zu Falschanzeigen. Gibt es einen Befehl diese Liste zu löschen wenn ein anderer Datensatz ausgesucht wird?

Harald

A.S.
02.06.2003, 16:29
Hallo Harilo,

die Telefonnummern werden bei jedem Wechseln des Eintrags im Adressfeld neu abgefragt und auch, wenn der Datensatz über das Kombinationsfeld im Hauptformular gewechselt wird.

War jedenfalls hier bei mir (A97) so.

Gruß

Arno

Harilo
02.06.2003, 20:08
Ich benutze auch A97 aber die Telefonnummer wird erst aktualisiert wenn der neue Datensatz eine Adresse hat und diese angeklickt wird. Hat der neue Datensatz keine Adresse oder ist diese neue Adresse noch nicht angeklickt, bleibt die alte Telefonnummer stehen. Leider

Gibt es einen Befehl der die Liste erst löscht?
oder den ersten Datensatz in der Adresse markiert und dadurch die Telefonliste aktualisiert?

Gruß
Harilo

strausto
02.06.2003, 20:21
Versuche es mal mit

Me.liste102.requery

Im Ereignis AfterUpdate von Namensfeld.

Harilo
02.06.2003, 20:34
Hallo Torsten,

habe ich schon versucht führt leider nicht zum Erfolg
Die Telefonnummern werden nur aktualisiert wenn eine neue Adresse angeklickt wird. Ansonsten bleibt solange die alte stehen

Harilo

strausto
02.06.2003, 20:39
Mach das mal an einem Bsp fest. Ich habe Deine DB geöffnet.

Harilo
02.06.2003, 20:50
Also folgendes.
Suche über den Namen mal die Person Harald Löffler.
Es werden zwei Adressen angezeigt. Das Feld Telefon ist leer. Wenn Du jetzt eine Adresse anklickst werden die Telefonnummern jeweils aktualisiert.
Suchst du jetzt den Namen Detlef Lehmann erscheint eine Adresse. Die Telefonnummer bleibt aber immer noch die letzte von Harald Löffler.
Ganz extrem ist es wenn du jetzt die Schmitz raussuchst, die hat keine Adresse. Trotzdem bleibt die Telefonnummer stehen.

strausto
02.06.2003, 21:02
Mein Access hat sich grade verabschiedet! :mad:
Insofern Dir Nouba :cool: nicht helfen wird, nehme ich mich der Sache morgen an!

Nouba
02.06.2003, 21:12
Nouba schaut sich aber zuerst einmal die Tabellen an und braucht noch ein kleines Weilchen.

Nouba
02.06.2003, 21:48
ich kann Dein Problem mit Arnos Variante nicht bestätigen. Es verhält sich bei mir unter AXP im 2K-Modus, wie gewollt. Die Telefonnummern ändern sich mit jedem Wechsel des Datensatzes.

Harilo
02.06.2003, 22:57
Ich habe es jetzt nochmal ausprobiert.
Ich benutze die Variante von Arno. Das benutzte Formular heisst Personen2. Bei mir ist bei der Auswahl einer Person im Adressfeld kein Datensatz markiert. Erst durch anklicken wird die Telefonnummer aktiv und angezeigt. Die Veränderung der Telefonnummer findet nur statt, wenn eine neue Adresse angeklickt wird. Welcher Adressdatensatz wird denn bei dir markiert bei z.B. Harald Löffler?

Nouba
02.06.2003, 23:15
Ich hab's nun gerafft, was Du meinst. füge in die Auswahlabfrage des Unterformulars die [Adr-Adr] mit ein und stelle mal folgendes Kriterium ein. [Forms]![Personen2]![sfrPersonendaten].[Form]![Adr-LfdNr]

Harilo
02.06.2003, 23:25
Welches Unterformular meinst du?
In "Personendaten" Liste106?
und das Feld "[Adr-Adr]" finde ich nicht.

A.S.
03.06.2003, 03:46
Hi Harilo,

im Feld "Liste106" des Unterformulars "Personendaten" bleibt es bei dem Requery auf das Feld "Liste102" im gleichen Unterformular.

Das Ereignis "AfterUpdate" des Feldes "Namensfeld" (Kombinationsfeld) im Hauptformular "Personen2" ergänzt Du vor dem "End Sub" um folgendes:

Me!Personendaten!Liste106 = IIf(Me.Personendaten.Form.Liste106.ListCount > 0, _
Me.Personendaten.Form.Liste106.ItemData(0), Null)
Me!Personendaten!Liste102.Requery

Dadurch wird das Listenfeld für die Adresse im Unterformular immer auf den ersten Eintrag im Listenfeld gebracht, sofern die Liste gefüllt ist und ansonsten das Feld auf "Null" gesetzt. Anschließend wird die Telefonliste aktualisiert.

Gruß

Arno

Harilo
03.06.2003, 10:06
Ein ganz dolles Lob an alle die sich meiner Sache angenommen haben..
Es funktioniert und ich bin happy. Ich hoffe nur, dass auch ich irgendwann einmal so gut sein werde um anderen zu helfen.
Vielen Dank nochmal

Hallo Arno,
deine Hilfe war ein entscheidender Hinweis vielen Dank