OVH Cloud OVH Cloud

Toujours pour l'alchivage

4 réponses
Avatar
Thierry Fox
Pas encore trouvé le truc... merci

Base :
J'espère que tu ne souhaite pas placer toutes les données dans un table...
Réponse :
Eu !! j'aimerai bien , ça pose un(des) problème(s) ?? Parce que la liste
c'est bien quoique c'est un début mais les fichiers c'est mieux...

Merci...

--
http://users.skynet.be/mpfa/
"3stone" <3stone@skynet.be> a écrit dans le message de
news:%23nTiJ8IbDHA.2932@tk2msftngp13.phx.gbl...
> Salut,
>
> Thierry Fox
> > Peut-on archivé un dossiers et entrer toutes les données d'un dossiers
> > (Fichier Word, Excel, .tiff, .jpg et autres ) dans une tables (J'en
doutes),
> > ou un autre procédé pour archiver tous ses élément par apport à un N° de
> > dossiers dans un applications Access. Bien sur il faut ressortir le tout
en
> > visualisation-impression, ce sont des archives...
>
>
> J'espère que tu ne souhaite pas placer toutes les données dans un
table...
>
> Mais, pour y mémoriser la liste des fichiers contenus dans un
répertoire...
> regarde ici : http://access.jessy.free.fr/htm/File/FileExistDir.htm
>
>
>
> --
> A+
> Pierre (3stone) Access MVP
> --------------------------------------
> Une pour tous, tous pour une ;-)
> http://users.skynet.be/mpfa/
> --------------------------------------
>
>
>



--
http://users.skynet.be/mpfa/



--
http://users.skynet.be/mpfa/



--
http://users.skynet.be/mpfa/

4 réponses

Avatar
Raymond
Bonjour.

Tiens le monstre du lock ness.

Allons y pour une petite idée.
Malgré que cette gestion documentaire ne soit pas du ressort pur d'Access il
est possible de la gérer par vba. Il est également impensable de faire
saisir des informations par un opérateur car le dossier sera enterré avant
de commencer.
Il faut une table de référence pour chaque dossier car il faudra que le
document quel qu'il soit porte cette référence dans son nom de fichier.
toute référence à un document n'existera pas dans Access.
un répertoire racine avec des sous-répertoires hiérarchisés abriteront les
documents du style:

racine - images indépendantes
racine - courrier Word - images
racine - classeurs- images
racine - présentations
etc........

un formulaire avec un contrôle treeview peut très bien présenter tous les
documents d'un dossier dans la même hiérarchie que sur le disque en
utilisant les propriétés des documents pour la description. Un double click
lancera automatiquement l'application adéquat au document sélectionné.
bien entendu, la recherche d'un dossier complet pourra demander un certain
temps.

c'est un début.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Thierry Fox" a écrit dans le message de
news:%
Pas encore trouvé le truc... merci

Base :
J'espère que tu ne souhaite pas placer toutes les données dans un table...
Réponse :
Eu !! j'aimerai bien , ça pose un(des) problème(s) ?? Parce que la liste
c'est bien quoique c'est un début mais les fichiers c'est mieux...

Merci...


Avatar
Logipro
Bonjour Thierry,

Voici un module que j'utilise pour ajouter des fichiers de n'importe quel
type dans une table.
La table "tblBinFiles" dans cet exemple va comme suit :
Champs : BinFile > Mémo (contient en binaire le fichier)
FileName > Texte, longueur 255 (Nom du document sans le
chemin)

Si tu à des question n'hésite pas !

Robert Simard
Logipro


'// **************** Dans un module *************************************
Option Compare Database
Option Explicit

Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal
nBufferLength As Long, ByVal lpBuffer As String) As Long
Public Const MAX_PATH = 260
Const BlockSize = 32768


Public Function ReadBLOB(Source As String, T As Recordset, sField
As String)
Dim NumBlocks As Integer, SourceFile As Integer, i As Integer
Dim FileLength As Long, LeftOver As Long
Dim FileData As String
Dim RetVal As Variant

On Error GoTo Err_ReadBLOB

' Open the source file.
SourceFile = FreeFile
Open Source For Binary Access Read As SourceFile

' Get the length of the file.
FileLength = LOF(SourceFile)
If FileLength = 0 Then
ReadBLOB = 0
Exit Function
End If

' Calculate the number of blocks to read and leftover bytes.
NumBlocks = FileLength BlockSize
LeftOver = FileLength Mod BlockSize

' SysCmd is used to manipulate status bar meter.
RetVal = SysCmd(acSysCmdInitMeter, "Reading BLOB", _
FileLength 1000)

' Put the record in edit mode.
' T.Edit

' Read the leftover data, writing it to the table.
FileData = String$(LeftOver, 32)
Get SourceFile, , FileData
T(sField).AppendChunk (FileData)

RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000)

' Read the remaining blocks of data, writing them to the table.
FileData = String$(BlockSize, 32)
For i = 1 To NumBlocks
Get SourceFile, , FileData
T(sField).AppendChunk (FileData)

RetVal = SysCmd(acSysCmdUpdateMeter, BlockSize * i / 1000)
Next i

' Update the record and terminate function.
' T.Update
RetVal = SysCmd(acSysCmdRemoveMeter)
Close SourceFile
ReadBLOB = FileLength
Exit Function

Err_ReadBLOB:
ReadBLOB = -Err
Exit Function

End Function

Function WriteBLOB(T As Recordset, sField As String, Destination
As String)
Dim NumBlocks As Integer, DestFile As Integer, i As Integer
Dim FileLength As Long, LeftOver As Long
Dim FileData As String
Dim RetVal As Variant

On Error GoTo Err_WriteBLOB

' Get the size of the field.
FileLength = T(sField).FieldSize()
If FileLength = 0 Then
WriteBLOB = 0
Exit Function
End If

' Calculate number of blocks to write and leftover bytes.
NumBlocks = FileLength BlockSize
LeftOver = FileLength Mod BlockSize

' Remove any existing destination file.
DestFile = FreeFile
Open Destination For Output As DestFile
Close DestFile

' Open the destination file.
Open Destination For Binary As DestFile

' SysCmd is used to manipulate the status bar meter.
RetVal = SysCmd(acSysCmdInitMeter, _
"Writing BLOB", FileLength / 1000)

' Write the leftover data to the output file.
FileData = T(sField).GetChunk(0, LeftOver)
Put DestFile, , FileData

' Update the status bar meter.
RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000)

' Write the remaining blocks of data to the output file.
For i = 1 To NumBlocks
' Reads a chunk and writes it to output file.
FileData = T(sField).GetChunk((i - 1) * BlockSize _
+ LeftOver, BlockSize)
Put DestFile, , FileData

RetVal = SysCmd(acSysCmdUpdateMeter, _
((i - 1) * BlockSize + LeftOver) / 1000)
Next i

' Terminates function
RetVal = SysCmd(acSysCmdRemoveMeter)
Close DestFile
WriteBLOB = FileLength
Exit Function

Err_WriteBLOB:
WriteBLOB = -Err
Exit Function

End Function

Public Sub SaveBinFilesToMDB(PathFiles As String)
Dim db As Database
Dim rstBin As Recordset

' Open the BLOB table.
Set db = DBEngine.Workspaces(0).OpenDatabase(Path())
Set rstBin = db.OpenRecordset("tblBinFiles", dbOpenTable)

' Create a new record and move to it.
With rstBin
.AddNew
Call ReadBLOB(PathFiles, rstBin, "BinFile")
!fileName = Dir(PathFiles)
!LienMessagerie = "TEMPO"
.Update
End With

rstBin.Close
db.Close

End Sub

Public Sub RestoreAndOpenBinFiles(CLE As Long)
Dim db As Database
Dim rstBin As Recordset

' Open the BLOB table.
Set db = CurrentDb()
Set rstBin = db.OpenRecordset("SELECT BinFile, FileName FROM tblBinFiles IN
'" & Path() & "' WHERE ((([Compteur])=" & CLE & "))")

If rstBin.RecordCount > 0 Then
Call WriteBLOB(rstBin, "BinFile", GetTmpPath & rstBin!fileName)
Call RunShellExecute("Open", GetTmpPath & rstBin!fileName, 0&, 0&,
SW_SHOWNORMAL)
End If

rstBin.Close
db.Close
End Sub

Public Function GetTmpPath() As String
Dim strFolder As String
Dim lngResult As Long

strFolder = String(MAX_PATH, 0)
lngResult = GetTempPath(MAX_PATH, strFolder)

If lngResult <> 0 Then
GetTmpPath = Left(strFolder, InStr(strFolder, Chr(0)) - 1)
Else
GetTmpPath = ""
End If

End Function

Public Function RetIfAttachFiles(cptMSG As Long) As String
'retoure si un message comprend de(s) fichier(s) attaché(s)
Dim db As Database
Dim rstAttach As Recordset

Set db = DBEngine.Workspaces(0).OpenDatabase(Path())
Set rstAttach = db.OpenRecordset("select * from tblBinFiles where
LienMessagerie='" & cptMSG & "'")

If rstAttach.RecordCount > 0 Then
RetIfAttachFiles = "*"
Else
RetIfAttachFiles = ""
End If

rstAttach.Close
db.Close
End Function
Avatar
Thierry Fox
Heu !! J'ai pas tout compris mais c'est un début...

Merci pour ton aide.

Ps : Ou j'ai la mémoire courte ou tu te trompe de monstre !!??, remarque il
est plutôt sympat dans la pub!

--
http://users.skynet.be/mpfa/
"Raymond" a écrit dans le message de
news:%
Bonjour.

Tiens le monstre du lock ness.

Allons y pour une petite idée.
Malgré que cette gestion documentaire ne soit pas du ressort pur d'Access
il

est possible de la gérer par vba. Il est également impensable de faire
saisir des informations par un opérateur car le dossier sera enterré avant
de commencer.
Il faut une table de référence pour chaque dossier car il faudra que le
document quel qu'il soit porte cette référence dans son nom de fichier.
toute référence à un document n'existera pas dans Access.
un répertoire racine avec des sous-répertoires hiérarchisés abriteront les
documents du style:

racine - images indépendantes
racine - courrier Word - images
racine - classeurs- images
racine - présentations
etc........

un formulaire avec un contrôle treeview peut très bien présenter tous les
documents d'un dossier dans la même hiérarchie que sur le disque en
utilisant les propriétés des documents pour la description. Un double
click

lancera automatiquement l'application adéquat au document sélectionné.
bien entendu, la recherche d'un dossier complet pourra demander un
certain

temps.

c'est un début.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Thierry Fox" a écrit dans le message de
news:%
Pas encore trouvé le truc... merci

Base :
J'espère que tu ne souhaite pas placer toutes les données dans un
table...


Réponse :
Eu !! j'aimerai bien , ça pose un(des) problème(s) ?? Parce que la liste
c'est bien quoique c'est un début mais les fichiers c'est mieux...

Merci...





Avatar
Thierry Fox
Ben j'en aurais certainement ....

Merci de ton aide

Thierry
--
http://users.skynet.be/mpfa/
"Logipro" a écrit dans le message de
news:eCo3b.5125$
Bonjour Thierry,

Voici un module que j'utilise pour ajouter des fichiers de n'importe quel
type dans une table.
La table "tblBinFiles" dans cet exemple va comme suit :
Champs : BinFile > Mémo (contient en binaire le fichier)
FileName > Texte, longueur 255 (Nom du document sans le
chemin)

Si tu à des question n'hésite pas !

Robert Simard
Logipro


'// **************** Dans un module *************************************
Option Compare Database
Option Explicit

Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal
nBufferLength As Long, ByVal lpBuffer As String) As Long
Public Const MAX_PATH = 260
Const BlockSize = 32768


Public Function ReadBLOB(Source As String, T As Recordset,
sField

As String)
Dim NumBlocks As Integer, SourceFile As Integer, i As Integer
Dim FileLength As Long, LeftOver As Long
Dim FileData As String
Dim RetVal As Variant

On Error GoTo Err_ReadBLOB

' Open the source file.
SourceFile = FreeFile
Open Source For Binary Access Read As SourceFile

' Get the length of the file.
FileLength = LOF(SourceFile)
If FileLength = 0 Then
ReadBLOB = 0
Exit Function
End If

' Calculate the number of blocks to read and leftover bytes.
NumBlocks = FileLength BlockSize
LeftOver = FileLength Mod BlockSize

' SysCmd is used to manipulate status bar meter.
RetVal = SysCmd(acSysCmdInitMeter, "Reading BLOB", _
FileLength 1000)

' Put the record in edit mode.
' T.Edit

' Read the leftover data, writing it to the table.
FileData = String$(LeftOver, 32)
Get SourceFile, , FileData
T(sField).AppendChunk (FileData)

RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000)

' Read the remaining blocks of data, writing them to the table.
FileData = String$(BlockSize, 32)
For i = 1 To NumBlocks
Get SourceFile, , FileData
T(sField).AppendChunk (FileData)

RetVal = SysCmd(acSysCmdUpdateMeter, BlockSize * i / 1000)
Next i

' Update the record and terminate function.
' T.Update
RetVal = SysCmd(acSysCmdRemoveMeter)
Close SourceFile
ReadBLOB = FileLength
Exit Function

Err_ReadBLOB:
ReadBLOB = -Err
Exit Function

End Function

Function WriteBLOB(T As Recordset, sField As String, Destination
As String)
Dim NumBlocks As Integer, DestFile As Integer, i As Integer
Dim FileLength As Long, LeftOver As Long
Dim FileData As String
Dim RetVal As Variant

On Error GoTo Err_WriteBLOB

' Get the size of the field.
FileLength = T(sField).FieldSize()
If FileLength = 0 Then
WriteBLOB = 0
Exit Function
End If

' Calculate number of blocks to write and leftover bytes.
NumBlocks = FileLength BlockSize
LeftOver = FileLength Mod BlockSize

' Remove any existing destination file.
DestFile = FreeFile
Open Destination For Output As DestFile
Close DestFile

' Open the destination file.
Open Destination For Binary As DestFile

' SysCmd is used to manipulate the status bar meter.
RetVal = SysCmd(acSysCmdInitMeter, _
"Writing BLOB", FileLength / 1000)

' Write the leftover data to the output file.
FileData = T(sField).GetChunk(0, LeftOver)
Put DestFile, , FileData

' Update the status bar meter.
RetVal = SysCmd(acSysCmdUpdateMeter, LeftOver / 1000)

' Write the remaining blocks of data to the output file.
For i = 1 To NumBlocks
' Reads a chunk and writes it to output file.
FileData = T(sField).GetChunk((i - 1) * BlockSize _
+ LeftOver, BlockSize)
Put DestFile, , FileData

RetVal = SysCmd(acSysCmdUpdateMeter, _
((i - 1) * BlockSize + LeftOver) / 1000)
Next i

' Terminates function
RetVal = SysCmd(acSysCmdRemoveMeter)
Close DestFile
WriteBLOB = FileLength
Exit Function

Err_WriteBLOB:
WriteBLOB = -Err
Exit Function

End Function

Public Sub SaveBinFilesToMDB(PathFiles As String)
Dim db As Database
Dim rstBin As Recordset

' Open the BLOB table.
Set db = DBEngine.Workspaces(0).OpenDatabase(Path())
Set rstBin = db.OpenRecordset("tblBinFiles", dbOpenTable)

' Create a new record and move to it.
With rstBin
.AddNew
Call ReadBLOB(PathFiles, rstBin, "BinFile")
!fileName = Dir(PathFiles)
!LienMessagerie = "TEMPO"
.Update
End With

rstBin.Close
db.Close

End Sub

Public Sub RestoreAndOpenBinFiles(CLE As Long)
Dim db As Database
Dim rstBin As Recordset

' Open the BLOB table.
Set db = CurrentDb()
Set rstBin = db.OpenRecordset("SELECT BinFile, FileName FROM tblBinFiles
IN

'" & Path() & "' WHERE ((([Compteur])=" & CLE & "))")

If rstBin.RecordCount > 0 Then
Call WriteBLOB(rstBin, "BinFile", GetTmpPath & rstBin!fileName)
Call RunShellExecute("Open", GetTmpPath & rstBin!fileName, 0&, 0&,
SW_SHOWNORMAL)
End If

rstBin.Close
db.Close
End Sub

Public Function GetTmpPath() As String
Dim strFolder As String
Dim lngResult As Long

strFolder = String(MAX_PATH, 0)
lngResult = GetTempPath(MAX_PATH, strFolder)

If lngResult <> 0 Then
GetTmpPath = Left(strFolder, InStr(strFolder, Chr(0)) - 1)
Else
GetTmpPath = ""
End If

End Function

Public Function RetIfAttachFiles(cptMSG As Long) As String
'retoure si un message comprend de(s) fichier(s) attaché(s)
Dim db As Database
Dim rstAttach As Recordset

Set db = DBEngine.Workspaces(0).OpenDatabase(Path())
Set rstAttach = db.OpenRecordset("select * from tblBinFiles where
LienMessagerie='" & cptMSG & "'")

If rstAttach.RecordCount > 0 Then
RetIfAttachFiles = "*"
Else
RetIfAttachFiles = ""
End If

rstAttach.Close
db.Close
End Function