30. august 2005 - 15:15Der er
7 kommentarer og 2 løsninger
Automatisk komprimering af backend
I et flerbrugermiljø hvor der stort set altid er nogen, som er linket på backend er det så muligt at komprimere denne og især er det muligt at gøre det automatisk.
Evt. Hvis der opstår et "hul" hvor alle er lukket ned, kan man så lave en automatik, som kan køre en komprimering på BE (som jo ikke er åben i sig selv!~)
Nej, det virker ikke, fordi jeg har i så fald brug for at brugerne lukker ned, hvilket er besværligt og hvis jeg kunne få dem til det, så kunne jeg jo komprimere det selv!~)
Synes godt om
Slettet bruger
31. august 2005 - 09:50#3
Forresten koden man kan arbejde med i mit tilfælde:
With COMAddIns(TsiSoon90.Connect").Object .FileToOpen = CurrentProject.FullName .Exclusive = False .FileIsAdp = False .CompactOld = True .CloseAll End With
Da du selv skriver "(som jo ikke er åben i sig selv!~)" siger det sig selv at du er nødt til at lave et eller andet i en frontend der gør det. Personligt ville jeg nok gøre det at jeg lavede en formular med en timer på som med et eller andet interval checker om den kan få exclusiv adgang til din backend og hvis det så er tilfældet, så kører du noget kode der komprimerer den. Formen skal du så bare åbne skjult hver gang du åbner din applikation.
Det er rimelig simpel kodning som du sikkert kan finde på nettet ellers må du lige sige til. Så skal jeg finde det frem af gemmerne.
Jeg gør det via en .bat fil, som jeg har sat serveren til at kører om natten via planlagte opgaver. Koden i .bat filen: C: cd\Program Files\Microsoft Office\OFFICE11 MSAccess.exe O:\Mappen\Min-db_be.mdb /compact
Den checker ikke om der er nogen på, men hvis der er kører den bare ikke. Men så kører den bare dagen efter.
Why not shut down the appication to allow you to compact. I found this text a few years ago.
Create a table in the database called "KickEmOff" containing one field, "GetOut", integer value, default 0. Create a function that gets called from a Timer Event on a form that is always up in the application. Function follows. If you want to be nice, bring up a small modal form that displays the text "You are being booted from the database. Auto Exiting in 10... 9... 8... " that gets closed just before everything exits.
Function fGetOut()As Integer Dim RetVal As Integer Dim MyDB As Database Dim MyRS As Recordset On Error Goto Err_fGGO Set MyDB = DBEngine.Workspaces(0).Databases(0) Set MyRS = MyDB.OpenRecordset("KickEmOff", db_Open_Snapshot) If MyRS.EOF and MyRS.BOF Then RetVal = True Goto Exit_fGGO Else If MyRS!GetOut = True Then 'This is where you close down any forms, and quit the database 'I leave this section as an exercise to the creative readers Else RetVal = True End If End If Exit_fGGO: fGetOut = RetVal Exit Function Err_fGGO: 'Note lack of message box on error Resume Next End Function
Now, as the responsible DBA, you simply enter a record into "KickEmOff" with a GetOut value of True (-1) and watch em all bail out like flies. The fastest way I've found to determine if they're all out is if you can delete the .ldb file. Then compact. Then enter the database and delete that record from KickEmOut, or else nobody will be able to work in the database, and they'll all be out for blood...
Hvis det er Access2003 er der en megen simpel måde at gøre det på! I denne version lukker basen nemlig sig selv, hvis man komprimerer fra kommandolinjen ved hjælp af en bat-fil.
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.