begin process at 2010 02 10 10:54:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Bases de données

 > 

problème d'initialisation du BDE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème d'initialisation du BDE

mardi 1 novembre 2005 à 21:56:58 | problème d'initialisation du BDE

kmoul

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  
mardi 1 novembre 2005 à 22:19:12 | Re : help

Delphiprog

Administrateur CodeS-SourceS
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.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
[ Lien ]
dimanche 18 décembre 2005 à 10:49:48 | Re : problème d'initialisation du BDE

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
dimanche 18 décembre 2005 à 19:36:51 | Re : problème d'initialisation du BDE

Delphiprog

Administrateur CodeS-SourceS
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.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
dimanche 18 décembre 2005 à 20:24:40 | Re : problème d'initialisation du BDE

MFDev

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
mercredi 6 décembre 2006 à 21:19:25 | Re : problème d'initialisation du BDE

elmilia

salut....
utiliser les etape suivent :
- démarée
- Panneau de configuration
- options régionales et linguistiques

- options avancées

- sélectionnez une lanque "remplacer la langue arab par français "

jeudi 17 janvier 2008 à 16:36:26 | Re : problème d'initialisation du BDE

ffert


Il y a une façon trés simple d'installer BDE

va dans Program Files\Fichiers Communs\Borland Shared\BDE et dézippe le fichier BDEINST.CAB
ensuite exécute cette commande

regsvr32.exe BDEINST.DLL

Fabien FERT
http://ffert.free.fr
vendredi 18 janvier 2008 à 08:09:04 | Re : problème d'initialisation du BDE

MFDev

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 - Delphi 7 Pro
lundi 30 novembre 2009 à 12:52:10 | Re : problème d'initialisation du BDE

defluc

Hello Delphistes

Je reviens sur cet ancien post parce que je trouve intéressante la solution de MFDev.

Voilà pour un petit tour, cela paraît compliqué, mais il faut essayer...


Ce que j'ai fait.
Mais la compilation provoque une erreur parce que les variables csBDEDir, csBDEDirFormat et csBDEDirDriver ne sont pas déclarée.

D'où viennent ces variables ?


Merci de faire avancer le Schmilblick en éclairant cette imprécision.

defluc
lundi 30 novembre 2009 à 17:16:50 | Re : problème d'initialisation du BDE

MFDev

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

En finalité, cela doit donner dans la Bdr:


REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Borland\Database Engine]
"DLLPATH"="chemin réso\\Bde"
"CONFIGFILE01"="chemin réso\\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"
...



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

Bon dév...
@+
MFDev - Delphi 2009 Pro

1 2

Cette discussion est classée dans : problème, initialisation, bde


Répondre à ce message

Sujets en rapport avec ce message

bde et version personnelle [ par jarv ] Bonjour !Pour mon problème de lecture de fichier dbf, on me conseille d'utiliser bde 5.2 mais j'ai eu beau chercher pas de bde sur ma version de delp Problème de selection d'une liste pour une autre requette avec BDE [ par webident ] Bonjour,Voila mon problème, j'ai une basse de donner INFORMIX et j'emploie BDE, jusque la pas de problème sauf que pour une requette j'ai besoin de se Problème de BDE [ par atrebate62 ] Bonjour,J'ai un programme développé en Delphi3 fonctionnant avec le BDE, et j'ai fait un programme d'installation avec InstallShield.Sous W95/98 l'ins BDE : problèmes d'initialisation [ par kmoul ] j'ai toujours un problèmes avec delphi 5 en xp; le module de bse de données ne peut pas etre initialisé. y' a-t-il une solution. merci BDE et Instance SQL Server [ par Yaul ] Bonjour,J'ai le problème suivant lors de la tentative de connexion sur une instance de SQL Server 2000 en utilisant le BDE (Je sais que c'est une viel Thread avec TTimer [ par Kevinvin ] Bonjours, je remarquer une chose qui me dérange. J'ai creer un thread (avec class(TThread) ). Je met a l'interieur de ce thread un TTimer. Lorsque je Problème de localisation d'une incohérence [ par Bacterius ] Bonsoir, alors voilà, je prépare un petit composant (pas grand chose, mais c'est une surprise) pour le site, mais j'ai un petit problème. Il utilise Erreur à la fermeture [ par goimard ] Bonjour,J'ai systématiquement une erreur à la fermeture de mon application. cela ne devrait pas être trop dur à trouver en théorie, le problème c'est Rapidité d'access aux données [ par jeje2 ] Bonjour,Je développe une interface avec delphi qui récupère des données d'une base SQL server 2005 express.Sur un formulaire j'ai 2 DBGrid et quelques Découpe d'un 'objet 3D' sous GLScene [ par Champy33 ] Bonjour à tous et à toutesJe me suis lancé dans la fabrication bénévole d'un logiciel qui servira à faire des plans de meubles au sein de l'associatio


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales