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 :

demande d'infos sur le composant IBDataSet


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Points : 10
    Points
    10
    Par défaut demande d'infos sur le composant IBDataSet
    Bonjour,

    Je suis un peu perplexe face au fonctionnement du composant IBDataSet

    Dans la propriété SelectSql, on doit mettre la requete permettant de garnir le DataSet

    Je vois qu il existe également des propriétés :
    InsertSql
    ModifySql
    DeleteSql
    RefreshSql

    Logiquement, il me semble que l'on devrait y mettre les requetes sql permettant l insertion, la modification et la suppression de données du DataSet.

    Il serait alors utile d'avoir plusieurs requetes dans certaines propriétés...

    comment faire appel a une certaine méthode en particulier si on a par exemple 5 requêtes d'UPDATE, 3 INSERT et 4 DELETE FROM ?

    Comment utilisez vous l IBDataSet?

    vous garnissez en cours de programme les propriété permettant d executer des requetes sur le contenu du dataset?
    ( 1. ouvrir le dataset avec un requete Select rappatriant 5 table
    2. dans certains cas, effacer la requete select, mettre une requete
    UPDATE precise et l executer via la méthode execSql
    ect ... )


    On va migrer une base de donnée Paradox vers FireBird aussi on cherche par quel composant remplacer TTable, Tquery,.. dans les programmes accédant au données

    Merci d'avance pour votre aide

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    personnellement j'utilise un TIBDataSet en fonction de formulaire principal.
    Je m'explique : Si mon formulaire gère des techniciens, je vais utiliser un TIBDataSet qui ne sera lié qu'à ma table principal des techniciens.

    Je pense que la difficulté d'utiliser un TIBDataSet pour x requête d'insert ou de select est qu'il faudra à chaque fois fermer l'objet puis le réouvrir pour mettre à jour les requêtes.

    Pour votre cas (x requêtes d'insert, x requêtes d'update), le mieux est d'utiliser un composant TIBQuery (pour la sélection) associé à un TIBUpdateSQL (pour les modifs).

  3. #3
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    comment faites vous dans les anciens composants?
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  4. #4
    Membre habitué Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 112
    Points : 135
    Points
    135
    Par défaut [FireBird] Utilisation du composant [IBDataSet]
    Je recopie un extrait du manuel des FIB Free Interbase de Gregory Deatz :

    10.2 Making a TFIBDataSet updatable
    Making a TFIBDataSet updatable is extremely easy. The primary SQL property of
    TFIBDataSet is SelectSQL, but there are four other SQL properties that allow the user
    to treat a query as an updatable data set: DeleteSQL, InsertSQL, RefreshSQL, and
    UpdateSQL.
    Each of these queries allow the user to delete a row, insert a row, refresh a row, and
    update a row.
    Let’s assume that you have a table in your database called t1:
    create table t1 (
    f1 integer constraint primary key,
    f2 integer,
    f3 varchar(128)
    );
    Now, your SelectSQL property says:
    select * from t1
    To be capable of deleting data, just make the DeleteSQL property say this:
    delete from t1
    where f1 = ?old_f1
    To be capable of inserting data, just make the InsertSQL property say this:
    insert into t1
    (f1, f2, f3)
    values
    (?f1, ?f2, ?f3)
    To be capable of refreshing data, just set the RefreshSQL to
    select f1, f2, f3
    from t1
    where f1 = ?f1
    To be capable of updating data, just set the UpdateSQL property to
    update t1
    set f1 = ?f1,
    f2 = ?f2,
    f3 = ?f3
    where f1 = ?old_f1
    It’s that easy! You will notice the use of “OLD ” and “NEW ”. This is to refer to the
    “old” field value or the “new” field value, respectively.
    You should also note that this convention for setting up “live” queries is a bit more
    complicated than merely setting a RequestLive property, but it o ers complete flexibility.
    For example, you might want to set it up so that users don’t have the option to modify the
    primary key, so you could set the UpdateSQL property to the following
    update t1
    set f2 = ?f2,
    f3 = ?f3
    where f1 = ?old_f1
    As you explore using this method for establishing “live queries”, you will find that this
    is rather simple and intuitive.

    >>> Selon les besoins envisagés on renseigne toutes ou parties des propriétés SQL et l'on appelle celle dont on a besoin :
    IBDS.UpdateSQL ...
    IBDS.SelectSQL .... etc

    >>> Personnellement pour ne pas tout ré-écrire quand j'accède à des tables de structures semblables je change seulement le nom de la table accédée ; pour ça je place toujours le nom en deuxième ligne :
    Delete from
    ART_ACT
    where Code=?old_Code

    >>> Le composant étant compatible "dataset", une fois les propriétés SQL renseignées correctement on peut utiliser la syntaxe dataset.
    IBDS.Edit + IBDS.Post utilise IBDS.UpdateSQL pour mettre à jour la BD

    >>> ATTENTION le symbole pour les paramétres n'est peut être pas le point d'interrogation pour les IBDS actuels (peut être *)

    Le portage est relativement simple puisque l'on retrouve toutes les fonctions et la syntaxe des datasets précédents, une fois les propriétés SQL renseignées.

    a++

  5. #5
    Membre habitué Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 112
    Points : 135
    Points
    135
    Par défaut [FireBird] [IBDataSet] [FIB]
    Correction message précédent ne pas utiliser '*' pour préfixer paramétres

    Pour le passage des paramétres dans les xxxSQL de IBDataSet, les paramétres doivent être préfixés par ':' (deux points).

    Pour les DataSet des FIB Free Interbase Components on utilise (utilisait)
    '?' (point d'interrogation).

    Exemple pour les IBDataSet :

    Insert into MaTable (nom, prenom) Values (:nom, :prenom)

    a++

Discussions similaires

  1. Demande d'infos sur WxGlade et les sizers
    Par altadeos dans le forum wxWidgets
    Réponses: 2
    Dernier message: 22/11/2006, 11h44
  2. Demande d'info sur MySQL 3.23.58
    Par gobs dans le forum Installation
    Réponses: 5
    Dernier message: 25/01/2006, 13h52
  3. [Débutant] Demande d'info sur OpenGL
    Par SkyDev dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/03/2005, 00h58
  4. Demande d'info sur treeview
    Par Anaxagore dans le forum IHM
    Réponses: 6
    Dernier message: 28/08/2003, 19h27

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