Centar za edukaciju-BiH



#1 27.08.2011 09:03
Mepas Van mreze
Clan
Registrovan od:29.07.2011
Postovi:11


Predmet:Compact and Repair database iz koda
Pozdrav svima,
da li je moguce uraditi Compact and Repair Database iz koda?
↑  ↓

#2 27.08.2011 09:18
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


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.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 28.08.2011 08:20
Mepas Van mreze
Clan
Registrovan od:29.07.2011
Postovi:11


Predmet:Re: Compact and Repair database iz koda
Hvala na odgovoru, da li mozete da postavite primjer?
↑  ↓

#4 29.08.2011 03:35
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Compact and Repair database iz koda
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Kompakt()
  2. Dim Db As DATABASE
  3. Dim StaroIme As String
  4. Dim NovoIme As String
  5. Dim Putanja As String
  6.  
  7. Set Db = CurrentDb()
  8. StaroIme = Db.Name
  9. Putanja = ImeBaze(StaroIme)
  10. NovoIme = Putanja & "Nova.mdb"
  11. StaroIme = Putanja & "_be.mdb" '* ovdje se vrsi izmjena imena
  12.  
  13.     If Dir(NovoIme) <> "" Then _
  14.         Kill NovoIme
  15.     DBEngine.CompactDatabase StaroIme, _
  16.         NovoIme
  17.         Kill StaroIme
  18.         Name NovoIme As StaroIme
  19. End Function
  20. Function ImeBaze(Putanja As String) As String
  21.  
  22.     Do Until Right$(Putanja, 1) = "."
  23.         Putanja = Left$(Putanja, Len(Putanja) - 1)
  24.     Loop
  25.     Putanja = Left$(Putanja, Len(Putanja) - 1)
  26.    ImeBaze = Putanja
  27. 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.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 29.08.2011 03:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Compact and Repair database iz koda
Ukljuci dao iskljuci ado ako ti netreba.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 29.08.2011 13:31
miro35 Van mreze
Clan
Registrovan od:05.01.2009
Postovi:608


Predmet:Re: Compact and Repair database iz koda
Evo kod mene compact back end baze:

PreuzmiIzvorni kôd (Text):
  1. Dim fa As Integer
  2.     Dim errloop
  3.     Dim F As Integer
  4.     Dim fileCompact As String
  5.     Dim disk As String
  6.    
  7.    
  8.       disk = Left(CurDir(), 2) ' odseca prva dva karaktera od putanje zbog promenljivosti diska.
  9.  
  10.    
  11.    
  12.     fileCompact = disk & "\IH\Moja_Baza.mdb"    ' apsolutna putanja
  13.      'fileCompact = disk & DLookup("[PUTANJA]", "Table1", "[SIFRAKOR]=" & var_sifrakor)  ' relativna putanja
  14.      
  15.      
  16.     F = FreeFile
  17.     Open fileCompact For Binary Shared As #F
  18.     SizeBefore = LOF(F)
  19.     Close F
  20.    
  21.     If MsgBox("Zelite li kompresiju podataka?", vbQuestion + vbYesNo, "Potvrda kompresije") = vbYes Then
  22.            
  23.         On Error GoTo Err_Compact
  24.        
  25.         DoCmd.Hourglass True
  26.        
  27.         If FileExists(Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak") Then
  28.             Kill Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak"
  29.         End If
  30.    
  31.         Name fileCompact As Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak"
  32.         DBEngine.CompactDatabase Mid(fileCompact, 1, Len(fileCompact) - 3) & "bak", fileCompact
  33.         DoCmd.Hourglass False
  34.         MsgBox "Kompresija je izvrÅ¡ena!", vbInformation, "Obavijest"
  35.        
  36.    
  37.         F = FreeFile
  38.         Open fileCompact For Binary Shared As #F
  39.         SizeAfter = LOF(F)
  40.         Close F
  41.         PercentCompaction = (SizeBefore - SizeAfter) / SizeBefore
  42.  
  43.     End If
  44.  
  45.     Exit Sub
  46.  
  47. Err_Compact:
  48.  
  49.     For Each errloop In DBEngine.Errors
  50.         MsgBox "Compaction unsuccessful!" & vbCr & _
  51.             "Error number: " & errloop.Number & _
  52.             vbCr & errloop.Description
  53.  
  54.     Next errloop
  55.  
  56. Done:
  57. End Sub
  58. Function FileExists(strFile As String) As Boolean
  59. Dim I As Integer
  60.  
  61. On Error Resume Next
  62. I = Len(Dir(strFile))
  63. FileExists = (Not Err And I > 0)
  64.  
  65. End Function

Miro
↑  ↓

#7 19.07.2013 12:19
Miki2013 Van mreze
Clan
Registrovan od:03.05.2013
Postovi:38


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:
Informacije o tipu datoteke za:rar  Compact.rar
Preuzimanja:360
Velicina datoteke:11.60 KB

↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 6: 52 pm.