none
Form_Current-Event in Unterformularen

    Frage

  • Hallo Forum,

    (Access 2003)

    ich habe ein Unterformular, in welchem ich bei jedem Satzwechsel (innerhalb des Unterformulars) ein individuelles Coding durchlaufen möchte.

    Leider wird das Form_Current-Event nur gefeuert, wenn sich der lfd. Satz des Hauptformulars wechselt.

    Wie kann ich mein Problem lösen? (gibt es evtl. bei Unterformularen einen anderen / weiteren Event?)

    Besten Dank vorab.

    Ciao, Alberto

    Sonntag, 17. Oktober 2010 13:33

Antworten

  • Hallo,

    Alberto Luca wrote:

    ich habe nun mein Problem in einer eigenen Beispiel-mdb reproduziert und
    es wird in der Tat nur 1 x das Current-Ereignis im Unterformular
    aufgerufen, obwohl x Sätze vorhanden sind.

    Nur zur Klarstellung: Form_Current wird beim Datensatzwechsel
    einschliesslich Anzeige des ersten DS ausgeloest. D.h. einmal beim Oeffnen,
    und danach beim DS-Wechsel im HF genau einmal.

    Wenn du anschliessend durch die Zeilen des UFo navigierst, wird es einmal
    pro DS ausgefuehrt.

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), weiß aber
    nicht wie!

    Ist wohl nicht notwendig, s.o.

    Falls ich im UFo kein passendes Event zu fassen bekomme, werde ich
    deiner Empfehlung folgen, und diese (ungebundenen) Felder in meine
    Abfrage einbauen.

    Wenn du es unbedingt im Formular machen willst, mach es von Form_Current
    des HF aus. Wie man Bezuege zum UFo herstellt, findest du unter
    http://www.donkarl.com?FAQ4.2 , aber ich wuerde dir dringend nahelegen, es
    von wo auch immer, aber per SQL zu erledigen.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Montag, 18. Oktober 2010 20:11
    Moderator

Alle Antworten

  • Hallo,

    Alberto Luca wrote:

    ich habe ein Unterformular, in welchem ich bei jedem Satzwechsel
    (innerhalb des Unterformulars) ein individuelles Coding durchlaufen
    möchte.

    Leider wird das Form_Current-Event nur gefeuert, wenn sich der lfd. Satz
    des Hauptformulars wechselt.

    Nein, Form_Current wird fuer das (Unter-)Formular ausgefuehrt, in dem der
    DS wechselt. Wenn du durch die Rows des UFo navigierst, wird Form_Current
    da auch ausgefuehrt.

    Kannst du das Problem ein bisserl genauer beschreiben, evtl. mit
    Codebeispielen.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Sonntag, 17. Oktober 2010 13:37
    Moderator
  • Hallo Peter,

    besten Dank für die schnelle Antwort.

    Im Hauptformular zeige ich z.b. den Kunden an, im Unterformular die Ansprechpartner des Kunden.

    Ein Kunde hat in der Regel 5-20 Ansprechpartner.

    Im Unterformular der Ansprechpartner wird nur beim Wechsel des Kunden das Current-Event gerufen, nicht jedoch bei jedem Ansprechspartnur zum Kunden (also nur 1 x, obwohl viele Ansprechpartner angezeigt werden).

    Mittels Debug.Print habe ich dies verifiziert.

    Ciao, Alberto

    Sonntag, 17. Oktober 2010 14:07
  • Hallo,

    Alberto Luca wrote:

    Im Unterformular der Ansprechpartner wird nur beim Wechsel des Kunden
    das Current-Event gerufen, nicht jedoch bei jedem Ansprechspartnur zum
    Kunden (also nur 1 x, obwohl viele Ansprechpartner angezeigt werden).

    Was machst du in Form_Current des UFos?

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Sonntag, 17. Oktober 2010 14:27
    Moderator
  • Hallo Peter,

    u.s. Coding, wobei ich noch folgendes anmerken muss:

    in allen Einzelzeilen des Unterformulars steht der identische Inhalt (passend zum 1. Vorkommen):


    Private Sub Form_Current()
        Debug.Print "Form_Current " & Me.BiGNummer & "; " & Now()
        '--- Zusatzinfos anzeigen
        Me.funShowCOBiGNr
    End Sub


    Public Function funShowCOBiGNr() As Boolean
    '*************************************************************************
    ' funShowCOBiGNr: Ermitteln / Anzeigen Cooperation-BiGNr-Daten
    '----------------------------------------------------------
    ' Übergabe:     -
    ' Rückgabe:
    '               -True:   Verarbeitung ok
    '               -False:  Verarbeitung fehlerhaft
    ' -----------------------------
    '
    '************************************************************************
    Const lc_MsgTitle = "funShowCOBiGNr"
    Dim lstrMsg As String
    Dim lstrSQL As String
    Dim lrstBiGKd As DAO.Recordset
        
        '--- Initialisierung
        funShowCOBiGNr = False
        On Error GoTo funShowCOBiGNr_Err
        
        '--- Form-Felder löschen
        Me.txtCOBiGNr_trixiNr = ""
        Me.txtCOBiGNr_EMail = ""
        
        '--- Ermitteln COBiGNr
        If Not IsNull(Me.COBiGNr) Then   'COBiGNr belegt
            lstrSQL = "SELECT * FROM Q_BiGKd " _
                    & "WHERE BIGNr = " & CStr(Me.COBiGNr) & ";"
            
            Set lrstBiGKd = CurrentDb.OpenRecordset(lstrSQL)
            
            If Not lrstBiGKd.EOF Then
                Me.txtCOBiGNr_trixiNr = lrstBiGKd.Fields("[Knd-Nr]")
                Me.txtCOBiGNr_EMail = Me.BiGNummer & "/" & Me.COBiGNr & "/" & Me.txtCOBiGNr_trixiNr
            End If
        End If  'COBiGNr belegt
        
        
        funShowCOBiGNr = True

    funShowCOBiGNr_End:
        Set lrstBiGKd = Nothing
        On Error GoTo 0 'Fehlerhandling zurücksetzen
        Exit Function


    funShowCOBiGNr_Err:
        lstrMsg = "funShowCOBiGNr_Err: " & vbCrLf & Err.Number & ": " & Err.Description
        MsgBox lstrMsg, vbOKOnly + vbCritical, lc_MsgTitle
        Resume funShowCOBiGNr_End

    End Function

    Ciao, Alberto

    Sonntag, 17. Oktober 2010 14:37
  • Hallo,

    Alberto Luca wrote:

    u.s. Coding, wobei ich noch folgendes anmerken muss:

    in allen Einzelzeilen des Unterformulars steht der identische Inhalt
    (passend zum 1. Vorkommen):

    ?

    Ist das UFo gebunden? Haben alle Felder, die den gleichen Inhalt anzeigen,
    einen Steuerelementinhalt?
    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Sonntag, 17. Oktober 2010 15:20
    Moderator
  • Hallo Peter,

    besten Dank dass du "dran" bleibst.

    Das UFo ist gebunden (verknüpft).

    Im UFo gibt es 2 Felder (txtCOBiGNr_trixiNr, txtCOBiGNr_EMail), welche nicht gebunden sind.

    Diese Felder möchte ich per Code füllen.

    Diese Felder sind leer, wenn der 1. Satz im UFo im Feld COBiGNr leer ist,

    jedoch für alle Sätze im UFo gefüllt, falls der 1. Satz im Feld COBiGNr belegt ist.

    =>    If Not IsNull(Me.COBiGNr) Then   'COBiGNr belegt

    Das deckt sich auch mit den Debug-Infos.

    Ciao, Alberto

    Sonntag, 17. Oktober 2010 15:40
  • Hallo,

    Alberto Luca wrote:

    Das UFo ist gebunden (verknüpft).

    Gebunden an eine Datenherkunft? Wie sieht die aus, und wie die des HF?
    Ueber welches Feld sind die HF/UF verknuepft?

    Im UFo gibt es 2 Felder (txtCOBiGNr_trixiNr, txtCOBiGNr_EMail), welche
    nicht gebunden sind. Diese Felder möchte ich per Code füllen.

    Und zu welchem Zweck fuellst du die Felder, wenn sie nicht gebunden sind,
    also keinen Steuerelementinhalt haben?

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Sonntag, 17. Oktober 2010 16:13
    Moderator
  • Hallo Peter,

    das UFo ist an eine SQL-Query gebunden.

    HF und UFo sind verknüpft (Verknüften von ... Verknüpfen nach ...).

    Die beiden ungebundenen Felder möche ich per Code füllen, da Me.COBiGNr nur sehr selten gefüllt ist

    und die Ermittlung der Daten per SQL-Abfrage sehr komplex und performance-aufwändig sein würde.

    Ciao, Alberto

     

    Sonntag, 17. Oktober 2010 17:06
  • Hallo,

    Alberto Luca wrote:

    das UFo ist an eine SQL-Query gebunden. HF und UFo sind verknüpft
    (Verknüften von ... Verknüpfen nach ...). Die beiden ungebundenen Felder
    möche ich per Code füllen, da Me.COBiGNr nur sehr selten gefüllt ist und
    die Ermittlung der Daten per SQL-Abfrage sehr komplex und
    performance-aufwändig sein würde.

    Letzteres halte ich trotz allem fuer den richtigen Weg. Wie komplex das
    ganze wuerde, kann man ohne bessere Informationen nicht sagen.

    Das was du weiter oben per Code machst, koennte per SQL so aussehen:

    UPDATE DeineTab AS T1 INNER JOIN Q_BiGKd AS T2 ON T1.COBiGNr=T2.BIGNr
    SET T1.COBiGNr_trixiNr = T2.[Knd-Nr],
        T1.COBiGNr_EMail   = T1.BiGNummer & "/" & T1.COBiGNr & "/" & _
        T2.[Knd-Nr]
    WHERE T1.COBiGNr_trixiNr Is Null

    Wenn du die RecordSource der beiden Formulare preisgibst, kann man DeineTab
    und die Felder mit richtigen Informationen fuellen.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    • Als Antwort markiert Alberto Luca Montag, 18. Oktober 2010 19:45
    • Tag als Antwort aufgehoben Alberto Luca Montag, 18. Oktober 2010 19:45
    Sonntag, 17. Oktober 2010 23:49
    Moderator
  • Hallo Peter,

    ich habe nun mein Problem in einer eigenen Beispiel-mdb reproduziert und es wird in der Tat nur 1 x das Current-Ereignis im Unterformular aufgerufen, obwohl x Sätze vorhanden sind.

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), weiß aber nicht wie!

    Falls ich im UFo kein passendes Event zu fassen bekomme, werde ich deiner Empfehlung folgen, und diese (ungebundenen) Felder in meine Abfrage einbauen.

    Besten Dank!

    Ciao, Alberto

    Montag, 18. Oktober 2010 19:54
  • Am 18.10.2010 schrieb Alberto Luca:

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), weiß aber nicht wie!

    http://www.file-upload.net/ uploaden und den Link hier posten.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Montag, 18. Oktober 2010 20:05
  • Hallo,

    Alberto Luca wrote:

    ich habe nun mein Problem in einer eigenen Beispiel-mdb reproduziert und
    es wird in der Tat nur 1 x das Current-Ereignis im Unterformular
    aufgerufen, obwohl x Sätze vorhanden sind.

    Nur zur Klarstellung: Form_Current wird beim Datensatzwechsel
    einschliesslich Anzeige des ersten DS ausgeloest. D.h. einmal beim Oeffnen,
    und danach beim DS-Wechsel im HF genau einmal.

    Wenn du anschliessend durch die Zeilen des UFo navigierst, wird es einmal
    pro DS ausgefuehrt.

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), weiß aber
    nicht wie!

    Ist wohl nicht notwendig, s.o.

    Falls ich im UFo kein passendes Event zu fassen bekomme, werde ich
    deiner Empfehlung folgen, und diese (ungebundenen) Felder in meine
    Abfrage einbauen.

    Wenn du es unbedingt im Formular machen willst, mach es von Form_Current
    des HF aus. Wie man Bezuege zum UFo herstellt, findest du unter
    http://www.donkarl.com?FAQ4.2 , aber ich wuerde dir dringend nahelegen, es
    von wo auch immer, aber per SQL zu erledigen.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Montag, 18. Oktober 2010 20:11
    Moderator
  • Winfried Sonntag [MVP] wrote:

    Am 18.10.2010 schrieb Alberto Luca:

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), ...

    http://www.file-upload.net/

    ... oder http://skydrive.live.com/.

    ... und den Link hier posten.

    Genau ;-)

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Montag, 18. Oktober 2010 20:13
    Moderator
  • Am 18.10.2010 schrieb Peter Doering [MVP]:

    Winfried Sonntag [MVP] wrote:

    Am 18.10.2010 schrieb Alberto Luca:

    Ich würde gern diese Beispiel-DB hochladen (als zip-Datei), ...

    http://www.file-upload.net/

    ... oder http://skydrive.live.com/.

    Wenn das jemand noch nie gemacht, ist das mit File-Upload.net
    wesentlich einfacher. ;)

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Montag, 18. Oktober 2010 20:30
  • Hallo Peter und Winfried,

    besten Dank für eure Unterstützung.

    Anbei Link zu mdb mit UFo (wg. Current-Event):

    http://www.file-upload.net/download-2908476/Unterformular.mdb.html

    Besten Dank!

    Ciao, Alberto

     


    Ciao, Alberto
    Donnerstag, 21. Oktober 2010 18:24