Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Wie rufe ich ein UFo aus einem Hauptformular auf?

Begonnen von Axel18, Oktober 02, 2014, 08:38:25

⏪ vorheriges - nächstes ⏩

Axel18

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

Beste Grüße
Axel

MzKlMu

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.
Gruß Klaus

Axel18

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!
Beste Grüße
Axel

MaggieMay

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.
Freundliche Grüße
MaggieMay

Axel18

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.
Beste Grüße
Axel

MzKlMu

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.
Gruß Klaus

Axel18

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?


Beste Grüße
Axel

MzKlMu

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.
Gruß Klaus

MaggieMay

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.
Freundliche Grüße
MaggieMay

Axel18

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?
Beste Grüße
Axel

MaggieMay

#10
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.
Freundliche Grüße
MaggieMay

Axel18

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

Beste Grüße
Axel

MaggieMay

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.
Freundliche Grüße
MaggieMay