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

Lazarus Pascal Discussion :

TSqlQuery et TDaemon [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut TSqlQuery et TDaemon
    Bonjour,

    Sous Windows, j'ai un projet qui est un service (TDaemon). Ce service, doit effectuer un accès à une base de données Oracle.

    La connexion à la base de données se passe sans Pb, mais l'exécution de la requête SQL (un simple select) renvoie systématiquement l'erreur :

    ORA-01062: allocation impossible de mémoire pour le tampon défini

    Cette erreur est générée dès l'exécution du TSqlQuery.Open

    Comme l'accès se fait via un service, il n'y a donc pas de fenêtre d'affichage, ni de grille de résultat, ... Est-ce dû à cela ?

    Je suis preneur de toutes idées sur comment effectuer un accès (requête select) à une base Oracle dans un service Windows.

    Par avance merci.

    Cdt

    Laurent

  2. #2
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Bonjour

    Peux tu nous donner plus d'info STP ?


    Cordialement,
    Chris

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai créé une application de type Service, plus exactement Daemon (service) Application (j'ai donc la classe TDaemon qui est instanciée) ainsi que le mapper correspondant (classe TDaemonMapper).

    Au niveau du mapper, l'ai créé un item (Propriété DaemonDefs) qui "pointe" sur l'instance de la classe TDaemon).

    Jusque là, le service s'installe correctement sous Windows, peut être démarré, arrêté, ...

    Ensuite, je rajoute les composants suivants :
    • TOracleConnection
    • TSQLTransaction
    • TSQLQuery


    Au niveau du composant TOracleConnection, j'indique la base de données (instance Oracle), le compte utilisateur et le mot de passe. Je fais les liens entre TOracleConnection et TSQLTransaction.

    Au niveau du composant TSQLQuery, j'indique le lien avec TOracleConnection et je mets une simple requête sql (du style select toto from matable).

    En conception, lorsque je mets les propriétés "Activie" de chaque composant à "True", la requête est correctement exécutée (je le vois au niveau du serveur via Oracle Enterprise Manager). Par contre, à l'exécution, lorsque j'ouvre la requête du TSQLQuery, le message d'erreur apparaît. Cela fait comme si en conception, du fait d'avoir un visuel sur les composants (donc via une fenêtre) tout fonctionnait alors qu'à l'exécution on n'a aucun visuel de fenêtre ...

    J'éi développé une autre petite application en utilisant les mêmes composants d'accès à la base de données et avec les mêmes éléments (instance oracle, compte utilisateur, mot de passe, table) et tout se passe bien. La seule différence dans cette application est que j'ai une interface utilisateur et les données sont correctement affichées.

    En espérant avoir été clair dans les informations.

    Bonne journée.

    Cdt

    Laurent

  4. #4
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Peut être une piste

    Essaye de ne pas utiliser de composants pour faire cela vu que c'est une appli 100% console. On ne sait jamais vu que le TSqlQuery attend un TDataset pour l'affichage des données

    Crées directement les objets TConnection, TSqlQuery et les autres depuis le code.
    Les paramètres par défaut seront peut être a vérifier...

    Cordialement,
    Chris

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'essaie cela dès lundi et te tiens au courant.

    Merci et bon week-end.

    Cdt

    Laurent

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai essayé en créant les composants directement dans le code et ... même message d'erreur.

    J'ai ensuite rajouté une form que j'ai mise en disponible et que je crée au moment d'en avoir besoin. Cette forme contient les composants d'accès la base de données et ... même message d'erreur.

    Manifestement, il y aurait quelque part une incompatibilité entre la définition d'un service et l'utilisation du composant TSQLQuery.

    Je m'en suis "sorti" autrement : j'ai créé une application "standard" qui contient les accès à la base de données mais dont la fenêtre est mise en minimize. Dans le "onCreate" de la form, je lance le traitement à réaliser sur la base de données.

    Une fois cette application développée (aucune action utilisateur sur la form), depuis le service, j'appelle cette application via la définition d'un TProcess.

    Le service lance alors l'application qui elle-même effectue les accès à la base de données. Cela a été testé sur un serveur et fonctionne correctement.

    Si "l'astuce" peut servir ...

    Cdt

    Laurent

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

Discussions similaires

  1. TsqlQuery et récupération de valeur générée
    Par Lucien dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2005, 14h44
  2. TSQLQuery et recordcount
    Par Cybher dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/08/2005, 09h51
  3. problème avec le composant TSQLQuery
    Par vbcasimir dans le forum Bases de données
    Réponses: 6
    Dernier message: 31/05/2005, 16h45
  4. [TSqlQuery+dbexpress] Pbs Insertion
    Par fred64 dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 13h07
  5. [DEBUTANT] TSqlQuery & requête simple
    Par fred64 dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/04/2004, 11h35

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