une base access 2000 accedée en DAO 3.6 augmente de taille de facon exagerée si vous augmenter la taille d'un champ long binary.
par exemple une base vide qui fait 136 ko au depart passe a 412436 ko
avec un malheureux champ long binary de 80 ko !!!
ce champ ayant éte genérer par 10000 boucles qui augmente a chaque passage le champ de 8 octets.
Cette base passe a 216 ko apres compactage.
ce probleme ne se pose pas avec une base access 97 sous DAO 3.51 !!
un close du recordset n'arrange rien
le seul moyen qu'acces utilise les "trous" est de redemarrer l'application
A l'aide !! , je ne peut pas fermer mon application pour la compacter !!
merci :
exemple sous VB6: avec une table contenant un champ long binary "bin"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Private rs As Recordset Private db As Database Private Sub Command1_Click() Dim tb() As Byte Dim i as long Dim l as long rs.MoveFirst For i = 0 To 9999 If IsNull(rs!bin) Then ReDim tb(0 To 7) l = 8 Else tb = rs!bin l = UBound(tb()) + 8 ReDim Preserve tb(0 To l) End If rs.Edit rs!bin = tb 'ou rs!bin.AppendChunk tb rs.Update Next i Label1.Caption = l \ 1024 Command1.Enabled = True End Sub Private Sub Form_Load() Set db = DBEngine.Workspaces(0).OpenDatabase("MaBase.mdb") Set rs = db.OpenRecordset("T1") end Sub
Partager