Mepas |
27.08.2011 10:03 |
Predmet:Compact and Repair database iz koda
Pozdrav svima,
da li je moguce uraditi Compact and Repair Database iz koda? |
zxz |
27.08.2011 10:18 |
Predmet:Re: Compact and Repair database iz koda
Moguce je ako je odvojena baza od aplikacije. Pri kompaktovanju baze se vrsi u stvari kreiranje nove baze i brisanje stare pa prema tome nemozes to vrsiti na objektu koji je otvoren. |
Mepas |
28.08.2011 09:20 |
Predmet:Re: Compact and Repair database iz koda
Hvala na odgovoru, da li mozete da postavite primjer? |
zxz |
29.08.2011 04:35 |
Predmet:Re: Compact and Repair database iz koda
PreuzmiIzvorni kôd (Visual Basic):Function Kompakt()
Dim Db As DATABASE
Dim StaroIme As String
Dim NovoIme As String
Dim Putanja As String
Set Db = CurrentDb()
StaroIme = Db.Name
Putanja = ImeBaze(StaroIme)
NovoIme = Putanja & "Nova.mdb"
StaroIme = Putanja & "_be.mdb" '* ovdje se vrsi izmjena imena
If Dir(NovoIme) <> "" Then _
Kill NovoIme
DBEngine.CompactDatabase StaroIme, _
NovoIme
Kill StaroIme
Name NovoIme As StaroIme
End Function
Function ImeBaze(Putanja As String) As String
Do Until Right$(Putanja, 1) = "."
Putanja = Left$(Putanja, Len(Putanja) - 1)
Loop
Putanja = Left$(Putanja, Len(Putanja) - 1)
ImeBaze = Putanja
End Function
Uslov je samo da se baza sa podacima zove isto kao i aplikacija uz dodatak "_be"
Primjer:
Aplikacija mojaApp.mdb
Baza sa podacima:
mojaApp_be.mdb
Ako ti ovo ne pase to mozes promijeniti u redu koda koji je naznacen sa *.
Ako i ovo ne bude dovoljno mogu pojasniti citav kod. |
zxz |
29.08.2011 04:36 |
Predmet:Re: Compact and Repair database iz koda
Ukljuci dao iskljuci ado ako ti netreba. |
miro35 |
29.08.2011 14:31 |
Predmet:Re: Compact and Repair database iz koda
Evo kod mene compact back end baze:
PreuzmiIzvorni kôd (Text):Dim fa As Integer
Dim errloop
Dim F As Integer
Dim fileCompact As String
Dim disk As String
disk = Left(CurDir(), 2) ' odseca prva dva karaktera od putanje zbog promenljivosti diska.
fileCompact = disk & "\IH\Moja_Baza.mdb" ' apsolutna putanja
'fileCompact = disk & DLookup("[PUTANJA]", "Table1", "[SIFRAKOR]=" & var_sifrakor) ' relativna putanja
F = FreeFile
Open fileCompact For Binary Shared As #F
SizeBefore = LOF(F)
Close F
If MsgBox("Zelite li kompresiju podataka?", vbQuestion + vbYesNo, "Potvrda kompresije") = vbYes Then
On Error GoTo Err_Compact
DoCmd.Hourglass True
If FileExists(Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak") Then
Kill Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak"
End If
Name fileCompact As Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak"
DBEngine.CompactDatabase Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak", fileCompact
DoCmd.Hourglass False
MsgBox "Kompresija je izvršena!", vbInformation, "Obavijest"
F = FreeFile
Open fileCompact For Binary Shared As #F
SizeAfter = LOF(F)
Close F
PercentCompaction = (SizeBefore - SizeAfter) / SizeBefore
End If
Exit Sub
Err_Compact:
For Each errloop In DBEngine.Errors
MsgBox "Compaction unsuccessful!" & vbCr & _
"Error number: " & errloop.Number & _
vbCr & errloop.Description
Next errloop
Done:
End Sub
Function FileExists(strFile As String) As Boolean
Dim I As Integer
On Error Resume Next
I = Len(Dir(strFile))
FileExists = (Not Err And I > 0)
End Function
|
Miki2013 |
19.07.2013 13:19 |
Predmet:Re: Compact and Repair database iz koda
Iako je tema prilicno stara, evo primjer koji ja koristim za poluautomatski Compact and Repair database iz koda.
Mozda nekom pocetniku kao sto sam i sam bude jasnije kako to funkcionise. |
Prilozi: Compact.rar (Velicina datoteke:11.60 KB)
|