23. januar 2005 - 20:16Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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
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.
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
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
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.
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.
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
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??
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)
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" ;)
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.