Alors normalement, tu as un DataModule sur lequel tu as mis un TDataBase avec l'alias correspondant au BDE (AliasName) ou le Dossier contenant les Fichiers .DB (Directory), et tes tables utilisent comme DataBaseName celui renseigné dans le TDataBase
Donc tu vas créer deux TDataBase, l'un sur les tables qui reste d'année en année (disons Objet DBPersistentData avec le Dossier S:\Appli\PersistentData), un autre TDataBase sur un répertoire qui change chaque année (Objet YearData avec les dossiers S:\Appli\YearData2007, S:\Appli\YearData2008, ...).
Tu as aussi un troisième répertoire contenant des fichiers .DB vide pour la structure (on peut faire plus subtile mais bon), que l'on va appelé EmptyYearData (S:\Appli\EmptyYearData), ces fichiers sont en lecture seules
S: étant un disque réseau par exemple sur un Serveur dédié (cela est une autre histoire voir sur le forum Paradox, multi-utilisateur, Samba, ... sinon cela sera C:\Appli\...)
Pour PersistentData, tu peux renseigner l'alias ou le répertoire directement en Delphi
Pour YearData, tu dois le remplir dans le OnCreate du DataModule, genre
DBYearData.Directory := Format('S:\Appli\YearData%s', [FormatDateTime('YYYY', Now()]);
tu as un répertoire EmptyData
Tu fais donc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| if not DirectoryExists(DBYearData.Directory) then
begin
ForceDirectories(DBYearData.Directory);
// Copie des fichiers Vierges
EmptyDataRootDir := 'C:\Appli\EmptyYearData\';
try
if FindFirst(EmptyDataRootDir + (*.*), faAnyFile - faDirectory, SearchItem ) = 0 then begin
repeat
if CopyFile( PChar(EmptyDataRootDir + SearchItem.Name), PChar(DBYearData.Directory + '\' + SearchItem.Name), True ) then
SetFileAttributes( DBYearData.Directory + '\' + SearchItem.Name), FILE_ATTRIBUTE_NORMAL);
until not ( FindNext(SearchItem) = 0 ); // Continuer tant que FindNext renvoi 0
end;
finally
FindClose(SearchItem);
end;
end; |
Voilà, dès que tu lance l'appli, cela vérifie l'année, et créer les ficheirs pour la nouvelle année automatiquement ...
Partager