Jeg beklager men der er store problemer med vores netopkobling i dag. Det er korekt at access kan indstilles til at komprimering ved lukning, men det gælder da kun for det eksemplar at access der er foretaget den indstilling. Jeg forventer ikke at fremtidige bruger af databasen her lavet denne indstilling. Jeg søger en løsning der er en del af databasen.
Function CompactDb(strDbPath As String) As Boolean
' This procedure creates a backup copy of a database ' and then compacts it. ' ' Arguments: ' strDbPath: The path to the database to be compacted. ' ' Returns: ' A Boolean value indicating success or failure.
Dim dbs As Database Dim intLength As Integer Dim varPosition As Variant Dim strDbTemp As String, strDbCompacted As String Dim strDbBackup As String Dim strMsg As String Const conPermissionDenied As Integer = 70
On Error GoTo Err_CompactDb ' Initialize string for message. strMsg = "Database " & strDbPath & " cannot be opened exclusively. " _ & "The database may have already been opened by you or another user."
' Compact the database to a temporary file. intLength = Len(strDbPath) varPosition = InStr(strDbPath, ".mdb") If varPosition > 0 Then strDbTemp = Left(strDbPath, varPosition - 1)
' Check whether database can be opened exclusively. ' This line calls a function defined in Chapter 2. If Not CanOpenDbExclusively(strDbPath) Then MsgBox strMsg GoTo Exit_CompactDb End If
' Compact to new file. strDbCompacted = strDbTemp & "Compacted.mdb" DBEngine.CompactDatabase strDbPath, strDbCompacted
' Delete uncompacted database. Kill strDbPath
' Rename compacted database to original name. Name strDbCompacted As strDbPath End If CompactDb = True
Exit_CompactDb: On Error Resume Next dbs.Close Set dbs = Nothing Exit Function
Err_CompactDb: If Err = conPermissionDenied Then MsgBox strMsg Else MsgBox "Error " & Err & ": " & vbCrLf & Err.Description End If CompactDb = False Resume Exit_CompactDb
Indstillingen "Komprimer ved lukning" er da en database-egenskab (og ikke en Access-egenskab) Derved vil indstillingen også gælde for alle de brugere, som har databasen, og du behøver ikke at spekulere på mere.
Thomas kom med en simpel kode "DoCmd.Quit" til afslut knappen, men bliver databasen komprimere og reparere ved denne kode? Jeg mener at det er den kode aom access selv opretter når man bruger knapværktøjet og laver an afslutknap.
Din kode jensen363, kan formodentlig både komprimere og reparere databasen. Er det korekt opfattet, at databasen kopieres og overskriver den gamle db ? Er det samme procedure der sker med din kode, som skre når man gennem access menuen komprimere og reparere.
Ja, jeg skrev bare Docmd.Quit til at afslutte Access. Men hvis du samtidig sætter egenskaben "Komprimer ved luk", så vil databasen altid blive komprimeret, når den lukkes og ingen yderligere kode er påkrævet. Denne egenskab følger med databasen og har altså ikke noget med den enkelte brugers indstillinger at gøre.
Jeg har store problemer med netværket her, så jeg afslutter spårgsmålet og fordeler point lige. Tak for hjælpen, jeg vil prøve de to løsninger.
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.