Avatar billede r-bj Nybegynder
23. maj 2000 - 18:43 Der er 7 kommentarer og
1 løsning

slette indholdet af en tabel

Hej

Er det muligt at lave en makro der kan slette indholdet af en tabel???

Jeg har en database der gerne skal "tømme" indholdet af en tabel hver måned og så starte forfra.... nogen der har en god ide til hvordan det gøres nemt og hurtigt???
Avatar billede jgc Nybegynder
23. maj 2000 - 19:04 #1
Lav en forespørgsel der sletter indholdet i tabellen. Lad din makro - eller evt. VBA-kode - køre forespørgslen hvis ikke du vil gøre det manuelt.

Forespørgslen skal se således ud:
DELETE * FROM <tabelnavn>

Hvis du vil køre det gennem en makro skal du lave en Åbnforespørgsel-kommando, med din sletteforespørgsel som argument. Makroen kan så tilknyttes en knap på en formular el.lign.
Avatar billede jgc Nybegynder
23. maj 2000 - 19:06 #2
Du kan i øvrigt også bare åbne tabellen, vælge alt med Ctrl+A og så trykke delete - ikke så elegant, men ret hurtigt, hvis man ikke allerede har en sletteforespørgsel.
Avatar billede philiph Nybegynder
23. maj 2000 - 20:10 #3
Jeg tilslutter mig jgc's svar med:

DELETE * FROM <tabelnavn>

Men hvis du vil lægge det i en makro (RunSQL), vil makroen komme og spørge:

OK at slette X poster fra tabellen Y.

Hvis du ikke vil se den besked, skal du slå beskeder fra med: SetWarnings = No før sletteforespørgslen, og huske at slå den til efter.

Nu er jeg ikke tilhænger af makroer, da der ikke er nogen fejlhåndtering, så hvis du har en formular kan du lægge en slette knap på og indsætte følgende VBA kode:

Private Sub Command0_Click()
  Dim db As Database
 
  On Error GoTo Error_Handler
  Set db = CurrentDb()
  db.Execute "DELETE * FROM xxx"
  Set db = Nothing
  Exit Sub

Error_Handler:
  MsgBox Err & " " & Error$
  Exit Sub
End Sub

Philip
Avatar billede r-bj Nybegynder
23. maj 2000 - 23:03 #4
>>> philiph:  Det der med SetWarnings = No. virker ikke helt!!! jeg for en fejlmeddelse om at det er en ugyldig sql sætning, "DELETE" "INSERT" "PROCEDURE" "SELECT" eller "UPDATE" var ventet.....

nogle gode råd??????
Avatar billede jgc Nybegynder
24. maj 2000 - 00:28 #5
Setwarnings-kommandoen skal køres i et modul. Du kan f.eks. bruge philiphs kodeeksempel som udgangspunkt:

Start med at oprette en knap i den formular du vil køre sletteforespørgslen fra. Højreklik på knappen og vælg egenskaben, hændelser og VedKlik. Nu skal du vælge kodegenerator for at komme til Visual Basic-vinduet.

Her indsætter du følgende:

Private Sub Command0_Click() <-- NB: Denne linje står der sikkert allerede.
  Dim db As Database
 
  On Error GoTo Error_Handler
  Set db = CurrentDb()
  ' Her fjerner vi Access' advarsler
  DoCmd.SetWarnings False
  db.Execute "DELETE * FROM xxx"
  ' Efter forespørgslen er kørt, kan vi slå dem til igen
  DoCmd.SetWarnings True
  Set db = Nothing
  Exit Sub

Error_Handler:
  MsgBox Err & " " & Error$
  Exit Sub
End Sub <-- Denne linje skriver access selv




Avatar billede jgc Nybegynder
24. maj 2000 - 00:29 #6
>> philiph - du kan ikke bruge setwarnings med den syntaks (SW = NO).
Avatar billede philiph Nybegynder
24. maj 2000 - 01:19 #7
>> jgc

Det gjore jeg heller ikke! Jeg sagde at i makroer skal man bruge SetWarnings False. I VBA kode skal man kun benytte DoCmd.SetWarnings False hvis man bruger DoCmd.RunSQL til at udføre SQL'en med. Da jeg i min kode benytter db.Execute er det altså unødvendigt.

I dit VBA eksempel er DoCmd.Setwarnings altså helt overflødig!!!

Er du med?

Philip

Avatar billede jgc Nybegynder
24. maj 2000 - 09:14 #8
Sorry - min fejl. Jeg har så godt som ingen erfaring med makroer og troede ikke at din setwarnings-kommando hørte til der.
Beklager.
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