FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 934, dernière mise à jour : 23 octobre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- 18.5.1. Erreurs rencontrées avec le BDE (3)
- Comment obtenir les paramètres d'un alias BDE ?
- Comment obtenir la liste des alias du BDE ?
- Comment copier une table dans une autre ?
- Comment ajouter un index à une table ?
- Comment détecter que le BDE est installé ?
- Comment créer dynamiquement des alias BDE ?
- Comment exécuter une requête multibase ?
- Comment déployer manuellement le BDE ?
À partir du nom de l'alias, on peut interroger la fonction du BDE DbiGetDatabaseDesc qui permet d'obtenir le nom, le chemin et le type de base de données correspondant.
Exemple : Affichage des paramètres de l'alias DBDEMOS
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | uses BDE; function DetailAlias(Alias : String): DBDesc; var tStr: array[0..100] of char; Description: DBDesc; begin StrPLCopy(tStr, Alias, High(tStr)); DbiGetDatabaseDesc(tStr, @Description); result:= Description; end; procedure TMyForm.MyButtonClick(Sender: TObject); begin with DetailAlias('DBDEMOS') do begin Label1.Caption := StrPas(szName); Label2.Caption := StrPas(szPhyName); Label3.Caption := StrPas(szDbType); end; end; |
(Extrait de l'aide Delphi) La classe TSession permet de gérer un groupe de connexions de base de données dans une application. Il existe trois types d'utilisation de TSession : standard, fichiers réseau multiples pour Paradox, et dans les applications de base de données multithreads. Pour toutes les applications de base de données, Delphi crée automatiquement un composant par défaut de type TSession, nommé Session, d'accès global. Le composant session par défaut gère les connexions avec les bases de données standards. Une application peut contrôler la session par défaut en accédant à l'exécution à ses propriétés, méthodes et évènements.
Pour obtenir la liste des alias, il suffit d'utiliser la méthode GetAliasNames de l'objet Session.
Exemple :
Code delphi : | Sélectionner tout |
1 2 3 4 | procedure TMyForm.MyButtonClick(Sender: TObject); begin Session.GetAliasNames(MyListBox.Items); end; |
Le composant TBatchMove de la palette BDE permet de copier ou mettre à jour une table en fonction d'une autre très facilement.
La propriété Source permet de définir la table d'origine des données. La source doit être descendant de BDEDataSet.
La propriété Destination permet de sélectionner la table de destination. Ce doit être un composant TTable.
Il faut aussi fixer la propriété Mode permettant de définir la fonction du BatchMove (copie, mise à jour, etc.). Voir l'aide en ligne pour plus de détails.
Dans le cas d'une BatchMove ne copie pas les index. Il faut recréer les index sur la table de destination après la copie.
Cette méthode ne s'applique pas à toutes les types de tables ouvertes via le BDE.
Il suffit d'utiliser la méthode AddIndex du composant TTable afin de créer un index sur la table. La table ne doit pas être ouverte par ailleurs pour que la procédure fonctionne.
Par exemple pour créer un index primaire sur une table Paradox :
Code delphi : | Sélectionner tout |
Table1.AddIndex('','C2;C1;C3',[ixPrimary]);
Code delphi : | Sélectionner tout |
Table1.AddIndex('UnIndex','C2;C3',[]);
Avant tout, il faut inclure l'unité BDE, car elle comprend les constantes et des fonctions qui seront utilisées dans le code. En particulier la constante DBIERR_NONE et la fonction DBiInit.
Code delphi : | Sélectionner tout |
1 2 3 4 5 | procedure TForm1.Button1Click(Sender: TObject); begin if (dbiInit(nil) = DBIERR_NONE) then ShowMessage('BDE installed!') else ShowMessage('BDE not installed'); end; |
Pour ce qui est de la création des alias BDE, il faut recourir à l'une des méthodes AddAlias ou AddStandardAlias de l'objet TSession. La seconde méthode étant spécialisée pour la création d'alias Paradox, DBase et ASCII.
Le code de création dynamique d'un alias pour base Paradox aura la forme :
Code delphi : | Sélectionner tout |
Session.AddStandardAlias('TempPCalepin', 'C:\DataBase\Mon Calepin', 'Paradox');
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | procedure TForm1.CreateAliasClick(Sender: TObject); var Session : TSession; List : TStringList; begin Session := TSession.Create(nil); List := TStringList.Create; List.Add('SERVER NAME = C:\DataBase\employee.gdb'); // Par exemple List.Add('USER NAME = SYSDBA'); List.Add('PASSWORD = masterkey'); Session.AutoSessionName := true; //Pour éviter des conflits de nom de session Session.Open; try Session.AddAlias('EmployeeAlias','INTRBASE',List); Session.SaveConfigFile; Session.Close; finally List.Free; Session.Free; end; end; |
Uniquement avec le BDE. Pour le faire, il faut précéder chaque nom de table dans la requête SQL par l'alias de la base encadrée de deux points :
Code sql : | Sélectionner tout |
1 2 3 4 5 | SELECT Employee.CustNo, Clients.OrderNo FROM ":AliasBase2:Employee" JOIN ":AliasBase1:Clients" ON (Customer.CustNo = Orders.CustNo) WHERE ..... |
Dans le répertoire du BDE (Program Files\Fichiers Communs\Borland Shared\BDE) vous trouverez le fichier BDEINST.CAB; il faut ensuite extraire BDEINST.DLL qui se trouve dans cette archive et l'enregistrer dans la base de registre de la machine cliente en utilisant Regsvr32.exe (qui se trouve dans le répertoire \Windows\System32).
En ligne de commande, tapez :
Code delphi : | Sélectionner tout |
regsvr32 BDEINST.DLL
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.