13. juni 2002 - 12:46Der er
44 kommentarer og 2 løsninger
compact and rep. runction
Hej, Hvordan kan man lave en funktion i access , hvor kan komprimere og rep. den back-end man er tilknyttet til. Den skal kunne virker i en runtime version
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Dette virker fra VB - måske kan det bruges ? (Fik jeg lige fra Terry, så måske kan jeg snige mig nogle points til her på hans bekostning ;-)
Dim JRO As New JetEngine ' To compact MDB databases using ADO, just include a reference to the ' 'Microsoft Jet and Replication Objects 2.6 Library' ' Tried out on 2.5 lib and worked as well. JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\laptop\vb\Compact_Access_DB_VB5\sysmon.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\laptop\vb\Compact_Access_DB_VB5\new_db.mdb"
Something else>You may get problems trying to compact your backend dB IF it is LINKED form your frontend. It has to be opened in EXCLUSIVE mode I would think!
Hey itbjarne one thing I have learnt since I started working as a programmer is pinch as much code as you can, why make it yourself if it already exists? So I so NOTHING wrong with you using my example, after all I gave it to you :o)
juks>With this solution a copy of the original database is made. It is then necessary to delete the original and then re-name the new. IF the tables are LINKED then deleting the original will more than likely be a problem.
take a look at this link http://www.mvps.org/access/modules/mdl0020.htm If you look at the VB code you will see that the Current db gets closed BEFORE the actual compact takes place then it gets opened again when its all finished. This is actually what Access does when you compact FROM within Access. You should be able to pinch ( itbjarne take NOTE :o) ) som ecode from here.
hugo ..... jeg for godt nok mange fejl når jeg kører dit modul den 1. -------------- If FileLen(avarUniqueDBs(lngI)) < fhpGetDiskFreeSpace(avarUniqueDBs(lngI)) Then ---------- error = "sub or function not defined"
Try this: Make a new form and place a button on it named cmdCheckup Then copy this into the form and change the path and file name to the name of the BACKEND dB
Private Sub cmdCheckup_Click()
' Do the actual work On Error GoTo cmdCheckup_Err
Dim db As Database Dim ws As Workspace Dim strDB As String Dim strLDB As String Dim strNewDB As String
strDB = "C:\temp\yourdb.mdb"
' First, check to make sure we can get to the database exclusively Set ws = DBEngine.Workspaces(0) Set db = ws.OpenDatabase(strDB, True)
' Repair the database db.Close DBEngine.RepairDatabase strDB
' Compact the database strNewDB = Left$(strDB, Len(strDB) - 1) & "N" DBEngine.CompactDatabase strDB, strNewDB
' Kill the old database Kill strDB
' And rename the new one Name strNewDB As strDB
cmdCheckup_Exit: Exit Sub
cmdCheckup_Err: Select Case Err Case 3356 ' Couldn't open exclusively MsgBox "The file is open on another machine. Cannot complete checkup. Please close and try again." Case Else MsgBox "Error " & Err & ": " & Error$, 16, "Call Programmer" End Select Resume cmdCheckup_Exit End Sub
juks> jeg må nok erkende at der nok er funktioner i den kode jeg sendte/viste der er afhængig af andre moduler fra http://www.hugopedersen.dk/access/ Det var jeg ikke lige opmærksom på - beklager. Jeg bruger selv funktionen i flere af mine kørende applikationer og jeg er derfor sikker på at det virker.
jeg har ikke haft tid til at teste den endnu , men jeg tror det virker men hvordan finder man ud automatisk hvor tabellerne er linked til (altså stien)
' Repair the database db.Close DBEngine.RepairDatabase strDB -------- den kan ikke finde ldb'en og den funktion repairdatabase "understøttes ikke for denne object type"
LDB file is created when you the database it holds infromation about those using the database. Normally when the LAST user leaves the database the LDB file will be removed. But if an error occurs the file may still exist, therefore this line! If the file doesnt exist then you cant delete it!
Not sure what you mean with "understøttes ikke for denne object type" is it an error you get when you run this line?
jeg har også prøvet dao det virker sku heller ikke men er det ikke nok kun at komprimere ? kan man ikke tjekke om LDB eksitere og hvis ikke så spring kil ldb over.
Hvis du bruger min metode ( som godt nok bruger mere kode ) så behøver du ikke bekymre dig om ldb filen for funktionen checker om du kan åbne databasen eksklusivt og så er det intet problem.
Det der er 'problemet' i det er at rutinen kalder andre funktioner der findes til download på den nævnte side. Desværre har jeg ikke en udgave der ligger bare i et modul.
Jeg kan dårligt huske det, men moddbutilities.bas og modformutilities.bas bliver i hvert fald brugt.
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.