23. maj 2000 - 18:43Der 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???
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
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.
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.
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
>>> 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.....
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
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!!!
Sorry - min fejl. Jeg har så godt som ingen erfaring med makroer og troede ikke at din setwarnings-kommando hørte til der. Beklager.
Synes godt om
Ny brugerNybegynder
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.