Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 20:16 Der er 19 kommentarer og
1 løsning

Automatisk opdatering

Jeg har brug at køre en opdateringsforespørgsel en gang om ugen.
Jeg havde forestillet mig en stump kode der blev afspillet samtidig med at db'en åbnede, altså i min autoexec makro. Koden skulle undersøge om det var en uge siden at opdateringen fandt sted, og hvis ja, fyre min forespørgsel af.
Altså noget med at have et felt i en tabel der indeholdt en dato. Koden skulle tjekke om dags dato var lig med eller mindre end denne dato, og hvis dette er tilfældet køre forespørgslen, og lægge 7 dage (en uge) til datoen i feltet.
Jeg ved ikke om det lyder helt tosset, eller om det kan gøres fiksere.
23. januar 2005 - 21:08 #1
Det lyder ikke spor tosset.

Du skulle kunne bruge denne kode, hvis du anbringer den i et modul og kalder den fra din autoexec:

Public Function CheckOpdatering()
  If DFirst("SidstOpdateret", "tblSettings") > Date+7 then
      docmd.Setwarnings false
      docmd.Openquery "Din opdaeringsforespørgel"
      docmd.RunSQL "Update tblSettings Set SidstOpdateret = now()"
      docmd.Setwarnings false
  Endif
End Function
23. januar 2005 - 21:08 #2
nb: tabellen hedder jo så tblsettings og feltet hedder sidstOpdateret
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:34 #3
hmm. Jeg syntes ikke rigtig der sker så meget.
Er det rigtigt når jeg vælger afspil kode i min autoexec og så skriver CheckOpdatering() i funktionsnavn.
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:40 #4
Modulet indeholder ikke andet end en linje hvor der står Option Compare Database og så koden. Er det rigtigt?
23. januar 2005 - 21:40 #5
ja.....men hvad har du skrevet i din tabel? Der skal stå 15/1 eller tidligere for at det virker. Jeg valgte at den skrev datoen for sidste opdatering i stedet for dags dato + 7
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:42 #6
Jeg har sat den til d. 10-01-2005. Er datoformatet ligegyldigt eller skal det stå på en bestemt måde?
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:43 #7
Den opdaterer heller ikke datoen i tabellen, men jeg mener jeg har kaldt den de rigtige navne.
23. januar 2005 - 21:44 #8
ah, der er vist også en fejl i den første linie. Prøv denne:

If DFirst("SidstOpdateret", "tblSettings") > Date-7 then
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:50 #9
Desværre!
Er der nogle ting der SKAL hedde noget specielt udover tabel og felt. Og kalder jeg koden rigtigt fra min makro.
23. januar 2005 - 21:53 #10
hmmm.....prøv at lave et breakpoint i første linie (den med if DFirst).

Breakpoints laves f.eks. ved at trykke F9, når du har markøren på linien.

Herefter starter du databasen og ser om den overhovedet kommer til linien. Hvis linine markeres med gult, kan du singlesteppe med F8
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 21:57 #11
OK. Jeg sætter markøren i linjen og trykker F9. Linjen får nu en rød farve. Jeg lukker db'en og åbner igen, men der kommer slet ikke noget nyt frem. Hvad er forkert :D
23. januar 2005 - 22:00 #12
nåå ja, du skal selvfølgelig ikke lukke databasen, da breakpointet så forsvinder. Bare køre Autoexec manuel i stedet ;o)
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 22:06 #13
ahaaaaa!!
Jeps, der kommer en gul linje frem. Jeg trykker F8 og den hopper lystigt dernedad.
Den springer over de linjer der starter med Do.Cmd.
Men der sker ikke noget.
23. januar 2005 - 22:10 #14
Når du siger "springer over", så mener du, at den stiller sig på hver af dem? Den hopper ikke bare til End if, vel?

Prøv evt at sætte ' foran Docmd.Setwarnings false, således:

Public Function CheckOpdatering()
  If DFirst("SidstOpdateret", "tblSettings") > Date+7 then
      'docmd.Setwarnings false
      docmd.Openquery "Din opdaeringsforespørgel"
      docmd.RunSQL "Update tblSettings Set SidstOpdateret = now()"
      docmd.Setwarnings false
  Endif
End Function

Derved skulle du få Access' standard-advarsler nor opdateringsforespørgslen og SQl'en køres.
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 22:13 #15
Jo den hopper til Endif uden at stille sig på linjerne.
23. januar 2005 - 22:21 #16
ok, så ved vi, at kriteriet i IF-sætningen ikke bliver opfyldt.

tænke
...
...
tænke
...
aaaahhh....dumme mig. Man skal lige holde tungen lige i munden, når man skal sammenligne datoer på denne måde. Prøv lige at vende ulighedstegnet:

If DFirst("SidstOpdateret", "tblSettings") < Date -7 then
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 22:30 #17
SUCCES!!!!
Takker mange gange for hjælpen. Du har ærligt og redeligt fortjent hvert et point :D
Sjovt som en lille ting kan gøre hele forskellen.
Jeg kan se at jeg må dybere ned i det der VBA før det bliver rigtigt sjovt.

Et tillægsspørgsmål:
Jeg har i min db brugt noget fra en eksempel database fra makeiteasy.dk. Det må man godt, så vidt jeg kan se?? Min db benyttes ikke kommercielt eller noget, men vil du krediteres på en eller anden måde??
23. januar 2005 - 22:35 #18
Hej Kasper,

Eksemplerne ligger til fri afbenyttelse. Dog beder jeg gerne om, at folk beholder credit-teksterne i toppen af modulerne (hvis der er nogle moduler i det eksempel, som du har benyttet). Og så ellers taler pænt om min hjemmeside til andre :o)

Derudover er jeg bare glad, hvis du er :o)
Avatar billede kasper_knaldperle Nybegynder
23. januar 2005 - 22:42 #19
Jamen jeg er da MEGET glad :D
Der er ikke nogen moduler i den jeg har brugt. Det er den med kalenderen. Det var også derfor jeg spurgte, jeg har lagt mærke til at det står i toppen af f.eks. shell execute, som jeg også bruger :)
Og du kan tro jeg taler pænt om jeres side. Det er jo en slags "visdommens kilde" ;)
23. januar 2005 - 22:42 #20
Så er jeg endnu mere glad :o))
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