Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:33 Der er 27 kommentarer og
2 løsninger

Fejl (VBA)

Når jeg kører nedenstående kode, som jeg har fået fra en anden hjælper her på eksperten.....

Public Function MemberOfGroup(GroupToCheck As String) As Boolean
    Dim wspWorkspace As Workspace
    Dim grpGroup As Group
    Dim usrUsers As User
   
    MemberOfGroup = False    'Default for the function is false.
   
    Set wspWorkspace = DBEngine.Workspaces(0)
    Set grpGroup = wspWorkspace.Groups(GroupToCheck)
   
    For Each usrUsers In grpGroup.Users
        If usrUsers.Name = gstrCurrentUser Then
            MemberOfGroup = True
            Exit Function
        End If
    Next usrUsers

End Function

Private Sub Kommandoknap1_Click()
  If MemberOfGroup("Administratorer") Then
    MsgBox "Du er medlem af gruppen Administrators"
  Else
    MsgBox "Du er ikke medlem af gruppen Administrators"
  End If
End Sub

....får jeg følgende fejl:
Elementet blev ikke fundet i denne samling.

Og i debuggeren er det følgende linie der bliver highlighted:
Set grpGroup = wspWorkspace.Groups(GroupToCheck)

Any ideas?
Avatar billede proaccess Nybegynder
19. februar 2002 - 10:37 #1
Hedder din gruppe Administratorer ?

Skal det ikke være:

Private Sub Kommandoknap1_Click()
  If MemberOfGroup("Administrators") Then
    MsgBox "Du er medlem af gruppen Administrators"
Avatar billede terry Ekspert
19. februar 2002 - 10:38 #2
do you have a refrence to DAO?
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:39 #3
Well, i Funktioner -> Sikkerhed -> Bruger-og gruppekonti, står der "Administratorer" som gruppe....prøver lige den anden du foreslog....
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:41 #4
Nope, virker stadig ikke, proaccess, samme fejl.
Ved ikke om dette kan hjælpe til at finde fejlen, men når jeg i funktionen direkte indtaster et 0, 1 eller 2, kommer der ingen fejl. (jeg har 3 forskellige grupper i databasen)
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:41 #5
DAO? Checker lige....
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:42 #6
Ja, terry, DAO 3.51....skal jeg sætte kryds i DAO 3.6 også? (eller i stedet?)
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:43 #7
Det hjalp ikke, terry...
Avatar billede proaccess Nybegynder
19. februar 2002 - 10:44 #8
.Groups vil have et index... det du giver er en streng, så dér ligger fejlen!
Avatar billede terry Ekspert
19. februar 2002 - 10:45 #9
Try 3.6 although I dont think it is going to make any difference.
3.51 is for Access 97 and 3.6 2000 (Jet 4)
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:46 #10
Det er så også i orden.........det får det da bare, sagen er bare den at jeg ikke ved hvilket index Administratorer har, hvilket ikke er det største problem, da der kun er 3 grupper......men ligegyldigt om jeg prøver med tallet 0, 1 eller 2 er det kun "else" delen der bliver afviklet:
"Du er ikke medlem af gruppen Administrators"
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:47 #11
Tnx, terry, but it didn't help........as proaccess explained, Groups expects an index and I'm passing it a string....
Avatar billede terry Ekspert
19. februar 2002 - 10:49 #12
have you a reference to ADO also?
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:53 #13
Yes.....

Her er min kode:

Public Function MemberOfGroup(GroupToCheck As Integer) As Boolean
    Dim wspWorkspace As Workspace
    Dim grpGroup As Group
    Dim usrUsers As User
   
    MemberOfGroup = False    'Default for the function is false.
   
    Set wspWorkspace = DBEngine.Workspaces(0)
    Set grpGroup = wspWorkspace.Groups(GroupToCheck)
   
    For Each usrUsers In grpGroup.Users
        If usrUsers.Name = gstrCurrentUser Then
            MemberOfGroup = True
            Exit Function
        End If
    Next usrUsers

End Function

Private Sub Kommandoknap1_Click()
  If MemberOfGroup(0) Then
    MsgBox "Du er medlem af gruppen Administrators"
  Else
    MsgBox "Du er ikke medlem af gruppen Administrators"
  End If
End Sub
Avatar billede proaccess Nybegynder
19. februar 2002 - 10:54 #14
PRØV MED FØLGENDE:

Public Function MemberOfGroup(GroupToCheck As String) As Boolean
    Dim wspWorkspace As Workspace
    Dim grpGroup As Group
    Dim usrUsers As User
    Dim grpIndex As New Group
   
    MemberOfGroup = False    'Default for the function is false.
   
    Set wspWorkspace = DBEngine.Workspaces(0)
    For Each grpGroup In wspWorkspace.Groups
      If grpGroup.Name = GroupToCheck Then
        For Each usrUsers In grpGroup.Users
          If usrUsers.Name = gstrCurrentUser Then
            MemberOfGroup = True
            Exit Function
          End If
        Next usrUsers
      End If
    Next

End Function

Private Sub Kommandoknap1_Click()
  If MemberOfGroup("Administratorer") Then
    MsgBox "Du er medlem af gruppen Administrators"
  Else
    MsgBox "Du er ikke medlem af gruppen Administrators"
  End If
End Sub
Avatar billede terry Ekspert
19. februar 2002 - 10:54 #15
As far as I can see (Jet programmers guide) you can use the group name, therefore the code looks OK to me, but then I am in need of glasses :o)
Avatar billede proaccess Nybegynder
19. februar 2002 - 10:55 #16
Drop:
  Dim grpIndex As New Group

Det var bare en test... (som gik galt)
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 10:57 #17
Ok, pro.....puha, sikke noget værre noget, det hersens Access..... :(
Avatar billede proaccess Nybegynder
19. februar 2002 - 10:57 #18
>Terry: You should be right... (as it says too the online-help)

Perhaps it IS a question about spelling the right groupname...
Avatar billede terry Ekspert
19. februar 2002 - 10:59 #19
You can try looping through the group collection and printing them out. In acces you can also print Groups/users from the menu User and Group Accounts in Tools+Security (Access 97)
Avatar billede proaccess Nybegynder
19. februar 2002 - 11:02 #20
Access kender ikke til dansk på dette felt!!!

GruppeNavn:  Admins
Bruger: Admin
Avatar billede proaccess Nybegynder
19. februar 2002 - 11:02 #21
Private Sub Kommandoknap1_Click()
  If MemberOfGroup("Admins") Then
    MsgBox "Du er medlem af gruppen Administrators"
  Else
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 11:08 #22
proaccess, omtrent samtidig som du skrev ovenstående, kom jeg selv på det samme......har dog prøvet, uden held
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 11:09 #23
Private Sub Kommandoknap1_Click()
  If MemberOfGroup("Admins") Then
    MsgBox "Du er medlem af gruppen Administrators"
  Else
    MsgBox "Du er ikke medlem af gruppen Administrators"
  End If
End Sub

Public Function MemberOfGroup(GroupToCheck As String) As Boolean
    Dim wspWorkspace As Workspace
    Dim grpGroup As Group
    Dim usrUsers As User
   
    MemberOfGroup = False    'Default for the function is false.
   
    Set wspWorkspace = DBEngine.Workspaces(0)
    Set grpGroup = wspWorkspace.Groups(GroupToCheck)
   
    For Each usrUsers In grpGroup.Users
        If usrUsers.Name = gstrCurrentUser Then
            MemberOfGroup = True
            Exit Function
        End If
    Next usrUsers

End Function
Avatar billede terry Ekspert
19. februar 2002 - 11:10 #24
have you tried printing your groups/users out?
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 11:11 #25
Sorry, virker nu!!!! Hvor dumt!
If usrUsers.Name = gstrCurrentUser Then
Skal jo selvfølgelig være:
If usrUsers.Name = CurrentUser Then
!!!!!!!!!!!!!!!!!! ARRRRGGHHH!!!! :(
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 11:12 #26
Thanks for your help, the both of you.
Avatar billede terry Ekspert
19. februar 2002 - 11:12 #27
thanks :o)
Avatar billede proaccess Nybegynder
19. februar 2002 - 11:13 #28
Hård nød at knække... ;-)
Avatar billede puppetmaster Nybegynder
19. februar 2002 - 11:29 #29
Yep! ;)
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