kmoul
Messages postés2Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention 8 février 2006
-
1 nov. 2005 à 21:56
cs_defluc
Messages postés23Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention22 février 2008
-
1 déc. 2009 à 14:22
j'ai un problème avec le module de base de donnée de delphi en windows xp. lorsque je le lance, un message d'erreur me dise qui'il y a un problème d'initialisation de bde. y'a t il une solution. merci
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 1 nov. 2005 à 22:19
Ce problème est récurrent.
Tu as tout simplement oublié d'installer le BDE sur la machine de
destination. Utilise InstallShield ou un équivalent certifié par
Borland pour installer le BDE correctement.
<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
MFDev
Messages postés4Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 novembre 2009 18 déc. 2005 à 10:49
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
-> 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;
// 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
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 18 déc. 2005 à 19:36
OK, mais si une autre version ou instance du BDE est déjà installée sur la machine de l'utilisateur, tu fais comment ?
C'est en cela que des logiciels comme InstallShield sont utiles car ils prennent en compte l'existant.
<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
MFDev
Messages postés4Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 novembre 2009 18 déc. 2005 à 20:24
Salut
Au lancement de mes applics, je vais tester l'existence du BDE avant l'ouverture d'une table... tout simplement:
_ recherche dans la BDR si BDE installé:
- > si oui, vérif si le dossier et le fichier Idapi32.cfg existent réellement...
-> si oui, pas de modif de l'existant, on vérifie juste les Alias.
-> si non, le signaler à l'utilisateur, pour définir le chemin ou proposer d'essayer de le trouver sur les disques.
et si inexistant , il faut le ré-installer, donc fin de l'application.
>> Bien sur je ne parle pas d'une 1ere intallation, cette méthode peut être utile en cas de ré-installation de Windows (si pas sur le disque C: évidemment).
Pour ma part, dans le cas d'une 1ere installation, avec InstallShield ou autre, il suffit de recenser le dossier du BDE avec l'application à installer, et au lancement de l'applic, celle ci initialise le BDE et les Alias requis.
En tout cas, je procède comme cela, et je n'ai jamais rencontré de problèmes.
@+
MFDev - Delphi 7 Pro
Vous n’avez pas trouvé la réponse que vous recherchez ?
MFDev
Messages postés4Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 novembre 2009 18 janv. 2008 à 08:09
La solution que je propose est trés souple, car cela est totalement transparent pour l'utilisateur.
On fait le test de la BdR, et du dossier du BDE.
En copiant l'arborescence du programme + du dossier Bde, au lancement du programme, on restore le Bde automatiquement, et on s'affranchit de la procédure via .cab trop lourde.
@+
Fabrice
MFDev
Messages postés4Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 novembre 2009 30 nov. 2009 à 17:16
Salut,
Hmm cela fait longtemps que je n'utilise plus le Bde...
Pour les constantes, c'était une façon de simplifier l'écriture des chaines...
csBDEDir, csBDEDirFormat et csBDEDirDriver dans:
function BDEInit(sDirBDE: string): boolean;
begin
CreateNetDir(Session, sDirBDE); // function au dessus
TRY
bEcrireStringReg('', csBDEDir, 'DLLPATH', sDirBDE);
Ce sont les déclarations du Bde dans la Bdr, de mémoire:
csBDEDir = Software\Borland\Database Engine
csBDEDirFormat = Software\Borland\Database Engine\Settings\System\FORMATS
csBDEDirDriver = Software\Borland\Database Engine\Settings\DRIVERS
J'ai commencé à avoir des problèmes avec le Bde avec Vista, donc j'ai essayé un autre moteur, et après de nombreux essais, j'ai fini par utiliser un moteur multi-user intégré à l'EXE:
Absolute DB