Bepalen aantal gebruikers die zijn verbonden met database. Hoe?

Status
Niet open voor verdere reacties.

arnoderuig

Gebruiker
Lid geworden
8 sep 2000
Berichten
577
Ik heb een database bestaande uit een backend en meerdere verschillende frontends. Binnen het systeem kunnen meerdere gebruikers tegelijkertijd de database banaderen.

In de backend staat een tabel die bijhoudt welke gebruiker op welk moment met welke frontend heeft ingelogd en uitgelogd. Voor elke login staat in de tabel één record met velden als gebruiker#, applicatie#, login, loguit. In zowel login als loguit staat een datum met tijdstip.

Mijn bedoeling is nu te achterhalen (binnen bepaalde tijdwindows) hoeveel gebruikers tegelijkertijd met de database waren verbonden over een nog nader te bepalen aantal minuten (bijvoorbeeld 10). Een gebruiker telt dan voor één als deze bijvoorbeeld de volledige periode tussen 16.00 uur en 16.10 uur verbonden is geweest. Hij telt weer voor één als hij ook de periode tussen 16.10 uur en 16.20 verbonden is geweest enzovoorts. Een periode korter dan 10 minuten wordt niet meegeteld. Uiteindelijk wil ik dan zien per tijdwindow hoeveel gebruikers waren ingelogd. De tijdwindows kunnen de gehele dag voorkomen (maximaal dus 24 uur * 6 tijdwindows = 144 windows per dag) en komen uiteraard elke dag voor.

Niet tot de vraagstelling behoort het vervolg dat ik vermeld zodat duidelijk wordt wat ik met de informatie wil. Aan de hand van dit materiaal wil ik een grafiek maken die het aantal gebruikers per tijdwindow van 10 minuten over (eventueel) een reeks van dagen gaat laten zien. De periode waarover de info zichtmaar moet zijn wordt uiteindelijk gekozen in een formulier.

Wie heeft een slimme oplossing voor de te vormen tabel/query?
 
Je zult in ieder geval een tabel moeten hebben met de gewenste tijdblokken. Die zal dus uit 144 records bestaan. Vervolgens maak je een query met je logtabel, en de tabel tijdblokken. Deze koppel je niet aan elkaar; je gaat een Cartesisch produkt maken. Hierbij bepaal je met criteria dat de begin- en eindtijd tussen de bloktijden moeten liggen. Als het goed is, zie je voor elke account net zoveel records als er tijdsblokken zijn. En deze kun je dan weer tellen.
 
Ik heb uiteraard geen zin om 144 records in te kloppen, dus ik doe het wat ruiger, met blokken van een uur. Maar het principe is hopelijk wel duidelijk...
 

Bijlagen

Octafish,

Jammer dat je het niet helemaal voor me afmaakt, ik had nog zo gevraagd om die 10 minuten :D

Geweldig wat je voor me doet. Ik was net bezig een reactie op je eerste mailtje te schrijven dat me al duidelijk maakte dat we eigenlijk dezelfde gedachtengang hadden toen er alweer een vervolgmailtje kwam met je voorbeeld. Fantastisch!

Hier kan ik heel veel mee.

Bedankt,
Arno.
 
Ik ben toch één grote softe zitzak.... Zet dit onder een knop, en de tabel tBloktijden wordt netjes gevuld...

Code:
Dim iPlus As Double, iNext As Date, i As Integer

    ' Eerst de constante uitrekenen
    iPlus = TimeSerial(12, 10, 0) - TimeSerial(12, 0, 0)
    ' Dan de beginvariabelen instellen
    iNext = DateAdd("m", iPlus, iNext)
    ' En vervolgens met een loopje de records aanmaken...
    With CurrentDb.OpenRecordset("tBloktijden")
        For i = 1 To 144
            .AddNew
            !Begintijd = iNext + TimeSerial(0, 1, 0)
            !Eindtijd = iNext + iPlus
            .Update
            iNext = iNext + iPlus
        Next i
        .Close
    End With
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan