Avatar billede malm Nybegynder
17. juli 2002 - 22:59 Der er 2 kommentarer og
1 løsning

Alternativ til Screen.ActiveForm når objektet er en underformular

Jeg har en log-rutine LogMe:

Public Function LogMe(Obj As Form)

    Dim logObject As Form
    Dim ctl As Control
    Dim dbs As Database
    Dim rec As Recordset
   
    Set logObject = Obj
   
    sObjectName = logObject.Name
   
    Set dbs = CurrentDb
   
    Set rec = dbs.OpenRecordset("tblLogData", dbOpenDynaset)
   
    For Each ctl In logObject.Controls
       
        If (ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox) Then
           
            If IsDate(Mid(ctl.Tag, 1, 8)) Then
                Debug.Print sObjectName, ctl.Name, ctl.Tag
               
                With rec
                    .AddNew
                    ![sForm] = sObjectName
                    ![sCtl] = ctl.Name
                    ![sUser] = sGlobalUser()
                    ![sLog] = ctl.Tag
                    ![sDate] = Mid(ctl.Tag, 1, 8)
                    .Update
                End With
            End If
        End If
       
        ctl.Tag = " "
  Next ctl
End Function

der gennemløber alle controls på en form for at logge ændringer foretaget. LogMe kaldes når brugeren trykker på en Ok knap.

Public Sub globalOkClose()

    Dim Obj As Form
   
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

    Set Obj = Screen.ActiveForm
   
    Call LogMe(Obj)
   
    DoCmd.Close
       
End Sub

Problemet er bare at når data ændres i en subform kan jeg ikke længere anvende Screen.ActiveForm da denne peger på hovedformularen frem for subformularen.

Hvad gør jeg for at retunere en objektet til subformularen istedet?


Mvh
Malm
Avatar billede nih Novice
17. juli 2002 - 23:18 #1
Set Obj = Me.navnPåSubForm.Form

hvor navnPåSubForm er det navn der er i egenskabsarket og IKKE nødvendigvis navnet på formen.

Niels
Avatar billede nih Novice
17. juli 2002 - 23:25 #2
Hvis knappen er på underformularen kan du jo bare bruge 'me'

  Set Obj = me


eller kalde din function sådan: Call LogMe(me)

Niels
Avatar billede malm Nybegynder
18. juli 2002 - 12:01 #3
Tja det har du ret i Niels :-)

Jeg havde ellers prøvet med Me tidligere til at retunere hovedform objektet men det ville ikke udmildbart virke. Derfor gik jeg over til at anvende Set Obj = Screen.ActiveForm. Nå men det virker ihverttilfælde :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester