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 :

Problème avec un ensemble de données ouvert


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 51
    Points : 69
    Points
    69
    Par défaut Problème avec un ensemble de données ouvert
    Bonjour j'ai un problème avec cette partie de mon code Delphi que j'utilise sur une db Firebird:


    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
     
     
    IBDataBase:=TIBDataBase.Create(nil);
          IBTransaction:=TIBTransaction.Create(nil);
          IBQuery:=TIBQuery.Create(nil);
          IBUpdateSQL:=TIBUpdateSQL.Create(nil);
          IBDatabase.Connected:=false;
          IBDataBase.DatabaseName := 'D:\Db\mabase.GDB';
          IBDataBase.SQLDialect := 3;
          IBDataBase.Params.Clear;
          IBDataBase.LoginPrompt:=false;
          IBDataBase.Params.Add('USER "SYSDBA"');
          IBDataBase.Params.Add('PASSWORD "masterkey"');
          IBDataBase.Params.Add('lc_ctype=ISO8859_1');
          IBDatabase.Connected := true;
     
          IBTransaction.DefaultDatabase:=IBDataBase;
          IBDataBase.DefaultTransaction:=IBTransaction;
           IBQUERY.Close;
     
     
          IBQuery.Database:=IBDataBase;
          IBQuery.Transaction:=IBTransaction;
          IBQuery.UpdateObject:=IBUpdateSQL;
          IBQuery.SQL.Text:='SELECT COUNT(*) FROM TABLE' ;
     
          Datasource1.DataSet:=IBQuery;
          DBGrid1.DataSource:=Datasource1;
          IBQuery.Open;
          IBQuery.ExecSQL;

    L'erreur se produit au niveau de IBQuery.ExecSQL et le message d'erreur dit qu'il est "impossible d'effectuer cette opération sur un ensemble de données ouvert".

    Pourriez-vous m'aider svp ?


    Merci d'avance.

  2. #2
    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

    Il faut choisir un Open ou un ExecSQL. Mais pas les deux.

    Open est destiné à ouvrir un DataSet renvoyant un jeu d'enregistrements.
    ExecSQL à exécuter une requête action (INSERT, UPDATE ou DELETE).

    Donc dans ton cas supprime simplement le IBQuery.ExecSQL;

    @+ Claudius

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour.

    Il semble que vous n'ayez pas compris la différence entre Open et ExecSQL

    Open est à appeler lorsque vous vous attendez à ce que votre requête retourne des lignes (typiquement votre exemple). ExecSQL est là pour exécuter des requêtes SQL qui ne retournent pas de lignes (INSERT, UPDATE, DELETE, etc...).

    Donc ici votre Open a bien ouvert l'ensemble de donnée et le ExecSQL juste derrière tente bien de faire une opération sur un ensemble de donnée ouvert.

    Edit : grilled par Cl@udius
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 51
    Points : 69
    Points
    69
    Par défaut
    Oui effectivement je ne comprenais pas le principe entre open et ExecSQL.

    Maintenant tout fonctionne normalement.

    Merci de votre aide c'est très sympa.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Problème avec le getionnaire de données
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/04/2006, 11h33
  2. [VB]Problème avec les bases de données
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 22/04/2006, 20h24
  3. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27
  4. problème avec ma base de donnée
    Par polace dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 22/10/2005, 22h26
  5. problème avec ma base de données
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 25/02/2005, 12h59

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