Est-il possible de connaître la place que prend une table dans une base de
données ?
Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT
utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel Carollo
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Patrick" wrote in message news:
Bonjour,
Est-il possible de connaître la place que prend une table dans une base de données ? Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
Merci pour votre aide.
------ Patrick
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas
difficile de la calculer. Pour une table donnee, il suffit d'ajouter la
taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier
ca par le nombre d'enregistrements.
Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les
donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas
d'une page a l'autre.
De plus, les donnees peuvent n'etre pas stockees de facon adjacente
(probablement pas a moins d'avoir fait un "compactage" de la base et de ne
plus y avoir touche).
Pourquoi vous est-il necessaire de connaitre le volume des tables?
--
Daniel :-)
Computing Technologies International - www.computing-tech.com - We
provide solutions...
"Patrick" <nospams_fredin@magic.fr> wrote in message
news:Ob9TnIleEHA.2028@tk2msftngp13.phx.gbl...
Bonjour,
Est-il possible de connaître la place que prend une table dans une base de
données ?
Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT
utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Patrick" wrote in message news:
Bonjour,
Est-il possible de connaître la place que prend une table dans une base de données ? Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
Merci pour votre aide.
------ Patrick
Eric
Bonjour Patrick,
En complément de la réponse de Daniel, j'avais déjà posté une procédure sur ton post du 30/07-Espace utilisé. Voila le lien. J'avais précisé que la procédure te donnerait un "ordre de grandeur"
Est-il possible de connaître la place que prend une table dans une base de données ? Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
Merci pour votre aide.
------ Patrick
Bonjour Patrick,
En complément de la réponse de Daniel,
j'avais déjà posté une procédure sur ton post du 30/07-Espace utilisé.
Voila le lien. J'avais précisé que la procédure te donnerait un "ordre de
grandeur"
Est-il possible de connaître la place que prend une table dans une
base de données ?
Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT
utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
En complément de la réponse de Daniel, j'avais déjà posté une procédure sur ton post du 30/07-Espace utilisé. Voila le lien. J'avais précisé que la procédure te donnerait un "ordre de grandeur"
Est-il possible de connaître la place que prend une table dans une base de données ? Par exemple, si la base fait 10 Mo, j'aimerais savoir que la table TTT utilise 1 Mo, la table UUU utilise 2 Mo et ainsi de suite.
Merci pour votre aide.
------ Patrick
Raymond [mvp]
Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" a écrit dans le message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que
c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans
l'ignorance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" <danielc@NO_SPAM_PLEASE.computing-tech.com> a écrit dans le
message de news:%231P4mQleEHA.708@TK2MSFTNGP09.phx.gbl...
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas
difficile de la calculer. Pour une table donnee, il suffit d'ajouter la
taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier
ca par le nombre d'enregistrements.
Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les
donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas
d'une page a l'autre.
De plus, les donnees peuvent n'etre pas stockees de facon adjacente
(probablement pas a moins d'avoir fait un "compactage" de la base et de ne
plus y avoir touche).
Pourquoi vous est-il necessaire de connaitre le volume des tables?
et si la table contient deux champs OLE et une image intégrée, comment que c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" a écrit dans le message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
Jinroh [MOS MI]
Bonsoir
Une pseudo astuce assez nulle consisterait à exporter la table dans une base vide... hum.... c'est tout ce que j'ai trouvé
-----Message d'origine----- Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que
c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans
l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" tech.com> a écrit dans le
message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas
difficile de la calculer. Pour une table donnee, il suffit d'ajouter la
taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier
ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les
donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas
d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente
(probablement pas a moins d'avoir fait un "compactage" de la base et de ne
plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
.
Bonsoir
Une pseudo astuce assez nulle consisterait à exporter la
table dans une base vide... hum.... c'est tout ce que j'ai
trouvé
-----Message d'origine-----
Bonsoir daniel.
et si la table contient deux champs OLE et une image
intégrée, comment que
c'est-y qu'il va compter les octets le monsieur ? on est
toujours mieux dans
l'ignorance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" <danielc@NO_SPAM_PLEASE.computing-
tech.com> a écrit dans le
message de news:%231P4mQleEHA.708@TK2MSFTNGP09.phx.gbl...
Bonjour Patrick!
On ne peut pas avoir cette information directement,
mais il n'est pas
difficile de la calculer. Pour une table donnee, il
suffit d'ajouter la
taille des champs (que l'on trouve dans l'aide en
ligne), et de multiplier
ca par le nombre d'enregistrements.
Ne vous attendez toutefois pas a avoir un resultat
exact: Jet stocke les
donnees en pages de 2kOctets, un nouvel enregistrement
ne chevauchera pas
d'une page a l'autre.
De plus, les donnees peuvent n'etre pas stockees de
facon adjacente
(probablement pas a moins d'avoir fait un "compactage"
de la base et de ne
plus y avoir touche).
Pourquoi vous est-il necessaire de connaitre le volume
des tables?
Une pseudo astuce assez nulle consisterait à exporter la table dans une base vide... hum.... c'est tout ce que j'ai trouvé
-----Message d'origine----- Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que
c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans
l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" tech.com> a écrit dans le
message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas
difficile de la calculer. Pour une table donnee, il suffit d'ajouter la
taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier
ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les
donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas
d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente
(probablement pas a moins d'avoir fait un "compactage" de la base et de ne
plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
.
?Lo»Paris?
Jinroh [MOS MI] wrote:
Bonsoir
Une pseudo astuce assez nulle consisterait à exporter la table dans une base vide... hum.... c'est tout ce que j'ai trouvé
-----Message d'origine----- Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" tech.com> a écrit dans le message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
.
Bonjour Daniel,
Voici un extrait d'un de mes code, à toi de l'adapter à tes besion :
================================================== Private Function fn_TailleTables() As Byte On Error GoTo ERR_TaTbl Const ERR_proc As String = "fn_TailleTables" Const FS_fld As String = "FieldSize" '// Memo et BinaryLong Const S_fld As String = "Size" '// Autres
Dim oRstTmp As DAO.Recordset Dim oFld As DAO.Field Dim lTailT As Long '// Taille de la table. Dim snTailT As Single '// Idem, mais pour l'affichage(2 déc). Dim lTailE As Long '// Taille de l'enregistrement. Dim lNbEnrg As Long '// Nombre d'enregistrements. Dim sTbl As String Dim sSql As String Dim IDTbl As Long Dim flgCal As String '// Indique si un champ mémo, OLE, ou texte.
'// Barre de progression. moRstObjTbl.MoveLast moRstObjTbl.MoveFirst giIncPrb = moRstObjTbl.RecordCount If giIncPrb <> 0 Then giIncPrb = 2000 / (giIncPrb + 1) giLonPrb = giIncPrb End If
'// On boucle sur les tables et les champs... Do Until moRstObjTbl.EOF flgCal = 0 sTbl = moRstObjTbl![sNomT] IDTbl = moRstObjTbl![IDObjT]
Set oRstTmp = CurrentDb().OpenRecordset(sTbl, dbOpenSnapshot)
'// Parcour la table. With oRstTmp If .RecordCount <> 0 Then .MoveLast .MoveFirst End If lNbEnrg = .RecordCount
'// Parcours les champs de la table, Taille d'un enregistrement. For Each oFld In .Fields If (oFld.Type = dbMemo Or oFld.Type = dbLongBinary) Then '// OLE ou texte ? If lNbEnrg <> 0 Then lTailE = lTailE + oFld.Properties(FS_fld) End If Else lTailE = lTailE + oFld.Properties(S_fld) End If Next oFld
'// Parcour les enregistrements, Taille réelle de la table. Do Until .EOF For Each oFld In .Fields Select Case oFld.Type Case dbMemo, dbLongBinary lTailT = lTailT + oFld.Properties(FS_fld) flgCal = 1 Case dbText lTailT = lTailT + (Len(Nz(.Fields(oFld.Name).Value))) flgCal = 1 Case Else lTailT = lTailT + oFld.Properties(S_fld) End Select Next oFld '// Pas de champ Mémo, OLE ou texte, calcule la taille, '// et passe à la table suivante. If flgCal = 0 Then lTailT = lTailT * lNbEnrg Exit Do End If '// Enregistrement suivant. .MoveNext flgCal = 0 Loop End With
oRstTmp.Close
snTailT = CSng(lTailT) snTailT = snTailT / 1024
If fn_StockTaille(IDTbl, lNbEnrg, lTailE, snTailT) = 0 Then '// |---> Exit Do End If
'// Barre de progression. giLonPrb = giLonPrb + giIncPrb If giLonPrb > 2000 Then giLonPrb = 2000 glblPrb.Width = giLonPrb gfrmPrg.Repaint
Loop
moRstObjTbl.Close fn_TailleTables = 1 Set oRstTmp = Nothing Set oFld = Nothing Set moRstObjTbl = Nothing
SORTIE_TaTbl: Exit Function ERR_TaTbl: MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, _ ERR_mdl & " - " & ERR_proc Resume SORTIE_TaTbl End Function =================================================== Note moRstObjTbl est un objet DAO.Recordset
Salutations
-- °Laurent°
Jinroh [MOS MI] wrote:
Bonsoir
Une pseudo astuce assez nulle consisterait à exporter la
table dans une base vide... hum.... c'est tout ce que j'ai
trouvé
-----Message d'origine-----
Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée,
comment que c'est-y qu'il va compter les octets le monsieur ? on est
toujours mieux dans l'ignorance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" <danielc@NO_SPAM_PLEASE.computing- tech.com> a
écrit dans le message de
news:%231P4mQleEHA.708@TK2MSFTNGP09.phx.gbl...
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est
pas difficile de la calculer. Pour une table donnee, il suffit
d'ajouter la taille des champs (que l'on trouve dans l'aide en
ligne), et de multiplier ca par le nombre d'enregistrements.
Ne vous attendez toutefois pas a avoir un resultat exact: Jet
stocke les donnees en pages de 2kOctets, un nouvel enregistrement
ne chevauchera pas d'une page a l'autre.
De plus, les donnees peuvent n'etre pas stockees de facon adjacente
(probablement pas a moins d'avoir fait un "compactage" de la base
et de ne plus y avoir touche).
Pourquoi vous est-il necessaire de connaitre le volume des tables?
--
Daniel :-)
.
Bonjour Daniel,
Voici un extrait d'un de mes code, à toi de l'adapter à tes besion :
================================================== Private Function fn_TailleTables() As Byte
On Error GoTo ERR_TaTbl
Const ERR_proc As String = "fn_TailleTables"
Const FS_fld As String = "FieldSize" '// Memo et BinaryLong
Const S_fld As String = "Size" '// Autres
Dim oRstTmp As DAO.Recordset
Dim oFld As DAO.Field
Dim lTailT As Long '// Taille de la table.
Dim snTailT As Single '// Idem, mais pour l'affichage(2 déc).
Dim lTailE As Long '// Taille de l'enregistrement.
Dim lNbEnrg As Long '// Nombre d'enregistrements.
Dim sTbl As String
Dim sSql As String
Dim IDTbl As Long
Dim flgCal As String '// Indique si un champ mémo, OLE, ou
texte.
'// Barre de progression.
moRstObjTbl.MoveLast
moRstObjTbl.MoveFirst
giIncPrb = moRstObjTbl.RecordCount
If giIncPrb <> 0 Then
giIncPrb = 2000 / (giIncPrb + 1)
giLonPrb = giIncPrb
End If
'// On boucle sur les tables et les champs...
Do Until moRstObjTbl.EOF
flgCal = 0
sTbl = moRstObjTbl![sNomT]
IDTbl = moRstObjTbl![IDObjT]
Set oRstTmp = CurrentDb().OpenRecordset(sTbl, dbOpenSnapshot)
'// Parcour la table.
With oRstTmp
If .RecordCount <> 0 Then
.MoveLast
.MoveFirst
End If
lNbEnrg = .RecordCount
'// Parcours les champs de la table, Taille d'un enregistrement.
For Each oFld In .Fields
If (oFld.Type = dbMemo Or oFld.Type = dbLongBinary) Then '// OLE
ou texte ?
If lNbEnrg <> 0 Then
lTailE = lTailE + oFld.Properties(FS_fld)
End If
Else
lTailE = lTailE + oFld.Properties(S_fld)
End If
Next oFld
'// Parcour les enregistrements, Taille réelle de la table.
Do Until .EOF
For Each oFld In .Fields
Select Case oFld.Type
Case dbMemo, dbLongBinary
lTailT = lTailT + oFld.Properties(FS_fld)
flgCal = 1
Case dbText
lTailT = lTailT + (Len(Nz(.Fields(oFld.Name).Value)))
flgCal = 1
Case Else
lTailT = lTailT + oFld.Properties(S_fld)
End Select
Next oFld
'// Pas de champ Mémo, OLE ou texte, calcule la taille,
'// et passe à la table suivante.
If flgCal = 0 Then
lTailT = lTailT * lNbEnrg
Exit Do
End If
'// Enregistrement suivant.
.MoveNext
flgCal = 0
Loop
End With
oRstTmp.Close
snTailT = CSng(lTailT)
snTailT = snTailT / 1024
If fn_StockTaille(IDTbl, lNbEnrg, lTailE, snTailT) = 0 Then '// |--->
Exit Do
End If
Une pseudo astuce assez nulle consisterait à exporter la table dans une base vide... hum.... c'est tout ce que j'ai trouvé
-----Message d'origine----- Bonsoir daniel.
et si la table contient deux champs OLE et une image intégrée, comment que c'est-y qu'il va compter les octets le monsieur ? on est toujours mieux dans l'ignorance.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Daniel Carollo" tech.com> a écrit dans le message de news:%
Bonjour Patrick!
On ne peut pas avoir cette information directement, mais il n'est pas difficile de la calculer. Pour une table donnee, il suffit d'ajouter la taille des champs (que l'on trouve dans l'aide en ligne), et de multiplier ca par le nombre d'enregistrements. Ne vous attendez toutefois pas a avoir un resultat exact: Jet stocke les donnees en pages de 2kOctets, un nouvel enregistrement ne chevauchera pas d'une page a l'autre. De plus, les donnees peuvent n'etre pas stockees de facon adjacente (probablement pas a moins d'avoir fait un "compactage" de la base et de ne plus y avoir touche). Pourquoi vous est-il necessaire de connaitre le volume des tables?
-- Daniel :-)
.
Bonjour Daniel,
Voici un extrait d'un de mes code, à toi de l'adapter à tes besion :
================================================== Private Function fn_TailleTables() As Byte On Error GoTo ERR_TaTbl Const ERR_proc As String = "fn_TailleTables" Const FS_fld As String = "FieldSize" '// Memo et BinaryLong Const S_fld As String = "Size" '// Autres
Dim oRstTmp As DAO.Recordset Dim oFld As DAO.Field Dim lTailT As Long '// Taille de la table. Dim snTailT As Single '// Idem, mais pour l'affichage(2 déc). Dim lTailE As Long '// Taille de l'enregistrement. Dim lNbEnrg As Long '// Nombre d'enregistrements. Dim sTbl As String Dim sSql As String Dim IDTbl As Long Dim flgCal As String '// Indique si un champ mémo, OLE, ou texte.
'// Barre de progression. moRstObjTbl.MoveLast moRstObjTbl.MoveFirst giIncPrb = moRstObjTbl.RecordCount If giIncPrb <> 0 Then giIncPrb = 2000 / (giIncPrb + 1) giLonPrb = giIncPrb End If
'// On boucle sur les tables et les champs... Do Until moRstObjTbl.EOF flgCal = 0 sTbl = moRstObjTbl![sNomT] IDTbl = moRstObjTbl![IDObjT]
Set oRstTmp = CurrentDb().OpenRecordset(sTbl, dbOpenSnapshot)
'// Parcour la table. With oRstTmp If .RecordCount <> 0 Then .MoveLast .MoveFirst End If lNbEnrg = .RecordCount
'// Parcours les champs de la table, Taille d'un enregistrement. For Each oFld In .Fields If (oFld.Type = dbMemo Or oFld.Type = dbLongBinary) Then '// OLE ou texte ? If lNbEnrg <> 0 Then lTailE = lTailE + oFld.Properties(FS_fld) End If Else lTailE = lTailE + oFld.Properties(S_fld) End If Next oFld
'// Parcour les enregistrements, Taille réelle de la table. Do Until .EOF For Each oFld In .Fields Select Case oFld.Type Case dbMemo, dbLongBinary lTailT = lTailT + oFld.Properties(FS_fld) flgCal = 1 Case dbText lTailT = lTailT + (Len(Nz(.Fields(oFld.Name).Value))) flgCal = 1 Case Else lTailT = lTailT + oFld.Properties(S_fld) End Select Next oFld '// Pas de champ Mémo, OLE ou texte, calcule la taille, '// et passe à la table suivante. If flgCal = 0 Then lTailT = lTailT * lNbEnrg Exit Do End If '// Enregistrement suivant. .MoveNext flgCal = 0 Loop End With
oRstTmp.Close
snTailT = CSng(lTailT) snTailT = snTailT / 1024
If fn_StockTaille(IDTbl, lNbEnrg, lTailE, snTailT) = 0 Then '// |---> Exit Do End If