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 :

Creation table temporaire SQL server


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 42
    Par défaut Creation table temporaire SQL server
    Bonjour,

    Je souhaite créer une table temporaire à partir d'une table existante. Dans l'analyseur de requête SQL server, ça marche. Mais sitôt que je transforme ça en deux requêtes ADOquery de delphi, ça ne marche plus.

    Texte dans l'analyseur de requêtes (qui fonctionne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * INTO #Asupprimer FROM ARTICLES
    select * from #Asupprimer
    J'obtiens bien la iste des articles.

    Si je fais le deux requêtes delphi correspondantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1 - SELECT * INTO #Asupprimer FROM ARTICLES -> fonctionne
    2 - select * from #Asupprimer -> Ne fonctionne pas (erreur "#ASupprimer : Nom d'objet incorrect")
    ON dirait que la première requête n'a pas fonctionné car la table temporaire #Asupprimer semble ne pas exister...

    Je ne comprends pas.

    D'avance merci à ceux qui comprennent...

  2. #2
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    Les deux requêtes partagent-elles le même composant connexion ?
    A priori si la table temporaire n'est pas visible depuis l'autre requête, c'est qu'elles sont dans des sessions BD différentes.
    Eventuellement pour illustrer cela, et temporairement, tenter en doublant le # (la table temporaire est alors visible de toutes les sessions).

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    quel version de delphi ?
    est tu oblige de passer par ADOquery


    @+ Phil

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 42
    Par défaut
    cmen76,

    les deux requêtes partagent le même composant connexion. En effet, si je met "##" : ça marche.

    Je comprends pas bien pourquoi, ce n'est pas gênant ???.

    anapurna,

    Delphi 7, je me sers de composants ADO pour mon application, mais si il y a une autre solution, je suis preneur.

    Merci à vous por vos réponses.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Par défaut
    Bonjour,

    D'après ce que tu décris, entre la première et la deuxième requête ta table
    temporaire a du être supprimée (session fermé).

    Assures toi déjà que la première requête effectue bien son travaille. (Recordcount 0 ?)

    Tu peux regarder aussi du coté du CREATE, utilise t'il la même connexion que tes select.
    Sinon en utilisant des tables locales (#), tes select ne pourront pas accéder à la table.


    A+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 42
    Par défaut
    Je ne pense pas fermer la session, les 2 requêtes s'enchainent et ont pour ADOconnection la même chose.

    Je ne sais pas si la première requête fai bien son travail car je fais un ADOQuery.EXECSQL, donc laseule manière de voir si elle fait bien son travail c'est de faire la deuxième requête, c'est-à-dire un select sur la table temporaie créée.

    Je n'ai pas de CREATE, puisque c'est la première requête qui crée la table temporaire...

    Je ne pige toujours pas ce qui se passe.

    Merci

  7. #7
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    Citation Envoyé par StarMusic Voir le message
    cmen76,
    (...)ce n'est pas gênant ???.
    Bien sûr que si, ça peut l'être : dans le cas où un deuxième client tenterait de créer la (même) table temporaire déjà utilisée par un premier...

    Vous pouvez tracer les SPID depuis le "Gestionnaire de profils" (outil fourni avec SQL Server) pour tenter de comprendre ce qui fait qu'une autre session soit créée pour le 2e query.

    Par ailleurs, peut-être pouvez-vous extraire les requêtes de votre projet et nous fournir le bout de code ?

    Courage...

    PS : Le problème ne pourrait-il pas être contourné par la création d'une procédure stockée ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * INTO #Asupprimer FROM ARTICLES
    Je ne connaissais pas cette possibilité de créer une table tempo à la volé.

    Sinon tu peux regarder après avoir passer ton ExecSQL,la propriété RowsAffected pour connaitre le nombre de lignes manipulées.

Discussions similaires

  1. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  2. creation table avec lignes d'une autre table sous Sql Server
    Par pops4 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/05/2007, 13h59
  3. tableau dynamique via une table sous sql server
    Par bibi2607 dans le forum ASP
    Réponses: 5
    Dernier message: 21/02/2005, 15h45
  4. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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