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 :

[D7/ORACLE] Requête SQL et exception EDBEngineError


Sujet :

Bases de données Delphi

  1. #1
    LHT
    LHT est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Points : 27
    Points
    27
    Par défaut [D7/ORACLE] Requête SQL et exception EDBEngineError
    Bonjour,

    j'obtiens le message d'erreur suivant lorsque j'execute la requête ci-après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT PST_ID, GNR_ID, TIT_ID, ADF_NBRACT, ADF_AVIORD, ADF_CRV_ID,PHOTO FROM ASSDEF WHERE TIT_ID = 3001 AND GNR_ID = 4 AND PST_ID IN (SELECT PST_ID FROM ASSDEF WHERE TIT_ID = 3001 AND GNR_ID = 5) ORDER BY PST_ID
    Le projet x.exe a provoqué une classe d'exception EDBEngineError avec le message 'Fonctionnalité non supportée.'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    Sachant que la requete fonctionne (testé avec l'editeur SQL).
    (Base ORACLE, delphi7, pilote OBDC).

    Il semblerait que le IN ne soit pas toléré...

    merci pour votre aide et vos précieux conseils

  2. #2
    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
    A mon avis cela vient du pilote du BDE qui n'arrive pas à envoyer les informations correctement à Oracle et génère cette erreur.
    Je pense qu'il faudrait voir à basculer vers les composants Ado ou DbExpress, car le BDE ne suit pas les évolution des bases de donénes car il a été abandonné niveau développement par borland/code Gear depuis un bon moment déjà.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    Je te rassure, le in fonctionne en bde + oracle.

  4. #4
    LHT
    LHT est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    ok merci, ça me rassure déjà un peu plus.

    j'ai regardé plus précisément et il plante à cet endroit précis dans l'unit BD
    qui est réalisé lors de l'open de la requête (ligne en rouge)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TCustomConnection.RegisterClient(Client: TObject; Event: TConnectChangeEvent = nil);
    begin
      FClients.Add(Client);
      FConnectEvents.Add(TMethod(Event).Code);
      if Client is TDataSet then
       FDataSets.Add(Client);
    end;
    y'aurais -t-il quelque chose que j'oublierais de faire comme un prepare ou autre ?

    Voici le code effectué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    qAssDefMultiGenre.Close;
    qAssDefMultiGenre.SQL.Clear;
     
    qAssDefMultiGenre.SQL.Add( 'SELECT PST_ID, GNR_ID, TIT_ID, ADF_NBRACT, ADF_AVIORD, ADF_CRV_ID,PHOTO FROM ASSDEF WHERE TIT_ID = '+ IntToStr(Integer(FrmTBAdm.cbTitrePres.Items.Objects[FrmTBAdm.cbTitrePres.ItemIndex])) +' AND GNR_ID = ' + intToStr(GetPresentGenreID));
     
    for i := FrmTBAdm.dbgPresentGenre.SelectedRows.Count-1 downto 1 do Begin
      dbgPresentGenre.DataSource.DataSet.GotoBookmark(Pointer(dbgPresentGenre.SelectedRows.Items[i]));
      SetPresentGenreID(dbgPresentGenre.Columns.Items[1].Field.AsInteger);
      qAssDefMultiGenre.SQL.Add(' AND PST_ID IN (SELECT PST_ID FROM ASSDEF WHERE TIT_ID = '+IntToStr(Integer(FrmTBAdm.cbTitrePres.Items.Objects[FrmTBAdm.cbTitrePres.ItemIndex]))+ ' AND GNR_ID = '+intToStr(GetPresentGenreID)+')');
    End;
     
    qAssDefMultiGenre.SQL.Add(' ORDER BY PST_ID');
    qAssDefMultiGenre.Open;

  5. #5
    LHT
    LHT est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    ça y'est c'est bon !! c'est corrigé!

    Le problème provenait de la propriété RequestLive à True. En effet, dans cette configuration les sous requêtes ne sont pas acceptées. Car il n'est pas possible de faire une mise à jour...

    Merci de vos conseils !!!!

    Bonne journée à tous!

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

Discussions similaires

  1. [2008R2] Liaison Oracle - Requête SQL
    Par cgair dans le forum Développement
    Réponses: 20
    Dernier message: 10/05/2011, 11h24
  2. [Oracle] accents oracle requête sql/php
    Par falco- dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/10/2008, 13h40
  3. [ORACLE] Requête SQL
    Par pier* dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/05/2006, 11h55
  4. [SQL Oracle] Requête complexe
    Par lapartdombre dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/11/2005, 14h31

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