Avatar billede dennisa Nybegynder
03. maj 2011 - 09:34 Der er 8 kommentarer og
1 løsning

Gem ProcesTid

Nedenstående beregner hvor lang tid en given kode er om t afvikles fta start til slut.  Hvordan gemmer jeg resultatet i en tabel ?

Public Function Update()
Dim InputVarA, InputVarB
Dim ProcessTid
   
    DoCmd.Hourglass True
       
      InputVarA = Now()
     
      KODE         
           
      InputVarB = Now()
   
    DoCmd.Hourglass False
   
    ProcessTid = Format((InputVarB - InputVarA), "hh:mm:ss")
   
    MsgBox ("Update ended. ProcessTime : " & ProcessTid)
           
End Function
Avatar billede mugs Novice
03. maj 2011 - 09:40 #1
Du har jo beregningen her:

ProcessTid = Format((InputVarB - InputVarA), "hh:mm:ss")

Den mest korrekte måder at foretage en tidsberegning på, er vel at benytte funktionen DateDiff. Opret et felt i tabellen og sæt feltet = variablen procestid og kør evt. en tilføjelsesforespørgsel eller en update..
Avatar billede dennisa Nybegynder
03. maj 2011 - 09:51 #2
Jeg vil gerne at resultatet gemmes i en tabel i databasen, da jeg skal kunne måle performance hos forskellige brugere på forskellige servere
Avatar billede mugs Novice
03. maj 2011 - 09:59 #3
Så kan du oprellte et felt mere (her: FLDopdateretaf)
med brugernavn, som du fanger således:

FLDopdateretaf = Environ("Username")
Avatar billede dennisa Nybegynder
03. maj 2011 - 10:07 #4
Ok, jeg kan se jeg ikke har udtrykt mig helt klart, men jeg har en tabel ( tblProcessTid ) indeholdende :

OpdateringsDate = Default Now()
ProcessTid =

Jeg vil bare have resultatet af beregningen gemt i tabellen
Avatar billede mugs Novice
03. maj 2011 - 11:17 #5
Så kører du blot en tilføjelse:

Insert into....

Ellers har jeg misforsdtået det hele.
Avatar billede dennisa Nybegynder
03. maj 2011 - 13:22 #6
Det er noget af det jeg har forsøgt tidligere, hvor det ikke virkede, men nu virker det af een eller anden årsag !!!
Avatar billede Slettet bruger
03. maj 2011 - 22:51 #7
Et bud på felttypen der kan indeholde hh:mm:ss er tekst - der kunne også være date (tidspunkt - underforstået 30-12-1899)

i function Update()

sql.execute "insert into tblProcessTid(ProcessTid) values('" & processtid & "')"
Avatar billede Slettet bruger
03. maj 2011 - 23:45 #8
Et bedre design er at lave en Processtid klasse:

'===========================
Option Compare Database
Option Explicit

Private start
Private Sub Class_Initialize()
    start = Now()
End Sub
Private Sub Class_Terminate()
    CurrentDb.Execute _
        "insert into tblProcessTid(ProcessTid) " & _
        "values('" & Format(Now() - start, "hh:mm:ss") & "')"
End Sub

'==========================


Og så anvende instantiering de steder der skal tages tid på:

Sub testprocesstid()
    Dim pt As ProcessTid, i, j, a
    Set pt = New ProcessTid
    For i = 1 To 1000: For j = 1 To 10000: a = a + 1 + j: Next: Next
End Sub
Avatar billede mugs Novice
23. juni 2011 - 08:48 #9
Tak for point.
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