So, jetzt habe ich also innerhalb meines Formulars ,,Kundenformular" per Button ein weiteres Formular ,,F_Ansprechpartner" installiert.
Klicke ich auf diesen Button, erhalte ich das genannte Formular, welches mir alle gespeicherten Mitarbeiter des betreffenden Kunden anzeigt.
Nun will ich einen Schritt weitergehen, und hier ein neues Formular aufrufen ,,AnsprechpartnerEinzeln". Das soll so geschehen, dass ich beim Klick auf den Nachnamen eines der für Kunden X gespeicherten Mitarbeiters nun ein Formular erhalte, welches nur Informationen zu diesem betreffenden Mitarbeiter anzeigt.
Also soll ,,AnsprechpartnerEinzeln" quasi ein Unterformular zu ,,F_Ansprechpartner" sein. Auch hier beziehen sich die beiden Formulare auf das Feld ,,ksort"
Ich habe das Ganze so verstanden, dass ich beim Klick auf das Feld ,,Nachname" in ,,F_Ansprechpartner" einen Code benötige, der mich auf die Unterformular ,,AnsprechpartnerEinzeln" führt.
Nur weiß ich eben nicht, wie ich das gestalten muss
Axel
Hallo,
ein Unterformular ist in einem Hauptformular fest eingebettet und nicht eigenständig. Du verwendest also kein Unterformular, sondern ein ganz normales Formular.
Dieses wird genau so geöffnet wie der Bericht in Deinem anderen Thema.
Statt OpenReport ist es dann OpenForm, der Rest ist gleich.
Der Aufruf des "AnsprechpartnerEinzel"-Formulars klappt. Aber wenn ich unter dem Kunden Schmitz 3 Personenhabe, wird bei dem Einzelaufruf nur immer wieder die gleiche Person aufgerufen.
Kannst Du Dir bitte den Code mal anschauen?
Private Sub Nachname_Click()
On Error GoTo Err_Befehl46_Click
Dim stDocName As String
Dim stLinkCriteria As String
stLinkCriteria = "ksort='" & Me.KSort & "'"
stDocName = "AnsprechpartnerEinzel"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Befehl46_Click:
Exit Sub
Err_Befehl46_Click:
MsgBox Err.Description
Resume Exit_Befehl46_Click
End Sub
Irgendwo muss da wohl ein Bug drin sein, odere aber es fehlt noch etwas!
Hallo,
ich denke, der "Bug" sitzt wie so oft vor dem Monitor. ;-)
Wie heißt denn das Datenfeld, das den Ansprechpartner identifiziert?
Dies solltest du im Kriterium verwenden.
Hallo MaggieMae,
das mit dem Bug vor dem Monitor trifft schon zu!!!
Das Datenfeld heisst "Nachname", was ich aber schon im ersten Posting festgehalten hatte.
Hallo,
ZitatKunden Schmitz 3 Personen habe
dann solltest Du über den Primärschlüssel des Kunden als Kriterium verwenden und nicht den Namen direkt. Ich kann mir auch nicht vorstellen, dass ksort auf den Kunden referenziert.
Nein, ich habe in den beiden folgenden Tabellen ,,ksort"
- Kunden
- Ansprechpartner
Bei Kunden ist ksort der Primärschlüssel und in einer Abfrage mit Ansprechpartner.ksort verbunden
Ich komme ja über ,,Kundenformular" zu ,,F_ansprechpartner"
Von dort aus geht es dann weiter zum Formular ,,AnsprechpartnerEinzel"
,,F_ansprechpartner" generiert sich aus der Abfrage ,,"F_Ansprechpartner", die wiederum auf die beiden o.g. Tabellen zugreift.
Kann es daran liegen, dass das Formular ,,AnsprechpartnerEinzel" auf eine Tabelle zurückgreift?
Müsste ich eventuell dafür auch die Abfrage ,,F-Ansprechpartner" als Basis nehmen?
Hallo,
vergleich mal den Code mit dem Code zum Öffnen des Reports?
Warum machst Du das nicht genau so?
Wenn Du dort sinngemäß einfach abschreibst funktioniert es.
Vergleiche mal die beiden Codes, da gibt es außer dem Open Befehl noch weitere Unterschiede.
Und kürzer geht auch. Siehst Du auch in dem Code vom Report öffnen.
Nebenbei, ein Formular sollte als Datenbasis im Regelfall eine Abfrage haben und nie die Tabelle direkt.
Hallo.
Zitat,,F_ansprechpartner" generiert sich aus der Abfrage ,,"F_Ansprechpartner", die wiederum auf die beiden o.g. Tabellen zugreift.
Warum ist das so? Du stellst doch die Kundendaten im HF dar, dann brauchst du im UF doch nur noch die Ansprechpartner. Wozu brauchst du im UF auch noch Kundendaten? HF und UF werden über ksort verknüpft, mehr ist nicht nötig.
ZitatKann es daran liegen, dass das Formular ,,AnsprechpartnerEinzel" auf eine Tabelle zurückgreift?
Ich hatte gehofft, du würdest so langsam von allein drauf kommen...
Um einen einzelnen, konkreten Datensatz anzeigen zu können, musst du das Formular mit dem Primärschlüssel der zugehörigen Tabelle filtern.
Wie dieser heißt solltest du wissen und wie das Kriterium demnach lauten sollte, ist eine logische Konsequenz.
Ich glaube es ja nicht!!! Ich habe es tatsächlich irgendwie hinbekommen, dass mir nun genau der Ansprechpartner angezeigt wird, den ich brauche.
Aber ....
Gehe ich nun mit "Formular schliessen" einen Schritt zurück, dann wird mir in dem nun öffnenden Formular nur der soeben abgerufene Ansprechpartner angezeigt, obwohl ich unter dem Kunden z.B. drei Personen eingetragen habe.
Gehe ich nun noch ein Formular zurück und klicke dann wieder auf Ansprechpartner, sind wieder alle 3 Personen verfügbar.
Any idea?
Hallo,
du musst schon den Code zeigen, der in diesem Zusammenhang zum Einsatz kommt, da wir keine Hellseher sind.
ZitatGehe ich nun mit "Formular schliessen" einen Schritt zurück, dann wird mir in dem nun öffnenden Formular nur der soeben abgerufene Ansprechpartner angezeigt
Wieso wird da ein Formular geöffnet? Nach dem Schließen des Detailformulars sollte das vorherige (u.zw. das Detailformular aufrufende) Formular doch automatisch wieder zur Ansicht kommen.
Ok, habe ich vielleciht falsch ausgedrückt.
Also: ich habe ein Kundenformular, darauf gibt es einen Button, der mich zu den Ansprechpartnern dieses Kunden führt (z.B. 3 Leute). Klicke ich hier nun auf den Nachnamen, öffnet sich ein weiteres Formular, welches mir Informationen nur zu einem (angeklickten) Mitarbeiter gibt. Soweit ist alles ok.
Nun will ich mit "Formular schliessen"
Private Sub Befehl16_Click()
On Error GoTo Err_Befehl16_Click
DoCmd.Close
Exit_Befehl16_Click:
Exit Sub
Err_Befehl16_Click:
MsgBox Err.Description
Resume Exit_Befehl16_Click
End Sub
zurück zu dem vorherigen Formular, welches mir die 3 Mitarbeiter zeigt (zeigen soll). Jetzt wird wird aber nur der eine Mann angezeigt, den ich zuvor aufgerufen hatte. Die beiden anderen sind nicht zu sehen.
So, gehe ich jetzt mit "Formular schliessen" noch einen Schritt zurück zum eigentlichen Kundenformular und klicke hier erneut auf Ansprechpartner, sehe ich wieder alle 3 Leute.
Im Grunde genommen kann ich mit dieser Situation leben, aber perfekt wäre schöner
Einen guten Sonntag an alle
Der Code zum Schließen des Formulars liefert keine neuen Erkenntnisse und warum das aufrufende Formular plötzlich gefiltert angezeigt wird, ist aus den bisherigen Informationen nicht ersichtlich.
Fragwürdig finde ich die Taktik mit den "kaskardierenden" Formularen, die Darstellung über Haupt- und Unterformulare mit Einsatz von Filtern wäre evtl. benutzerfreundlicher.
BTW:
VBA- und SQL-Code bitte stets in Code-Tags einfügen.
Leerzeilen im Code fördern idR nicht die Lesbarkeit desselben.