
MFDev
|
Salut Pour déployer le BDE, sans install, trés simple (je l'utilise depuis des années, même en réseau): 1) créer un dossier BDE par exemple: D:\monApplic D:\monApplic\BDE D:\monApplic\MesBases
2) copier les fichiers suivant, en respectant les recommandations Borland: 3.2 BDE Redistributable Files ----------------------------- When creating the installation program for a BDE-using application, Borland-certified installation programs allow selection of only those BDE files that can be redistributed. So the ability to select a given file is indication that the particular file can legally be redistributed.
BDE files that may be redistributed with an application include those listed below. Not all files are included in the BDE for all Borland programming tools. Not all files are required for any given installation (see "3.3 Partial BDE Installs").
Core BDE Files -------------- IDASCI32.DLL For accessing ASCII files IDBAT32.DLL For batch movement of data IDDA3532.DLL For accessing Microsoft Access databases IDDAO32.DLL For accessing Microsoft Access databases IDDBAS32.DLL For accessing dBASE databases IDDR32.DLL For Data Repository (Paradox only) IDODBC32.DLL For BDE access to ODBC drivers IDPDX32.DLL For accessing Paradox databases IDQBE32.DLL QBE query engine IDR20009.DLL BDE resources IDAPI32.DLL Main BDE system DLL IDSQL32.DLL SQL query engine (including local SQL)
Language Driver Files --------------------- BANTAM.DLL Internationalization engine *.CVB Character set conversion files *.BTL Locales BLW32.DLL Expression engine
Files for Microsoft Transaction Server (MTS) -------------------------------------------- DISP.DLL MTS dispensor DLL DISP.PAK
Auxiliary Tools/Utilities ------------------------- BDEADMIN.* BDE Administrator utility DATAPUMP.* Data Pump data migration tool 3) Rajouter Idapi32.cfg (gestion des params / alias de tables) 4) Modifier la BdR avec un .REG ou par Delphi: -> par un fichier Reg: (par ex, chemin défini par D:\\MonApplic\\BDE) REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine] * "DLLPATH"="D:\\MonApplic\\Bde" * "CONFIGFILE01"="D:\\MonApplic\\Bde\\IDAPI32.CFG" "SaveConfig"="WIN32" "UseCount"="3" "RESOURCE"="0009"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System]
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System\INIT] "VERSION"="3.0" "LOCAL SHARE"="FALSE" "MINBUFSIZE"="512" "MAXBUFSIZE"="4096" "LANGDRIVER"="intl" "MAXFILEHANDLES"="48" "SYSFLAGS"="0" "LOW MEMORY USAGE LIMIT"="64" "AUTO ODBC"="FALSE" "DEFAULT DRIVER"="PARADOX" "SHAREDMEMSIZE"="4096" "SHAREDMEMLOCATION"="" "DATA REPOSITORY"="" "MEMSIZE"="32" "SQLQRYMODE"="" "MTS POOLING"="FALSE"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System\FORMATS]
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System\FORMATS\DATE] "SEPARATOR"="/" "MODE"="1" "FOURDIGITYEAR"="TRUE" "YEARBIASED"="FALSE" "LEADINGZEROM"="TRUE" "LEADINGZEROD"="TRUE"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System\FORMATS\TIME] "TWELVEHOUR"="FALSE" "AMSTRING"="AM" "PMSTRING"="PM" "SECONDS"="TRUE" "MILSECONDS"="FALSE"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\System\FORMATS\NUMBER] "DECIMALSEPARATOR"="," "THOUSANDSEPARATOR"="." "DECIMALDIGITS"="2" "LEADINGZERON"="TRUE"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\DRIVERS]
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\DRIVERS\PARADOX]
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\DRIVERS\PARADOX\INIT] * "NET DIR"="D:\\MonApplic\\BDE" "VERSION"="3.0" "TYPE"="FILE" "LANGDRIVER"="intl"
[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\DRIVERS\PARADOX\TABLE CREATE] "LEVEL"="4" "BLOCK SIZE"="4096" "FILL FACTOR"="95" "STRICTINTEGRTY"="TRUE"
-> Ou par Prog: // écrire une chaine dans la BdR: function bEcrireStringReg(const csRoot, csClef, csSection: string; sValeur: string): boolean; var Reg: TRegistry; begin // ex bEcrireString('\Clef', 'Section', sValeurChaine) // par défaut, csRoot = HKU Result := false; Reg := TRegistry.Create; TRY if csRoot = 'HKLM' then Reg.RootKey := HKEY_LOCAL_MACHINE; // true pour la créer si elle n'existe pas if Reg.OpenKey(csClef, true) then begin Reg.WriteString(csSection, sValeur); Result := true; end; FINALLY Reg.CloseKey; Reg.Free; END; end; // créer le chemin du fichier .net
function CreateNetDir(Session: TSession; sDirBde: string): boolean;
begin
Session.NetFiledir := sDirBde; //sNetDir;
Result := true;
end;
// Init du BDE: function BDEInit(sDirBDE: string): boolean; begin CreateNetDir(Session, sDirBDE); // function au dessus TRY bEcrireStringReg('', csBDEDir, 'DLLPATH', sDirBDE); bEcrireStringReg('', csBDEDir, 'CONFIGFILE01', sDirBDE + '\IDAPI32.CFG'); bEcrireStringReg('', csBDEDir, 'SAVECONFIG', 'WIN31'); bEcrireStringReg('', csBDEDir, 'UseCount', '1'); bEcrireStringReg('', csBDEDir, 'RESOURCE', '000C'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'LOCAL SHARE', 'FALSE'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'VERSION', '3.0'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'MINBUFSIZE', '512'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'MAXBUFSIZE', '4096'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'LANGDRIVER', 'intl'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'MAXFILEHANDLES', '48'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'SYSFLAGS', '0'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'LOW MEMORY USAGE LIMIT', '64'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'AUTO ODBC', 'FALSE'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'DEFAULT DRIVER', 'PARADOX'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'SHAREDMEMSIZE', '4096'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'SHAREDMEMLOCATION', ''); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'DATA REPOSITORY', ''); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'MEMSIZE', '32'); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'SQLQRYMODE', ''); bEcrireStringReg('', csBDEDirFormat + '\INIT', 'MTS POOLING', 'FALSE');
bEcrireStringReg('', csBDEDirFormat + '\DATE', 'MTS POOLING', 'FALSE'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'SEPARATOR', '/'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'MODE', '1'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'FOURDIGITYEAR', 'TRUE'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'YEARBIASED', 'FALSE'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'LEADINGZEROM', 'TRUE'); bEcrireStringReg('', csBDEDirFormat + '\DATE', 'LEADINGZEROD', 'TRUE');
bEcrireStringReg('', csBDEDirFormat + '\TIME', 'TWELVEHOUR', 'FALSE'); bEcrireStringReg('', csBDEDirFormat + '\TIME', 'AMSTRING', 'AM'); bEcrireStringReg('', csBDEDirFormat + '\TIME', 'PMSTRING', 'PM'); bEcrireStringReg('', csBDEDirFormat + '\TIME', 'SECONDS', 'TRUE'); bEcrireStringReg('', csBDEDirFormat + '\TIME', 'MILSECONDS', 'FALSE');
bEcrireStringReg('', csBDEDirFormat + '\NUMBER', 'DECIMALSEPARATOR', '.'); bEcrireStringReg('', csBDEDirFormat + '\NUMBER', 'THOUSANDSEPARATOR', '.'); bEcrireStringReg('', csBDEDirFormat + '\NUMBER', 'DECIMALDIGITS', '2'); bEcrireStringReg('', csBDEDirFormat + '\NUMBER', 'LEADINGZERON', 'TRUE');
bEcrireStringReg('', csBDEDirDriver + '\INIT', 'NET DIR', sDirBDE); bEcrireStringReg('', csBDEDirDriver + '\INIT', 'VERSION', '3.0'); bEcrireStringReg('', csBDEDirDriver + '\INIT', 'TYPE', 'FILE'); bEcrireStringReg('', csBDEDirDriver + '\INIT', 'LANGDRIVER', 'intl');
bEcrireStringReg('', csBDEDirDriver + '\TABLE CREATE', 'LEVEL', '4'); bEcrireStringReg('', csBDEDirDriver + '\TABLE CREATE', 'BLOCK SIZE', '4096'); bEcrireStringReg('', csBDEDirDriver + '\TABLE CREATE', 'FILL FACTOR', '95'); bEcrireStringReg('', csBDEDirDriver + '\TABLE CREATE', 'STRICTINTEGRTY', 'TRUE'); Result := true; EXCEPT Result := false; END; end;
// Pour tester si BDE existe: function BDEExist: boolean; var Reg: TRegistry; sFileIdapi: string; begin Result := false; Reg := TRegistry.Create; with Reg do begin RootKey := HKEY_LOCAL_MACHINE; OpenKey('SOFTWARE\Borland\Database Engine', False); TRY sFileIdapi := ReadString('CONFIGFILE01'); // BDE installed if sFileIdapi <> '' then begin if FileExists(sFileIdapi) then Result := true; end; FINALLY CloseKey; END; end; // with end;
Avec Delphi, on peut aussi créer les Allias des tables à la volée... // recherche de l'alias, le crée éventuellement, recherche des tables existantes function ChercheAliasTable(Session: TSession; csTableName, csAlias, csTypeTable: string; var sDirBDE: string): boolean; // TSession fournit par la session en cours // csTableName: le nom de la table (ex table.db) // csAlmias: des bases de données (ex: MesTables) // sDirBDE: retour du chemin du BDE function CreeAlias(const sAlias: string): string; begin with Session do begin ConfigMode := cmAll; Result := sChercheBD(csTableName); if Result = #0 then begin ShowMessagePos('Installation incomplète, manque les bases de données !', 100, 100); Exit; end; // if AddStandardAlias(csAlias, Result, csTypeTable); // crée en memoire le nouvel Alias SaveConfigFile; end; // with end;
var bCreate: boolean; AParams: TStringList; sDir, sDirBd: string; begin Result := false; bCreate := false; with Session do begin if not IsAlias(csAlias) then begin // 1ère création, cherche BD sDir := CreeAlias(csAlias); if sDir = #0 then Exit; bCreate := true; end; // if if not Assigned(AParams) then begin AParams := TStringList.Create; TRY // Actualiser les paramètres de l'alias pour le BDE Session.GetAliasParams(csAlias, AParams); sDirBd := Copy(AParams.Strings[0], 6, 255); if not FileExists(sDirBd + '\' + csTableName) then begin // Alias pas bon, on le crée DeleteAlias(csAlias); SaveConfigFile; AParams.Clear; sDir := CreeAlias(csAlias); bCreate := true; end; // if AParams.Clear; if bCreate then begin AParams.Add('PATH=' + sDir); sBDDir := sDir; // pour mémo end else begin AParams.Add('PATH=' + sDirBd); sBDDir := sDir; end; ModifyAlias(csAlias, AParams); SaveConfigFile; Result := true; FINALLY AParams.Free; END; end; if not CreateNetDir(Session, sDirBDE) then Result := false; end; // with end;
Voilà pour un petit tour, cela paraît compliqué, mais il faut essayer... @+ Fabrice
MFDev - Delphi 7 Pro
|