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

XMLRAD Discussion :

pb curseurs ....


Sujet :

XMLRAD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut pb curseurs ....
    Bonour,

    J'ai de + en + d'erreurs Oracle 'nombre maximum de curseurs atteint', alors que j'en ai 300 de déclarés par user.

    Le pb se pose sur un service pour lequel je fais beaucoup de requête à la main dans Delphi. Voici un exemple de code, sachant que je déclare 2 TDACQuery que je réutilise une bonne 50aine de fois :

    Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle';
    Qry.Prepare;
    Qry.SetParamType('pCle','VARCHAR');
    Qry.SetParamAsString('pCle',Context.Values['MaValeur']);
    Qry.Open;

    Est-ce bien correct ??? J'ai entendu dire que ce pb était connu avec le BDE, mais avec ADO ??

    Qqu'un aurait-il une piste ??

  2. #2
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    Bon passons sur le fait que de faire des requêtes à la main ne soit pas la meilleure chose

    le code correct serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle'; 
      Qry.Prepare; 
      Qry.SetParamType('pCle','VARCHAR'); 
      Qry.SetParamAsString('pCle',Context.Values['MaValeur']); 
      Qry.Open; 
      try
       MyField := Qry.GetFieldAsString('AField');
      finally
        Qry.Close;
      end;
    Ne JAMAIS oublier de fermer un curseur en fermant la Query.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    Même si je fais un FreeAndNil ???

    voici le code complet que je fais:

    procedure TEST
    var
    Qry : TDacQuery;
    begin
    Qry := TDACQuery.Create(nil);
    try
    Qry..Database := XMLCollection.GetDatabaseComponent('Database');
    Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle';
    Qry.Prepare;
    Qry.SetParamType('pCle','VARCHAR');
    Qry.SetParamAsString('pCle',Context.Values['MaValeur']);
    Qry.Open
    traitements
    finally
    FreeAndNil(qry);
    end;
    end;

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut
    Le fait que tu fasses un FreeAndNil libère les ressources allouées à la Query. TU dois absoluement rajouter le Qry.Close; pour fermer correctement ta connection. Je pense que ca résoudra ton problème.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    ok, j'essaie ça de suite !

  6. #6
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    Le destructeur (appelé par FreeAndNil) appelle Close, donc ca devrait etre bon

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    dommage .... mais cela ne m'étonne qu'à moitié, car le pb survient en fin de journée (alors que les 300 curseurs on t déjà été utilisés) donc, les curseurs sont bien fermés quasiment tout le temps ....

  8. #8
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    Peut etre qu'ADO garde des curseurs en "cache", ou bien c'est peut etre Oracle, difficile de dire la.
    tu peux essayer de te déconnecter et de te reconnecter à la base Oracle pour voir si ca libère des choses....

Discussions similaires

  1. Position du curseur
    Par gimlithedwarf dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2002, 23h45
  2. Masquer le curseur en mode MS-DOS
    Par Alex120 dans le forum C
    Réponses: 2
    Dernier message: 10/07/2002, 09h30
  3. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

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