IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Erreur BDE avec mon soft


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Par défaut Erreur BDE avec mon soft
    Salut,
    J'ai fais un soft avec Delphi 7, et kan je l'installe sur un autre Pc ki n'a pas Delphi l'exe ne trouve la base de donnée access. Ce ki est normal car l'administrateur BDE n'est pas installer dans le panneau de configuration.

    Voici le msg d'erreur ke j'obtiens à l'exécution de mon soft: Erreur pendant l'initialisation de Borland database engine $2109.

    : Mais ma kestion est la suivante: comment faire pour inclure dans mon install afin de l'installer en même tps ke l'installation de mon soft.

    Merci.

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Le plus simple est d'utiliser InstallShield qui est fourni avec Delphi, et de demander l'install du BDE dans la partie merge module (si mes souvenirs sont bons).

    Il y surement d'autres solutions, mais celle-ci est surement la plus simple !
    @+

  3. #3
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Par défaut Erreur BDE avec mon soft
    Merci pour ta solution, mais mon problème est ke je ne maitriz pas l'uitlisation de l'installshield de delphi 7.

    Alors je fais mes install avec Inno Setup. Mais si tu peux me donner in lien d'un tuto de Delphi 7 en farnçais de préference alors je serai

    A bientot.

  4. #4
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Salut,
    Une autre solution, que j'utilise, et à mon avis plus simple.
    Je crée l'arborescence de l'installation, par exemple:
    Dir Install
    | - Dir Exe
    | - Dir Bases
    | - Dir DBD
    Je compresse tout cela, dans un rar (ou zip).
    Pour les fichiers Redistribuables du BDE, voir:
    bdedeploy.txt (dans le répertoire du BDE)
    Les fichiers BDE qui peuvent être redistribués avec une application sont ceux listés ci-dessous. Tous les fichiers ne sont pas inclus dans le BDE pour tous les outils de programmation Borland. Tous les fichiers ne
    sont pas nécessaires pour chaque installation donnée (voir "3.3 Installations BDE partielles").

    Fichiers du noyau du BDE
    -------------------------------
    IDASCI32.DLL Pour accéder aux fichiers ASCII
    IDBAT32.DLL Pour le mouvement batch de données
    IDDA3532.DLL Pour accéder aux bases de données Microsoft Access
    IDDAO32.DLL Pour accéder aux bases de données Microsoft Access
    IDDBAS32.DLL Pour accéder aux bases de données dBASE
    IDDR32.DLL Pour le référentiel de données (Paradox uniquement)
    IDODBC32.DLL Pour l'accès BDE aux pilotes ODBC
    IDPDX32.DLL Pour accéder aux bases de données Paradox
    IDQBE32.DLL Moteur de requête QBE
    IDR2000C.DLL Ressources BDE
    IDAPI32.DLL DLL système BDE principale
    IDSQL32.DLL Moteur de requête SQL (y compris SQL local)

    Fichiers de pilote de langue
    ---------------------------------
    BANTAM.DLL Moteur d'internationalisation
    *.CVB Fichiers de conversion de jeu de caractères
    *.BTL Langues
    BLW32.DLL Moteur d'expression

    Fichiers pour Microsoft Transaction Server (MTS)
    -------------------------------------------------------------
    DISP.DLL MTS Dispensor DLL
    DISP.PAK

    Outils/Utilitaires auxiliaires
    --------------------------------
    BDEADMIN.* Utilitaires d'administrateur BDE
    DATAPUMP.* Outils de migration de données Data Pump

    REMARQUE : Pour les fichiers transmisibles de SQL Links, voir la section "4.2 Fichiers transmissibles SQL Links"
    Lors de l'installation, je décompresse en respectant mon arborescence de l'archive (en fait, j'installe comme cela m'intéresse, voir ci-dessous pourquoi...).
    Quand je lance l'EXE, celui ci :
    - initialise le BDE, si besoin
    - initialise les alias de table, si besoin.
    Je t'ai adapté mon unité d'init du BDE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
     
    // MFDev - 03/2006 - v0.8
    // Gestion du BDE
    UNIT BdeInit;
     
    INTERFACE
     uses
    	SysUtils, StrUtils, Dialogs, Forms, Registry, Windows, Classes, DbTables;
     
    	function Test_BDE(sDirEXE: string; Table: TTable): boolean;
     
    IMPLEMENTATION
     const
    	csBDEDir = 'SOFTWARE\Borland\Database Engine';  // HKLM
    	csBDEDirFormat = 'Software\Borland\Database Engine\Settings\System\FORMATS';
    	csBDEDirDriver = 'Software\Borland\Database Engine\Settings\DRIVERS\PARADOX';
    	csNetDir = 'NET DIR';
    	csCfg = 'IDAPI32.CFG';
    	csHKU = 'HKU';
     
    // write Key in Registry
    function bWriteStringReg(const csRoot, csClef, csSection: string; sValeur: string): boolean;
     var
    	Reg: TRegistry;
     begin
    // ex: bEcrireString('\Demarrage', 'Tranche', sChaine)
    	Result := false;
    	Reg := TRegistry.Create;
    	TRY
    		if csRoot <> csHKU 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;
     
    // Exist BDE in Registry
    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;
    					// force NetDir = Dir BDE
    					sFileIdapi := ReadString('DLLPATH');
    					bWriteStringReg('', csBDEDirDriver + '\INIT', csNetDir, sFileIdapi);
    			end;
    		FINALLY
    			CloseKey;
    			Free;
    		END;
    	end;  // with
     end;
     
    // Init Registry
    function BDE_Init(sDir: string): boolean;
     begin
    	Session.NetFiledir := sDir;	// sNetDir;
    	TRY
    		bWriteStringReg('', csBDEDir, 'DLLPATH', sDir);
    		bWriteStringReg('', csBDEDir, 'CONFIGFILE01', sDir + '\' + csCfg);
    		bWriteStringReg('', csBDEDir, 'SAVECONFIG', 'WIN31');
    		bWriteStringReg('', csBDEDir, 'UseCount', '1');
    		bWriteStringReg('', csBDEDir, 'RESOURCE', '000C');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'LOCAL SHARE', 'FALSE');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'VERSION', '3.0');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'MINBUFSIZE', '512');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'MAXBUFSIZE', '4096');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'LANGDRIVER', 'intl');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'MAXFILEHANDLES', '48');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'SYSFLAGS', '0');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'LOW MEMORY USAGE LIMIT', '64');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'AUTO ODBC', 'FALSE');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'DEFAULT DRIVER', 'PARADOX');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'SHAREDMEMSIZE', '4096');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'SHAREDMEMLOCATION', '');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'DATA REPOSITORY', '');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'MEMSIZE', '32');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'SQLQRYMODE', '');
    		bWriteStringReg('', csBDEDirFormat + '\INIT', 'MTS POOLING', 'FALSE');
     
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'MTS POOLING', 'FALSE');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'SEPARATOR', '/');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'MODE', '1');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'FOURDIGITYEAR', 'TRUE');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'YEARBIASED', 'FALSE');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'LEADINGZEROM', 'TRUE');
    		bWriteStringReg('', csBDEDirFormat + '\DATE', 'LEADINGZEROD', 'TRUE');
     
    		bWriteStringReg('', csBDEDirFormat + '\TIME', 'TWELVEHOUR', 'FALSE');
    		bWriteStringReg('', csBDEDirFormat + '\TIME', 'AMSTRING', 'AM');
    		bWriteStringReg('', csBDEDirFormat + '\TIME', 'PMSTRING', 'PM');
    		bWriteStringReg('', csBDEDirFormat + '\TIME', 'SECONDS', 'TRUE');
    		bWriteStringReg('', csBDEDirFormat + '\TIME', 'MILSECONDS', 'FALSE');
     
    		bWriteStringReg('', csBDEDirFormat + '\NUMBER', 'DECIMALSEPARATOR', '.');
    		bWriteStringReg('', csBDEDirFormat + '\NUMBER', 'THOUSANDSEPARATOR', '.');
    		bWriteStringReg('', csBDEDirFormat + '\NUMBER', 'DECIMALDIGITS', '2');
    		bWriteStringReg('', csBDEDirFormat + '\NUMBER', 'LEADINGZERON', 'TRUE');
     
    		bWriteStringReg('', csBDEDirDriver + '\INIT', csNetDir, sDir);
    		bWriteStringReg('', csBDEDirDriver + '\INIT', 'VERSION', '3.0');
    		bWriteStringReg('', csBDEDirDriver + '\INIT', 'TYPE', 'FILE');
    		bWriteStringReg('', csBDEDirDriver + '\INIT', 'LANGDRIVER', 'intl');
     
    		bWriteStringReg('', csBDEDirDriver + '\TABLE CREATE', 'LEVEL', '4');
    		bWriteStringReg('', csBDEDirDriver + '\TABLE CREATE', 'BLOCK SIZE', '4096');
    		bWriteStringReg('', csBDEDirDriver + '\TABLE CREATE', 'FILL FACTOR', '95');
    		bWriteStringReg('', csBDEDirDriver + '\TABLE CREATE', 'STRICTINTEGRTY', 'TRUE');
    		Result := true;
    	EXCEPT
    		Result := false;
    	END;
     end;
     
    // Install BDE Default
    // disk:
    //  \
    //  |
    //  Dir x
    //   |
    //   |- Rep EXE
    //   |- Rep BDE
    function VerifBDE(const sDirExe, sAlias: string): boolean;
     var
    	i: integer;
    	sDirBde: string;
    	Opendialog: TOpenDialog;
     begin
    	Result := false;
    	if not BDEExist then begin
    		if Length(sDirExe) > 3 then begin
    			for i := Length(sDirEXE) - 1 downto 1 do begin
    				if Copy(sDirEXE, i, 1) <> '\' then
    					Continue;
    				sDirBde := Copy(sDirEXE, 1, i);	// rep -1
    				Break;
    			end;
    		end
    		else
    			sDirBde := sDirExe;
    		sDirBde := sDirBde + 'DBD\';
    		TRY
    			ChDir(sDirBde);
    		EXCEPT
    			on E:EInOutError do begin
    				ShowMessage('STOP: Moteur de bases de données non trouvé. Définir le chemin...');
    				OpenDialog := TOpenDialog.Create(nil);
    				with OpenDialog do begin
    					InitialDir := sDirExe;
    					Filter := ' Fichiers config BDE|' + csCfg;
    					Title := 'Sélectionner le Fichier Config du BDE: ' + csCfg;
    					if OpenDialog.Execute then begin
    						sDirBde := FileName;
    						OpenDialog.Free;
    						// Extrait Dir BDE
    						i := PosEx('\', sDirBde, Length(sDirBde) - Length(csCfg) - 1);
    						if i > 3 then
    							sDirBde := Copy(sDirBde, 1, i);	// rep BDE
    					end
    					else begin
    						OpenDialog.Free;
    						Exit;
    					end;
    				end;	// with
    			end;	// on
    		END;
    		TRY
    			ChDir(sDirBde);
    		EXCEPT
    			on E:EInOutError do
    				Exit;
    		END;
    		if IOResult = 0 then	// Dir existe
    			sDirBde := GetCurrentDir;
    		if not FileExists(sDirBde + '\' + csCfg) then begin
    			// a priori BDE inexistant
    			ShowMessage('STOP: Moteur de bases de données non trouvé. L''application ne peut continuer...');
    			Exit;
    		end;
    		// BDE trouvé, màj Base de Registre
    		if BDE_Init(sDirBde) then // init Dir BDE
    			ShowMessage('Moteur de Base de Données inialisé ...');
    		ChDir(sDirEXE);	// restore Dir demarrage EXE
    	end;	// if
    	Result := true;
     end;
    // Test BDE Registry
    function BDE_Exist: boolean;
     var
    	Reg: TRegistry;
    	sFileIdapi: string;
     begin
    	Result := false;
    	Reg := TRegistry.Create;
    	with Reg do begin
    		RootKey := HKEY_LOCAL_MACHINE;
    		OpenKey(csBDEDir, false);
    		TRY
    			sFileIdapi := ReadString('CONFIGFILE01');
    			// BDE installed
    			if sFileIdapi <> '' then begin
    				if FileExists(sFileIdapi) then
    					Result := true;
    					// force NetDir = Dir du BDE
    					sFileIdapi := ReadString('DLLPATH');
    					bWriteStringReg('', csBDEDirDriver + '\INIT', csNetDir, sFileIdapi);
    			end;
    		FINALLY
    			CloseKey;
    		END;
    	end;  // with
     end;
    // Test, clear, delete, create Alias
    function InitAlias(Session: TSession; csTypeTable: string; Table: TTable; var sBDDir: string): boolean;
     var
    	sAlias: string;
     begin
    	Result := false;
    	sAlias := Table.DatabaseName;	// Alias
    	with Session do begin
    		if IsAlias(sAlias) then begin	// Exist = delete
    			DeleteAlias(sAlias);
    			SaveConfigFile;
    		end;
    		ConfigMode := cmAll;
    		if not IsAlias(sAlias) then begin	// création
    			AddStandardAlias(sAlias, sBDDir, csTypeTable);	// crée en memoire le nouvel Alias
    		end;
    		SaveConfigFile;
    	end;	// with
    	TRY
    		// vérification
    		Table.Open;
    		Table.Close;
    		Result := true;
    	EXCEPT
    		on E:EDBEngineError do
    			if (E.Errors[0].ErrorCode = 11011) then begin
    				ShowMessage('Les bases de données n''existent pas dans <' + sAlias + '>. Application indisponible !');
    			end;
    	END;
     end;
     
    function Test_BDE(sDirEXE: string; Table: TTable): boolean;
     var
    	i: integer;
    	sBDDir: string;
    	Opendialog: TOpenDialog;
     begin
    	Result := false;
    	TRY
    		Table.Open;
    	EXCEPT
    		// vérif si BDE installé
    		if not VerifBDE(sDirExe, Table.DataBaseName) then begin
    			ShowMessage('Moteur Base de donnée non trouvé ... cela ne sert à rien de continuer !');
    			Exit;
    		end;
    	END;
    	sBDDir := sDirExe;
    	if not FileExists(sDirExe + Table.TableName) then begin
    		OpenDialog := TOpenDialog.Create(nil);
    		with OpenDialog do begin
    			InitialDir := sDirExe;
    			Filter := ' Fichiers Base de donnée|' + Table.TableName;
    			Title := 'Sélectionner la Base de donnée: ' + Table.TableName;
    			if OpenDialog.Execute then begin
    				sBDDir := FileName;
    				OpenDialog.Free;
    				i := PosEx('\', sBDDir, Length(sBDDir) - Length(Table.TableName) - 1);
    				if i > 3 then
    					sBDDir := Copy(sBDDir, 1, i);	// rep BDE
    			end
    			else begin
    				OpenDialog.Free;
    				ShowMessage('BD inaccessible. Terminé');
    				Exit;
    			end;
    		end;	// with
    	end;
    	ChDir(sBDDir);
    	sBDDir := GetCurrentDir;	// format standard
    	if not InitAlias(Session, 'PARADOX', Table, sBDDir) then begin
    		ShowMessage('Impossible de trouver les Bases de données ... cela ne sert à rien de continuer !');
    		Exit;
    	end;	// if
    	Result := true;
     end;
     
    END.
    Pour l'appel, c'est simple, dans mon EXE, lors du Create de la forme, je test le BDE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    IMPLEMENTATION
     uses
      BdeInit;
    ...
    procedure TForm1.FormCreate(Sender: TObject);
     var
      sDirEXE: string;
     begin
      sDirEXE := ExtractFilePath(Application.ExeName);
      if not Test_BDE(sDirEXE, Table1) then
        Halt;
      ...
     end;
    J'ai simplifié énormement le code de mon unité, qui ne sert pas qu'à cela. J'ai testé, c'est OK.
    Si problème, dis moi quoi...
    @+
    Fabrice

  5. #5
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Moi je fais encore autrement, tu auras le choix des armes comme ca

    Vu que souvent, le prog client est juste un raccourci de l'executable serveur, on pense pas toujours à installer le BDE.

    Dans ce cas,
    - je mets le prog install du BDE pas loin de mon executable (sous-dossier BDE).
    - LE programme, avant d'itinialiser la BD, vérifie si le BDE est installé.
    - si ce n'est pas le cas, il lance l'install du BDE du sous dossier BDE.
    - l'install démarre, et à la fin demande de redémarrer le prog. c'est fini

    Voila très simple en fait, pour le dév. et pour le user et c'est efficace.

    Par contre, l'install BDE, je l'ai synthétisée avec le minimum de message, il n'y en a qu'un je crois, le msg de confirmation d'install c'est tout, pour pas que ce soit compliqué pour le user

    Bon code !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    C'est une autre solution... mais que je n'utilise plus, car il reste le problème des Alias, NetDir
    Si les BD ne sont placées dans le dossier par défaut (de conception), il faut les redéfinir, ce que les Users ne savent pas forcement faire.
    La version de BdeInit que je fournis est une version light.
    Si mes applics ne trouvent pas le BDE et/ou les BD correspondantes à l'Alias, suivant le schéma de base, je propose, soit de les rechercher avec OpenDialog, soit une recherche automatique (sur tous les disques).
    Et en cas de réinstallation de Windows (à condition que l'applic ne soit pas sur C, l'applic réinitialise le BDE et les Alias, restore des index au besoin, définition de NetDir.
    C'est ce que j'aime bien avec le BDE, il est très souple, et très commode à gérer par le code Delphi.
    @+
    Fabrice

  7. #7
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Citation Envoyé par MFDev
    C'est une autre solution... mais que je n'utilise plus, car il reste le problème des Alias, NetDir
    Si les BD ne sont placées dans le dossier par défaut (de conception), il faut les redéfinir, ce que les Users ne savent pas forcement faire.
    Salut MFDev ,

    non non, rien à redefinir si ton prog définis tes alias en relatifs / à tes bases de manière dynamique. (heureusement sinon trop de boulot en déploiement)

    Quelque soit la position de ton prog+Datas, un raccourci et ca roule
    Quand au fichier de verrouillage réseau, pareil. C'est un paramétrage générale au niveau de l'appli.

    a++
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  8. #8
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    TicTacToe,
    Ben finalement, si j'ai bien compris, tu fais comme moi, à la différence de l'install...le principal est le résulat, et que cela soit transparent pour l'utilisateur final !
    @+
    Fabrice

  9. #9
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Absolument.

    D'ailleurs je crois que tu avais proposé ta solution et que cette discussion a déjà eu lieu !

    ici
    http://www.developpez.net/forums/vie...light=#2553689

    qui est c'est vrai très sympa, je n'ai pas eu l'occasion de l'essayer (les habitudes...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  10. #10
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    TicTacToe,
    C'est moi qui fait ca sur un réseau... j'avais donné la méthode dans un post.
    Dans le principe, c'est ce qu'on disait plus haut:
    Tu installes Exe + BDE sur le réseau (serveur).
    Ensuite lors du lancement de l'EXE, celui ci essaie d'ouvrir un table.
    Si erreur, on teste le BDE dans la BdR du poste user, si la BdR n'est pas initialisée, on va mettre en place les données dans la BdR (ce qui revient à initialiser le BDE, comme lors d'un install).
    J'ai 3 applics qui tournent comme cela et avec succès, et transparence totale !
    J'ai procédé comme cela, suite à 1 refus du S.I. de prendre en compte mes applics dans le profil des postes...
    @+
    Fabrice

  11. #11
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    lol

    Désolé, effectivement c'était toi !

    Et...
    J'ai modifié mon post pendant que tu crééais le tien visiblement.
    Le temps de la recherche sur le Forum.

    et je l'ai bien retrouvé


    a++
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  12. #12
    Membre expérimenté

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Lol
    En fait le temps de lire et répondre à d'autres post...
    Fabrice

  13. #13
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Hello Delphistes

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

    J'ai testé le code 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.

  14. #14
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Tu n'as pas tout copier, c'est dans son code juste apprè IMPLEMENTATION dans son unité BdeInit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    const
    	csBDEDir = 'SOFTWARE\Borland\Database Engine';  // HKLM
    	csBDEDirFormat = 'Software\Borland\Database Engine\Settings\System\FORMATS';
    	csBDEDirDriver ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Exact

    Ma distraction me perdra

  16. #16
    Invité1
    Invité(e)
    Par défaut
    Bonjour
    Pour installer le BDE avec innosetup tu as besoin de 2 fichiers que tu peux télécharger sur internet
    - BdeInst.dll
    - MiniReg.exe

    Dans ton fichier innosetup tu dois avoir ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    [Files]
    Source: "E:\generation d'executable\BdeInst.dll"; DestDir: "{tmp}"; Flags: ignoreversion
    Source: "E:\generation d'executable\MiniReg.exe"; DestDir: "{tmp}"; Flags: ignoreversion
     
    [Run]
    Filename: "{app}\Project1.exe"; Description: "{cm:LaunchProgram,Project}"; Flags: nowait postinstall skipifsilent
    Filename: "{tmp}\minireg.exe"; parameters:"""{tmp}\bdeinst.dll"""
    Bonne chance

  17. #17
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Salut, je connaissais l'installation avec BdeInst que j'exécutais sans problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Files]
    Source: "BdeInst.Dll"; DestDir: "{sys}";  Flags: onlyifdoesntexist regserver
    Mais je voulais une installation silencieuse.

    C'est la raison pour laquelle la solution de MFDev m'intéressait.

    Ceci dit, sa solution d'utilisation d'un autre moteur de base de données multi-user intégré à l'EXE me semble plus qu'intéressante à creuser, d'autant que le BDE commence à ne plus être suivi et à poser des problèmes de compatibilité, comme cela semble être le cas avec le dernières versions de Windows, Vista en tout cas. On verra avec Windows 7.

    Je vais donc expérimenter «Absolute database» que l'on peut télécharger surhttp://componentace.com/bde_replacem...e_database.htm

Discussions similaires

  1. erreur com avec mon composant vb.net
    Par TaymouWan dans le forum VB.NET
    Réponses: 6
    Dernier message: 08/04/2011, 14h15
  2. j'ai une erreur 1004 avec mon vba ?
    Par isodoro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2009, 10h13
  3. des messages d'erreurs avec mon code
    Par ulysse031 dans le forum Langage
    Réponses: 15
    Dernier message: 25/05/2007, 18h14
  4. Erreur avec mon isset ?
    Par Bne dans le forum Langage
    Réponses: 2
    Dernier message: 25/12/2006, 19h16
  5. PB BDE erreur 15879 avec oracle
    Par korntex5 dans le forum Oracle
    Réponses: 1
    Dernier message: 27/02/2006, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo