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...
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...
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...
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...
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" <thierry_555@libertysurf.fr> a écrit dans le message de
news:%237gHJ2WbDHA.1644@TK2MSFTNGP10.phx.gbl...
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...
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...
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
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
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