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 :

[Débutant] Aide sur les BD et conseils


Sujet :

Bases de données Delphi

  1. #1
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut [Débutant] Aide sur les BD et conseils
    Hello

    Je débute dans l'attaque de base de données avec Delphi, et j'aurai besoin d'une confirmation sur ce que je pense avoir compris après avoir lu plusieurs docs et tutoriels!

    Voilà ce que j'ai retenu :

    1. Pour pouvoir attaquer une base de données avec Delphi, il faut tout d'abord faire le choix des composants que l'on va utiliser selon la base de données que l'on doit attaquer. Suite de composants :
    • dbExpress
    • BDE
    • Interbase
    • ADO
    (liste certainement non-exhaustive !)

    2. Une fois le choix effectuer, on doit travailler avec les composants suivant :
    • Un composant Connection : Celui-ci va servir à se connecter au SGDB
    • Un composant DataSet : Permettant de gérer les résultats des requêtes (par exemple tous les enregistrements retourné par une requête SELECT)
    • Un composant DataSource : Ce composant va permettre le lien entre un DataSet et le composant visuel permettant l'affichage des données
    • Un composant Visuel (TDBGrid par exemple) : Permet de faire tout ce qui touche au DML.
    Jusqu'ici ... Tout juste

    Pour ce qui est de mon application :
    • SGBD : Tout et n'importe quoi ! Principalement MS SQL Server, Interbase et Oracle.
    • Architecture : Base de données distante
    • Spécification software : Delphi 7 Entreprise, Systèmes Windows XP
    D'après ces spécifications, j'ai fait les choix suivants :
    • Suite de composants : ADO (Car cela me permet d'attaquer n'importe quel base de données)
    • J'aurai donc besoin de : TADOConnection, TADODataSet, TDataSource et comme composant visuel j'aimerai une grille, j'hésite encore entre TDBGrid et SMDBGrid.
    Est-ce que je suis dans le juste avec tout ça J'avoue que je rame pas mal ...
    J'espère qu'il est bien clair pour vous que je vous demande pas de faire le design de mon applic, mais plutôt de m'aider en me guidant !

    Merci d'avance pour vos remarques !

    [EDIT]
    J'oubliais ! Il est préférable de regrouper les composants non visuels relatifs aux BD dans un DataModule !
    Question : Est-ce bien de mettre également tous les autres composants non visuels tels que des clients FTP, TCP, Timers dans ce DataModule ?
    [/EDIT]
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    vu l'architecture et les BDD ton choix me semble le +juste
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je te conseil d'utiliser les composants spécifiques plutot que le TAdoDataSet
    Tu as besoin de faire une requete -> TAdoQuery
    Tu as besoin d'utiliser une procédure stockée -> TAdoStoredProc
    etc...

    Ca sera plus simple pour toi et surtout pour les personnes qui viennent derriere toi pour comprendre le programme.

    Sinon pour le reste c'est correct.

    Pour ta question sur le DataModule, il vaut mieux que tu ne mettes que les composants bases de données.

    Les timers et autres sont très bien sur les forms qui l'utiliseront.
    Mais rien ne t'empèche de créer plusieurs DataModule :
    1 pour la base de données
    1 pour les composants commun aux forms (ImageList,Timer, etc ...)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Ok merci pour ces conseils

    Pour l'instant, j'ai commencé par me connecter à une base Interbase (j'ai l'impression que j'ai commencé par le logique et facile ).
    Pour utiliser ADO, j'ai installé les drivers ODBC proposé dans la FAQ. Car c'est bien la façon de se connecter à Interbase avec ADO ?

    Il y a quelque chose que je ne comprends pas : Après avoir effectué l'installation du driver, j'ai ajouté une source de données utilisateurs dans 'l'Administrateur ODBC'. Et là, j'ai du remplir un DNS et donner une base de données ... Pourquoi dois-je donner déjà là ma base ... ? Je dois ajouter une source de données pour chaque base à laquelle je voudrais me connecter ? Je suis pas sortie de l'auberge si je doit faire ça sur chaque poste où mon application va tourner ...

    Et puis je suis assez perturbé par l'utilisation de tous ces composants que j'ai cités dans mon premier post ... ! J'ai l'habitude de travailler avec simplement une phase de connexion, l'envoie d'une requête puis la récupération des résultats dans un tableau ... Ensuite, je fais ce que je veux de mon tableau : par exemple remplir une grille avec une simple boucle ... Seulement là, avec tous les liens que je doit faire entre l'ADOConnection -> ADOQuery -> DataSource -> DBGrid, je suis predu ... !

    Puis-je faire simplement comme ceci :
    • Configurer ma connection (avec un ADOConnection apparement)
    • Effectuer une requête (avec un ADOQuery je suppose)
    • Afficher le résultat de ma requête sous forme de grille dans le cas d'un SELECT (DBGrid ? StringGrid ?)
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par femtosa
    Pour l'instant, j'ai commencé par me connecter à une base Interbase (j'ai l'impression que j'ai commencé par le logique et facile ).
    Pour utiliser ADO, j'ai installé les drivers ODBC proposé dans la FAQ. Car c'est bien la façon de se connecter à Interbase avec ADO ?

    Il y a quelque chose que je ne comprends pas : Après avoir effectué l'installation du driver, j'ai ajouté une source de données utilisateurs dans 'l'Administrateur ODBC'. Et là, j'ai du remplir un DNS et donner une base de données ... Pourquoi dois-je donner déjà là ma base ... ? Je dois ajouter une source de données pour chaque base à laquelle je voudrais me connecter ? Je suis pas sortie de l'auberge si je doit faire ça sur chaque poste où mon application va tourner ...
    L'utilisation de composants BD avec ODBC nécessite :
    1- L'installation des drivers ODBC sur le poste client
    2- La configuration de la source de données ODBC
    3- La configuration des composants bases de données.

    Pour 1, tu n'as pas le choix, si le drivers n'existe pas tu dois l'installer ^^
    Pour 2 et 3, cherches dans la , il y a un exemple de création par programme d'une source de données ODBC.

    Citation Envoyé par femtosa
    Et puis je suis assez perturbé par l'utilisation de tous ces composants que j'ai cités dans mon premier post ... ! J'ai l'habitude de travailler avec simplement une phase de connexion, l'envoie d'une requête puis la récupération des résultats dans un tableau ... Ensuite, je fais ce que je veux de mon tableau : par exemple remplir une grille avec une simple boucle ... Seulement là, avec tous les liens que je doit faire entre l'ADOConnection -> ADOQuery -> DataSource -> DBGrid, je suis predu ... !

    Puis-je faire simplement comme ceci :
    • Configurer ma connection (avec un ADOConnection apparement)
    • Effectuer une requête (avec un ADOQuery je suppose)
    • Afficher le résultat de ma requête sous forme de grille dans le cas d'un SELECT (DBGrid ? StringGrid ?)
    Si ton DataSource est connecté au TAdoQuery et si le DbGrid est connecté au DataSource.
    Si tu actives ton AdoQuery (avec une requete select valide bien sur), ca t'affichera automatiquement le résultat dans la DBGrid (pas besoin de remplir les lignes manuellement ^^).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par Malatar
    L'utilisation de composants BD avec ODBC nécessite :
    1- ...
    2- ...
    3- ...

    Pour 1, tu n'as pas le choix, si le drivers n'existe pas tu dois l'installer ^^
    Pour 2 et 3, cherches dans la , il y a un exemple de création par programme d'une source de données ODBC.
    Pour le 1 c'est normal ! Pour le 2 et 3, je vais aller faire un tour dans la FAQ, merci c'est tip top !
    Citation Envoyé par Malatar
    Si ton DataSource est connecté au TAdoQuery et si le DbGrid est connecté au DataSource.
    Si tu actives ton AdoQuery (avec une requete select valide bien sur), ca t'affichera automatiquement le résultat dans la DBGrid (pas besoin de remplir les lignes manuellement ^^).
    Ca rentre gentillement tout ça ! Merci de ton aide !

    J'aimerai faire ça par code, j'ai placé tout sur mon DataModule, mais à chaque fois que j'essai d'accéder à mes composants (MonDataModule.MonComposant) ça me fait une access violation ... Ca vient d'où ? Mes composants ne sont pas déclarés/instanciés ? Pourtant dans mon DataModule, j'ai une variable déclarée de type de mon module, et je passe par elle ... !

    Et si j'ai des champs provenant de plusieurs table à afficher dans une DBGrid (typiquement une jointure par clé étrangère) comment je peut faire pour lier tout ça ... Parce que j'aimerai bien pouvoir entrer une information dans une case de ma DBGrid, puis faire une requête et afficher le résultat dans la case à coté sur la même ligne de mon DBGrid ...
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  7. #7
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    L'un des pièges classiques dans lequel on tombe lorsqu'on utilise un DataModule, est que celui-ci est créé après la fiche qui le sollicite. D'où la violation d'accès.

    Va dans les options du projet et vérifie l'ordre dans lequel sont créés ton DataModule et tes fiches, et assure-toi que le DataModule est créé en 1°.

    @+ Claudius

  8. #8
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Exactly

    J'utilisais mon DataModule dans le FormCreate de ma fiche !

    Merci !

    Ca commence à se mettre en place dans ma tête !

    Encore une chose : Peut-on combiné des informations que j'entre moi-même par code et des résultat d'une requête dans un DBGrid ?

    Concrètement, j'ai toujours 32 lignes (donc la première colonne doit comporter la numérotation de 1 à 32). La seconde colonne doit comporter le résultat d'une requête (toujours le même champ) selon une information entrée par l'utilisateur dans troisième colonne !

    J'essaie de faire ça en créant des colonnes dans ma DBGrid dans le design de ma fiche ... Mais je coince ... !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

Discussions similaires

  1. [Débutant] Aide sur les statiques.
    Par méphistopheles dans le forum C++
    Réponses: 2
    Dernier message: 24/05/2007, 08h38
  2. aide sur les fonctions (débutant)
    Par tregont dans le forum Débuter
    Réponses: 4
    Dernier message: 22/01/2006, 21h03
  3. [Débutant] besoin d'aide sur les web services
    Par Diangelita dans le forum Services Web
    Réponses: 3
    Dernier message: 20/01/2006, 08h41
  4. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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