Avatar billede Slettet bruger
04. juli 2006 - 11:19 Der er 13 kommentarer og
1 løsning

Makro kørsler / VBA

Jeg har en tabel kaldet Kørsler. I denne tabel er der 4 kolonner:

1) Programnr (et 4 cifret id nr.)
2) Starttid
3) Sluttid
4) Makronavn (dette er Access makro'er)

Jeg har så fremfundet nedenstående VBA kode. Jeg har så lavet en formular der fortløbende viser samtlige post, problemet er så bare at koden kun fungere når den pågældende post er i fokus på starttidspunktet. Hvordan kan jeg få den til at tjekke om der er andre "makroer" der skal køre?

Private Sub Form_Timer()
Dim StartTimeA As Date
Dim StopTimeA As Date

'A-Gruppen
    StartTimeA = Me!Starttid
    StopTimeA = Me!Sluttid
   
    If Time >= StartTimeA And Time < StopTimeA Then
        ' Run macro.
        Debug.Print "Run Macro..."
        DoCmd.RunMacro (Me!Makronavn)
    Else
        'Don't run macro.
        Debug.Print "Don't run Macro..."
    End If
   
End Sub
Avatar billede Slettet bruger
04. juli 2006 - 11:35 #1
Du er vel nød til at loope dig igennem alle poster!~)
Avatar billede terry Ekspert
04. juli 2006 - 11:38 #2
Do you want to run the macro from ALL records? If so then you need to run through all records on the form.
Avatar billede Slettet bruger
04. juli 2006 - 11:40 #3
Ja, man skal vel setfocus until EOF...
Avatar billede Slettet bruger
04. juli 2006 - 11:42 #4
Det kan godt risikere at blive en ordentlig mundfuld!~)
Avatar billede terry Ekspert
04. juli 2006 - 11:52 #5
In the forms On Load Event you can loop through thr records like this.

Dim r As DAO.Recordset

Set r = Me.Recordset


Do Until r.EOF

'Do waht ever you want for each record
r.MoveNext
Loop
Avatar billede terry Ekspert
04. juli 2006 - 11:52 #6
an dyou will need a reference to DAO
Avatar billede Slettet bruger
04. juli 2006 - 11:55 #7
Det skal på timeren..
Avatar billede terry Ekspert
04. juli 2006 - 11:57 #8
Yes of course spg (it hot here in Vejle :o) )
Avatar billede Slettet bruger
04. juli 2006 - 11:58 #9
Det er jo også sydpå!~)
Avatar billede terry Ekspert
04. juli 2006 - 11:59 #10
but why do you need to run a macro for all records in a timer event?
Avatar billede Slettet bruger
04. juli 2006 - 11:59 #11
Ja, hvad skal den macro...
Avatar billede Slettet bruger
04. juli 2006 - 12:26 #12
Det er bliver på et tidspunkt til mange forskellige forspørgelser og forsendelser. Samt for at holde styr på hvad der køre hvornår. Grunden til jeg har oprettet tablen var for at skabe et bedre overblik istedet for at have en 10 km lang VBA kode og for at det var nemmere at rette, slette og tilføje kørsler.

Jeg har løst problemet ved at lave en ekstra kolonne der hedder findtid. Her skriver jeg det tidspunkt der ligger 5 sekunder før og har indsat efter DIM'erne følgende:
    Forms!Kørsler1!Findtid.SetFocus
    DoCmd.FindRecord Time

Den færdig kode ser således ud:

Private Sub Form_Timer()
Dim StartTimeA As Date
Dim StopTimeA As Date
   
    Forms!Kørsler1!Findtid.SetFocus
    DoCmd.FindRecord Time

'A-Gruppen
    StartTimeA = Me!Starttid
    StopTimeA = Me!Sluttid
   
    If Time >= StartTimeA And Time < StopTimeA Then
        ' Run macro.
        Debug.Print "Run Macro..."
        DoCmd.RunMacro (Me!Makronavn)
    Else
        'Don't run macro.
        Debug.Print "Don't run Macro..."
    End If
   
End Sub

DET VIRKER :-)

Men tak for jeres hurtige kommentarer og svar.
Avatar billede Slettet bruger
04. juli 2006 - 12:26 #13
Terry, selvom jeg ikke har brugt din løsning synes jeg du skal have nogle point.
Avatar billede terry Ekspert
04. juli 2006 - 13:09 #14
well as they say "If it works then dont touch it (change it)) :o)

thanks a lot for the points, have a nice "sunny" day
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