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 :

[Interbase] Je m'y perds dans les composants IBExpress...


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut [Interbase] Je m'y perds dans les composants IBExpress...
    [Interbase]
    Delphi 2005 Architect Trial

    Bonjour à tous,

    Je m'y perds dans les composants IBExpress...

    Parfois on doit utiliser IBTable, parfois IBQuery associé à un IBUpdateSql.

    Dans un tutoriel, on parle d'utiliser IBExpress, puis la fin du Tuto switch sur l'utilisation de DB express (http://hcesbronlavau.developpez.com/...6Relationnel/)

    Bref, je ne sais plus quoi utiliser. Quel est le meilleur composant selon les cas : mais pouvez-vous expliquer d'une manière générique.

    Enfin, je serais super heureux si quelqu'un pouvait me faire un petit tuto personnalisé et simple pour le projet de base simple qui suit, car je débute. Peut-être ça servira à d'autres.

    Que dois je faire pour ce cas d'école que je fais volontairement simple pour bien comprendre*:

    J'ai une base Interbase (ou Firebird). 2 tables : CLIENTS et FACTURES
    J'ai mis la clé primaire de CLIENTS en Foreign Key de FACTURES pour créer une relation maître/détail.
    J'ai la clé primaire de chaque table qui est un integer auto incrementé par un trigger et un générator pour chaque table.
    J'ai testé, ça fonctionne en interactif dans EMS IB Sql Manager.

    C'est dans delphi 2005 Trial que ça se complique :

    JE veux créer un DBGrid pour chaque table, et les lier en maître/détail.

    J'ai d'abord commencé avec des IBTable, mais pas moyen de trouver dans l'explorateur d'objet le "Generator Field" qui va si bien dans IBUpdateSql.

    Alors, j'essaye de passer par IBQuery associé aux IBUpdateSql, mails là, je n'arrive pas à générer la valeur de la foreign key dans FACTURES correspondant au CLIENT en cours d'affichage.

    Bref, je tourne en rond depuis 2 semaines.

    En résumé : mon cas est simple. Je suis nul, veux éviter de coder au maximum, donc utilise beaucoup l'inspecteur d'objets (F11). Je n'arrive pas à générer les champs autoInc de la table détail et maintenir la relation maître/détail. SI j'y arrive à faire cette relation, c'est le moyen de générer les autoinc des 2 tables que je ne parviens plus à faire...

    AU secours !!!

    À défaut de me proposer un petit cours, où trouver sur le Net ou sur ce site, une méthode complète sur Delphi 2005 (ou 7, ca doit se ressembler) et Interbase ?

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Bonjour !

    Ce forum a des règles très claires énoncées dans ce sujet :
    http://www.developpez.net/forums/viewtopic.php?t=181661

    Extrait :

    Les titres doivent être clairs et explicites. Les mauvais titres du genre :
    • Comprends pas ce qui m'arrive
    • Ca m'énerve
    • Problème
    • A l'aide, sos et autres cris

    ne sont pas des titres clairs. Evitez-les !
    UNE SEULE QUESTION PAR MESSAGE

    Nous ne sommes pas là pour faire le travail à votre place mais pour vous aider à progresser.
    Ne posez qu'une seule question par message, pas plusieurs.
    Merci donc de lire attentivement les règles et d'utiliser les tags adéquats pour le titre de votre sujet.

    Enfin, je serais super heureux si quelqu'un pouvait me faire un petit tuto personnalisé et simple pour le projet de base simple qui suit, car je débute. Peut-être ça servira à d'autres.
    Les tutos personnalisés n'existent pas ici !
    La méthode d'accès à Firebird est la même que celle d'Interbase. Donc vous pouvez lire les tutos IB et les appliquer à FB.
    Tous les cours sur IB se trouvent ici :
    http://delphi.developpez.com/cours/?dom=SGBD&them=InterBase

    Il y'a également toute une section sur les compos IB dans la FAQ disponible ici :
    http://delphi.developpez.com/faq/

    Pour résumer et répondre à une partie de vos interrogations, IBExpress sont les composants dédiés pour accéder à des bases Interbase et/ou Firebird. DBExpress est plus générique et a des limites parfois contraignantes pour quelqu'un qui débute.

    Avec les versions d'essais, on n'a pas commencé un projet que les 30 jours sont déjà passés

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut
    J'ai beaucoup de respect pour ce forum et pour ses usagers. j'ai passé plus de 20 heures pour trouver une réponse seul dans le site avant de poster... Toujours par respect.

    Je pense que la question était claire : il y a beaucoup de composants d'accès pour interbase, et je n'ai pas trouvé de sujet les listant et expliquant leurs possibilités.

    Je n'ai pas dit "ça m'énerve", ni "comprends pas", mais est clairement expliqué une difficulté à comprendre l'essence même des composants, et pas de manière globale mais concernant IBExpress.

    Il n' a pas eu de cri ni impatience dans mon sujet. IBExpress c'est une dizaine de composants, mon sujet était bien en phase avec la confusion rencontrée.

    Mon post ne traitait bien que d'un sujet.

    Et j'ai bien saisi que Interbase et FireBird étaient semblables. J'ai cité les 2 pour bien montrer que j'avais bien saisi la similitude, et en conséquence tout lu ce qui se trouvait sur ce site pour les 2 versions.

    Désolé d'avoir transgressé les règles du forum quoique c'est là une interprétation de ta part. Néanmoins je te remercie pour le début de réponse que tu apportes;

    Allez, je reformule afin que tu voies bien le sens de la question : je vais citer plus d'un composant, puisses-tu comprendre qu'il s'agit pourtant bien d'une seule question :

    Sans aller jusqu'au tuto personnalisé, qui peut ici expliquer l'essence même des composants listés ci-dessous et expliquer dans quels cas l'un est plus adapté que l'autre.
    :

    TIBTable - TIBQuery - TUBUpdateSql - TIBSql


    PS : désolé de ne pas utiliser les bons TAGS, et les bonnes règles du forum. Je ne suis pas français et je ne comprends pas tout le mode d'emploi. Si je suis ici, c'est que developpez.com est bien au dessus de ses homologues anglophones. Encore mille excuses.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 79
    Par défaut
    Bonsoir,

    petit récapitulatif suivant ce que j'en ai vu.

    TIBSQL est à utiliser lorsque tu veux faire un requête simple. Ce composant ne permet pas de voyager à travers l'ensemble d'enregistrements (mis à part par next).

    TIBQuery est plus poussé que le TIBSQL. Tu peux voyager dans l'ensemble des enregistrements (next, prior, last, first).
    Si tu veux appliquer des modifications à ton enregistrement en cours, il faut que tu es un composant TIBUpdateSQL lié à la propriété "UpdateObject" de ton IbQuery.
    De ton objet "TIBUpdateSQL", la propriété "ModifySQL" doit être renseignée (ex : UPDATE MaTable (mon champ) VALUES (:monchamp)).
    Tu passeras en mode modification par Edit, puis la modification s'effectura dès que tu auras utilisé la propriété "post".

    TIBTable est un lien avec ta table. C'est à dire que tu ne devras pas choisir par le "SelectSQL" quelle table tu veux ("SELECT * FROM MAtable) mais choisir directement ta table. Je n'ai plus la propriété à modifier en tête (trop tard).

    Tu as aussi le TIBDataset qui regroupe pas mal de chose (selectSQL, refreshSQL, modifySQL, deleteSQL).

    J'espère que ça aura pu t'aider un peu.

    PS: Tu peux lier ton ibdataset ou ibquery à un contrôle grille en utilisant un datasource.

    Bon courage,

    Alexandre.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut
    Citation Envoyé par AlexB59
    TIBTable est un lien avec ta table. C'est à dire que tu ne devras pas choisir par le "SelectSQL" quelle table tu veux ("SELECT * FROM MAtable) mais choisir directement ta table. Je n'ai plus la propriété à modifier en tête (trop tard).
    Merci pour ces précisions. La question que j'ai envie de poser, au regard des tests que je viens de faire, et au regard de tes explications, c'est pourquoi ne pas toujours utiliser un TIBTable, puis qu'il permet de voyager en avant et en arrière dans la table, de modifier, ajouter, supprimer, et tout ça sans la moindre gymnastique ni réflexion, contrairement au couple IBQuery/IBUpdateSql ? Du reste, j'ai fait mon lien maître/détail sans le moindre souci grâce à ces IBTable...

    Curieux que les tutoriels de ce site n'utilisent quasiment jamais IBTable... Quelque chose doit encore m'échapper...

    En tout cas, ma problématique est en passe de trouver solution.

    Citation Envoyé par AlexB59
    Tu as aussi le TIBDataset qui regroupe pas mal de chose (selectSQL, refreshSQL, modifySQL, deleteSQL).
    Oups, encore un nouveau composant que je ne connais pas... Il a un intérêt particulier ce IBDataset ?

    MErci par avance.

    PS : N'hésitez pas à me remettre en place si je dévie des règles du forum. J'ai lu cette nuit le règlement pour ne plus déranger, néanmoins je ne suis pas sûr d'avoir tout compris (le français n'est pas facile).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 79
    Par défaut
    Bonsoir,

    d'après ce que j'en ai lu le TIBTable rappatrie toutes les données de la table sur le client, d'où de grosse lenteur en cas de grosse table en mode client serveur.
    Tu peux rechercher des messages où Barbibulle explique ça. (prend comme critère TIBTable et Barbibulle).

    Le TIBDataset regroupe le TIBQuery, un TIBUpdateSQL. Il te permet aussi de faire des delete ou des raffraichissements en cas de modification (attention, j'ai remarqué que la propriété RefreshSQL me posait de petits problèmes dans mon programme donc je ne l'utilise pas).

    Bon courage

  7. #7
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    A mon avis, le TIbTable est à utiliser pour comprendre, apprendre car effectivement simple, souple d'emploi.
    Ensuite, le TIbQuery avec ou sans l'UpdateSQL, est moins évidente à utiliser.
    Quel interêt alors ?

    Le TIbTable est plus gourmand et moins performant car il permet beaucoup de choses pas forcément utiles dans des développements réels.
    Et là, effectivement, le TIbquery avec éventuellement un UpdateSQL permet de répondre plus exactement à des besoins très précis qui nécessitent des performances dues à un ensemble de contraintes techniques telles que : grand nombre d'enregistrements, bande passante sur réseau, concurence, ...

    En le terme de "performance", il faut comprendre : rapidité de la requete, minimum de rapatriement de données via le réseau, concurrence (transaction), controls supplémentaires avec des appels à des procédures stochées aux moments de posts, d'ajout, de suppression, ...

Discussions similaires

  1. [Joomla!] Utiliser les plugins dans les composants personels
    Par staarkoo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 09/02/2011, 23h22
  2. Naviguer dans les composants
    Par francois.delpierre dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/02/2011, 15h40
  3. soucis pour mettre des couleurs dans les composants
    Par lostsoul dans le forum NetBeans
    Réponses: 4
    Dernier message: 06/08/2010, 12h15
  4. [Dojo] Edition dans les composant de DND
    Par laminfodev dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 31/08/2009, 16h20
  5. utilisation du help file dans les composants de la VCL
    Par SOPRA-Eherve dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/09/2006, 22h47

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