Avatar billede wermelin Nybegynder
04. februar 2001 - 14:06 Der er 14 kommentarer og
1 løsning

Autopurge

Hej!

Hvordan laver jeg autopurge i Access!?? Jeg har en database som skal rydde op i sig selv efter en bestemt dato er udløbet!

Med venlig hilsen
Wermelin
Avatar billede privaten Nybegynder
04. februar 2001 - 14:13 #1
Du skriver den sql der skal til for at rydde op.

Ved fx. opstart af din database kaldes denne kode. Hvis du opretter en macro med navnet autoexec vil den blive kaldt når du åbner databasen. Din autoexec kalder din oprydnings-metode.

Avatar billede seider Nybegynder
04. februar 2001 - 14:13 #2
Du skal lave en stored procedure det automatisk excueres ved et system event. koden kan jeg ikke lige huske, men det er temligt simpelt.

Select * from minDB where dato < now()-days(30)

Sådan et eller andet, men i interprisemanagere, hvilket jeg ikke lige har her hjemme, kan du også definere en Maks dato for records. i en database.

/* Seider */
Avatar billede wermelin Nybegynder
04. februar 2001 - 14:29 #3
OK!
Jeg har en database med mange tabeller. I disse tabeller ligger der forskellige ting og sager med forskellige udløbsdatoer!
Fx. \"en ting\" der udløber 05-02-2001!
Når denne dato er udløbet/passeret skal \"en ting\" slettes automatisk!
Jeg er stadigvæk usikker på hvordan det gøres. Men der skal altså en kode ind i asp-scriptet som gør det - er det rigtigt forstået? Kender I evt. et sted/link hvor jeg kan finde det?

Wermelin
Avatar billede privaten Nybegynder
04. februar 2001 - 14:35 #4
Hvis der er mange forskellige dato\'er at holde rede på vil jeg anbefale du laver en tabel til disse.

Denne kan så indeholde reglerne for hvornår dine data skal purges. fx:

TabelXX 30
TabelYY 020202
TabelZZ ...

Så kan du selv, eller brugerene holde styr på hvornår næste oprydning skal køres.

Hvis oprydningen kører i Access skal du kode det i VBA og ikke ASP
Avatar billede wermelin Nybegynder
04. februar 2001 - 14:38 #5
Hmm.... shit!

Kan man ikke lave en slags autotracker - som går ind og finder dagens dato og sletter posten??
Avatar billede privaten Nybegynder
04. februar 2001 - 14:39 #6
fx.:

Sub Opryd()
  dim d as date
  d = DLookUp(\"Dato\",\"PurgeJobs\",\"TableName=\'TabelXX\')
  CurrentDb.Execute(\"Delete * from TableXX where DatoFelt < \" & d)
End Sub

Noget i den stil?
Avatar billede privaten Nybegynder
04. februar 2001 - 14:40 #7
Alt kan lade sig gøre, hvis du sender et eksempel på databasen + en regel vil jeg gerne kigge på det!
Avatar billede wermelin Nybegynder
04. februar 2001 - 14:47 #8
Privaten: Den koden du skrev; hvis man nu skal rydde op i alle tabeller i db\'en, kan man så ikke skrive * istedet for TableXX?? Så går den jo ind i alle tabeller og sletter posterne hvor datoen er udløbet eller hva\'?
Og jeg har ikke heeeelt en db endnu, meen....
Avatar billede privaten Nybegynder
04. februar 2001 - 14:50 #9
Nej du kan ikke skrive * istedet for TabelXX. Du fortæller for hver tabel hvilket felt der indeholder informationen der kan afgøre om rækken skal slettes eller ej.
Du er således nødt til at slette i tabel for tabel
Avatar billede wermelin Nybegynder
04. februar 2001 - 14:59 #10
Hmm...ok!
Så hvis min db har fra tabel 1 til 89, så kan jeg lave en løkke hvor i=1 til at starte med og så sætter jeg den fx. til at stoppe når i=89 - og så kører løkken igennem og plusser 1 hver gang!
DELETE * FROM i WHERE osv.....?
Kan man det tror du???

Et lille extra spørgsmål:
Når jeg har en søgemaskine som skal søge i samme db - kan jeg så ikke sætte den til at søge i alle tabeller ved at sætte en *??? Hvad skal man gøre i stedet for hvis man ikke kan sætte *???

Håber du vil svare - hvis du kan!
Du skal nok få alle pointene...
Avatar billede privaten Nybegynder
04. februar 2001 - 15:05 #11
ad 1: Det kan sagtens lade sig gøre fx:

for i = 1 to 89
  CurrentDb.Execute(\"Delete * from \"+str(i)+\" where DatoFelt < \" & d)
next

det skulle gøre jobbet

ad 2:

Nej, det tror jeg ikke du kan
Avatar billede wermelin Nybegynder
04. februar 2001 - 15:09 #12
ad 2:
Der kan jeg vel i princippet gøre som med autopurge - altså for i=1 to EOF (Hmm... kan man det mon?)!
SELECT * FRom \"+str(i)+\" WHERE keyword LIKE \"strKeyword\"
????
Avatar billede wermelin Nybegynder
04. februar 2001 - 15:42 #13
Det er muligt at lave løkken i søgemaskinen også.... :o)
Avatar billede fdata Forsker
04. februar 2001 - 16:26 #14
Du kunne måske bruge følgende:

Private Sub PurgeAllTables()
  Dim Tdf As TableDef
  For Each Tdf In CurrentDb.TableDefs
    With Tdf
      If Left(.Name, 4) <> \"MSys\" Then
        \' Indsæt purge koden her, tabellen hedder Tdf.Name
      End If
    End With
  Next Tdf
End Sub
Avatar billede privaten Nybegynder
05. februar 2001 - 17:04 #15
>> Wermelin, jo sådan kan du godt gøre det!
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