PDA

Vollständige Version anzeigen : 2 Unterformulare, gleicher datensatz


fleedwood
16.06.2001, 09:07
Hallo und guten Morgen,

ich habe in einem Formular 2 Unterformulare eingebunden und möchte das, sobald ich einen datnsatz im Formular1 auswähle, mir die Detaildaten im Formular2 angezeigt werden.
Wie schaffe ich das?

1000 dank

fleedwood
16.06.2001, 09:14
wenn ich

Forms!Statusberechnung.RecordsetClone.FindFirst "Nummer = " & Me!Nummer
Forms!Formular2.Bookmark = Forms!Formular2.RecordsetClone.Bookmark

eingebe erzählt er mir immer das er das Formular2 nicht finden kann

A.S.
16.06.2001, 09:35
Hallo Fleedwood,

in welchem Formular suchst Du den Datensatz? Hauptformular, 1. Unterformular (UFo) oder 2. UFo?

Arno

fleedwood
16.06.2001, 09:47
Hi Arno,

ich lasse mir durch einen Bezug im Unterformular1 Daten zu Datensätzen aus dem Hauptformular anzeigen. Grund: Im hauptformular wird das Projekt angezeigt, im U-Formular1 die einzelnen Kandidaten für dieses Projekt und im U-Formular2 sollen dann die Details zu dem jeweils aktivierten Kandidaten aus dem U-Formular1 angezeigt werden.

Danke schon einmal

A.S.
16.06.2001, 09:56
Also löst Du das ganze im Ereignis "Beim Anzeigen (Form_Current)" des Unterformulares aus, wenn ich Dich recht verstehe?

fleedwood
16.06.2001, 09:57
genau so ist es arno :-)

A.S.
16.06.2001, 10:03
Forms!HauptFormular!Formular2.RecordsetClone.Findfirst "[Nummer]=" & Me!Nummer
Forms!HauptFormular!Formular2.BookMark = Forms!HauptFormular!Formular2.RecordsetClone.Bookmark

dürfte dann das sein, was Du suchst.

Deine Methode ist in diesem Fall für das zweite Unterformular nicht anzuwenden - ganz abgesehen von der falschen Formularpfadangabe (Unterformulare sind immer über das Hauptformular zu referenzieren) -, weil man immer den Bookmark in dem RecordSet bzw. -Clone suchen soll, dessen Daten man anzeigen will. Wenn Du in einem anderen Recordset suchst bzw. den Bookmark bildest und diesen dann auf den zu benutzenden Recordset überträgst, kann es sein das Du ganz andere Daten angezeigt bekommst als Du eigentlich haben möchtest.

Gruß

Arno

fleedwood
16.06.2001, 10:14
arno, wenn ein mädel wärst würde ich dich knutschen ;-)

1000dank

karsten

GustavKurz
16.06.2001, 10:22
Hallo, Fleedwood!
Es gibt noch eine weitere Möglichkeit, wie Sie in der "Beispiel.mdb" von Micrisoft beschrieben (Acc97) beschrieben wird.

Dort wird in einem ungebundenen Textfeld im Hauptform der Aktuelle datensatz des Ersten Hauptformulars übergeben... Steuerelementinhalt :(=[Unterformular1]![ID]
...und Anschließend das Zweite UForm mit dem ungebundenen Textfeld verknüpft. (klappt bei mir prima) :-))

Gruß
Gustav Kurz

GustavKurz
16.06.2001, 10:26
Sorry, Ich meinte natürlich - Die ID des aktuellen Datensatzes des ersten Unterformulars übergeben!
Gustav

A.S.
16.06.2001, 10:38
Hallo Gustav,

was wiederrum ein Forms!HauptFormular.Refresh oder Requery im Form_Current-Ereignis des ersten Unterformulars bedingt, damit der Inhalt des ungebundenen Textfeldes im Hauptformular auf den Inhalt des 1. UFo's gesetzt und ein Requery auf das 2. UFo ausgelöst wird.

Gruß

Arno

PS Was eine etwas flackernde Bildschirmdarstellung zur Folge hat. Da verwende ich persönlich schon lieber die Darstellung via Bookmark.

GustavKurz
16.06.2001, 12:14
Hmm??!!
Seit wann braucht man denn ein Requery, um in einem Formular Aktualisierungen zwischen Formularsteuerelementen vorzunehmen?
Da ich noch mit Acc 97 arbeite, muß das ja von MS ganz neu sein, oder?
Jedenfalls ist es in Acc 97 so, das Unterformulare immer Primär Steuerelemente des Hauptformulars sind (und erst dann eigenständige Objekte)
Muß man denn in Acc2000 auch schon ein Requery vornehmen, wenn man im Hauptform ein Ungebundenes Textfeld "Gesamtpreis" hat (Steuerelementinhalt: = Einzelpreis*Menge) und sich der Inhalt eines der Felder "Einzelpreis" bzw. "Menge" ändert??:-(( - na dann Gute Nacht!
Gruß
*Deprimiert sei* Gustav Kurz

A.S.
16.06.2001, 13:04
Hallo Gustav,

ob man in A00 ein entsprechendes Requery vornehmen muß, weiß ich nicht. Jedenfalls habe ich die von Dir angesprochene Technik bereits bei mehreren gelegenheiten vorgefunden und (leider) weiternutzen dürfen. Das Ergebnis war jedesmal (A97) so, das sich das ungebundene Textfeld im Hauptformular nicht selbst auf den Wert im UFo1 eingestellt hat. Ergo: aus dem Form_Current-Ereignis des 1. UFo's (denn um das geht es in diesem Thread) ein Refresh bzw. Requery auf's HF auslösen, damit sich das Formular insgesamt synchronisiert.

Gruß

Arno

GustavKurz
16.06.2001, 13:49
Hallo, Arno!
Ich habe mich jetzt mal wegen der Requery Geschichte schlau gemacht (bei einem Bekannten, der Info studiert hat und derzeit bei Siemens für die Datenbankadministration FrontEnd zuständig ist).

Es gilt für alle Access Versionen:

1.Ein UFO ist ein Steuerelement des Hauptforms.

2.Man braucht keinerlei Requerys um bei Änderung eines Wertes eines Steuerelementes des Hauptforms die in Abhängigkeit stehenden Steuerelemente zu Aktualisieren.

3.Bestes Beispiel: Ein ungebundenes Textfeld "Gesamtpreis" = Einzelpreis*Anzahl zeigt immer das Aktuelle Ergebniss der Berechnung an, auch bei einer ungespeicherten Änderung eines der Felder "Einzelpreis", oder "Anzahl" :-))))

4.Demzufolge wird auch immer der Wert des aktuellen Datensatzes im Ersten Unterform sofort an das Hauptform übergeben und danach das Zweite Unterform (weil ja auch ein Steuerelement des Hauptforms), das in Abhängigkeit zum Ungebundenen Textfeld steht, gefiltert.

Ich hoffe, das stimmt auch alles, was er mir gesagt hat (jedenfalls deckt sich das mit meinen Erfahrungen) - denn sonst blamier ich hier mich bis auf die Knochen - und das nach 7 Jahren Access!

Viele Grüsse
Gustav

A.S.
16.06.2001, 15:26
Hallo Gustav,

was Dein Freund da ausführt ist ja schön und gut. Nur ist an Acc soviel Einstellungsabhängig, warum nicht auch das? Ich habe bei verschiedenen Gelegenheiten in der Vergangenheit gegenteilige Erfahrungen gemacht.

Gruß

Arno

fleedwood
17.06.2001, 18:48
hi,

ich wollte euch beiden kurz danke sagen. es funktionieren augenscheinlich beide möglichkeiten, verwendet habe ich die von gustav da sie mir augenscheinlich einfacher erschien.

danke