Avatar billede infelix Nybegynder
22. september 2006 - 09:11 Der er 15 kommentarer og
1 løsning

Kopier tabel til en fil og slette data ved tryk på en knap!

Hej,

jeg har en tabel med dato felt og par andre, og jeg vil gerne kopier de data til en fil (excel,word etc). Men det skal kun f.eks være de data der er et år gammel,og så skal de data slettes fra tabellen??

Er det muligt??Og hvad er den bedste måde at gøre det på??Er det muligt at gøre det ved at brugeren kun skal gøre det ved at trykke på en knap??
Avatar billede mugs Novice
22. september 2006 - 10:17 #1
Det nemmeste du kan gøre, er at sende data til Excel med kommandoen Docmd.transferspreadsheet. Eller bygge en makro og vælg handlingen OverførRegneark. I argumenterne nederst vælger du eksporter og de øvrige argumenter. Det du skal overføre er en forespørgsel med et kriterie på datofeltet der udvælger data der er 1 år gamle. Derefter en sletteforespørgsel der sletter data i den overførte forespørgsel.
Avatar billede Slettet bruger
22. september 2006 - 10:18 #2
Ja, præcis... jeg så lige der kom et indlæg inden jeg skulle til at trykke send på flg:

Lav en forespørgsel, som indeholder de data, som du ønsker og i den sortering og den rækkefølge du vil have dem stillet op. Så laver du en knap og koden du smider på er noget i retningen af:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "NavnForespørgsel", "c:\NavnMappe\NavnFil.xls"
Avatar billede infelix Nybegynder
22. september 2006 - 11:14 #3
er ik' lige best til sql!!Hvis vi siger at tabellen hedder Table,hvordan ser sqlkoden ud mht.date,kan ik' lige se hvordan den helt præcis skal hente 1 år tilbage??

og jeg var ik' helt med på den med sletteforespørgsel??bliver jeg nød til at lave en anden knap der slette dataene eller??
Avatar billede mugs Novice
22. september 2006 - 11:56 #4
DoCmd.TransferSpreadsheet acExport, 8, "Forespørgsel1", "C:\test", True, ""
DoCmd.RunSQL "Delete Forespørgsel1.felt1, Forespørgsel1.dato, Forespørgsel1.Udtryk1 FROM Forespørgsel1 WHERE (((Forespørgsel1.Udtryk1)=0))"
Avatar billede infelix Nybegynder
22. september 2006 - 12:15 #5
det er jeg ik' helt med på??sorry...

hvis sql koden er sådan:

SELECT Diario.Fecha, Diario.Leer, Diario.Leido, Diario.Categoria, Diario.Descripcion, Diario.Autor
FROM Diario;

hvad skal jeg ændre for at kun få de data som er et år gammel??
Avatar billede infelix Nybegynder
22. september 2006 - 12:45 #6
har kommet frem til noget:

SELECT Diario.Fecha, Diario.Leer, Diario.Leido, Diario.Categoria, Diario.Descripcion, Diario.Autor
FROM Diario
WHERE DATEDIFF("d",Diario.Fecha,date()) < 365;

er det godt nok??
Avatar billede mugs Novice
22. september 2006 - 12:50 #7
Afprøv det oig se hvad der sker. Tag evt. en kopi af db og leg lidt med den, men det ser da godt nok ud. Dit kriterie <365 vil altid gå 365 dage tilbage. Hvad med skudår?
Men SQL ser da rimelig ud.
Avatar billede infelix Nybegynder
22. september 2006 - 13:43 #8
Jeg kan ik' få den der delete funktion til at virke, min foresprøgsel som gemmer data i excel fil hedder DIARIO QUERY EXPORT....

hvordan kan jeg få det til at virke??Skal jeg lave en ny knap,eller kan den implementeres i den samme knap som får dataene til at blive gemt i excel filen?!?
Avatar billede mugs Novice
22. september 2006 - 13:57 #9
Du kan sagtens have dem i samme knap. Koderne er afprøvet og fungerer. Jeg kan sende dig min testdb.

Men nu skriver du blot,at du ikke kan få det til at virke, og det bliver vi jo ikke meget klogere af. Får du nogen fejlmeddelelser?
Avatar billede mugs Novice
22. september 2006 - 13:58 #10
Prøv først at omdøbe din forespørgsel "DIARIO QUERY EXPORT", så der ikke er mellemrum mellem ordene. Det er en uskik, og medfører ofte bøvl.
Avatar billede mugs Novice
22. september 2006 - 13:59 #11
Avatar billede infelix Nybegynder
22. september 2006 - 14:00 #12
Jeg kan ikke finde ud af hvad jeg helt præcis skal skrive i:

DoCmd.RunSQL "Delete Forespørgsel1.felt1, Forespørgsel1.dato, Forespørgsel1.Udtryk1 FROM Forespørgsel1 WHERE (((Forespørgsel1.Udtryk1)=0))"

hvad er "Forespørgsel1.felt1, Forespørgsel1.dato, Forespørgsel1.Udtryk1" , hvad er Forespørgsel1,er det bare DIARIO QUERY EXPORT som er navnet på min forespørgsel eller, og hvordan skriver man det syntakst rigtig...hvad er felt1,dato,Udtryk1...

sorry...
Avatar billede mugs Novice
22. september 2006 - 14:30 #13
Forespørgsel1 er navnet på min forespørgsel. Det er den der først sender data til Excel, og derefter bruger jef den til at slette med.

"Forespørgsel1.felt1, Forespørgsel1.dato, Forespørgsel1.Udtryk1"
Det er de felter der indeholder data, der skal slettes i Forespørgsel1.

Se min kode Kl 11:56. Den er afprøvet og fungerer.
Avatar billede infelix Nybegynder
22. september 2006 - 16:52 #14
Ok,nu har jeg implementeret det,og det ser ud til at fungere, koden ser således ud:

DoCmd.RunSQL "Delete Export.Fecha, Export.Leer, Export.Leido, Export.Categoria, Export.Descripcion, Export.Autor FROM Export WHERE (((Export.Fecha)=0))"

men der kommer et popup vindue hvor der står at jeg er igang med at slette 0 rækker,hvorfor det??
Avatar billede infelix Nybegynder
22. september 2006 - 17:05 #15
ok,nu virker det...skulle bare fjerne =0....

det så jeg ik'...

men tak igen...
Avatar billede mugs Novice
22. september 2006 - 18:25 #16
Det er Access indbyggede advarsel. Du fjerner den således.

Docmd.setwarnings false
Her følger så din kode
Docmd.setwarnings true

Husk ALTID at sætte warnings til true igen, ellers forbliver de frakoblede i hele applikationen.
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