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

Requêtes et SQL. Discussion :

Vérifier existence requête avant création


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut Vérifier existence requête avant création
    Bonjour,

    J'ai un code SQL qui me définie une requête.

    MAis lors de la création je voudrais vérifier qu'elle existe car la suppression sur innexistant amène un bug. Il y a t'il une fonction qui le fait du genre :
    Si Requête existe alors
    Je supprime
    Sinon je la créé.

    Voici le code de suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     .........
    DoCmd.DeleteObject acQuery, "Requête suppression observation"
            CurrentDb.CreateQueryDef "Requête suppression observation", SQL
    Merci d'avance

    MArcopololo

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,
    Une petite fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function isQuery(queryName As String) As Boolean
       ' teste l'existence d'une requête
     
       On Error GoTo isQuery_ERR
       Debug.Print CurrentDb.QueryDefs(queryName).Name
       isQuery = True
       Exit Function
     
    isQuery_ERR:
       isQuery = False
       ERR.Clear
     
    End Function

  3. #3
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Merci Oleff,

    J'ai une petite question. Comment intégre t'on cette fonction dans le code ?

    Marcopololo

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut,
    tu fais un copie/coller dans un nouveau module
    isQuery() sera reconnu comme une fonction à part entière comme IsNull()...

  5. #5
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Voila ce que j'ai mis dans mon code, mais j'ai une erreur sur isquery.

    Ce module, je lui donne le nom que je veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If isQuery("Requête Modif Clients") Then
            DoCmd.DeleteObject acQuery, "Requête Modif Clients"
            Else
            CurrentDb.CreateQueryDef "Requête Modif Clients", SQL
            End If

    Marcopololo

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    j'ai pas tout suivi, je passais par là et je te réponds en l'absence d'Oleff.
    essaye avec les crochets.

    Citation Envoyé par Marcopololo
    MAis lors de la création je voudrais vérifier qu'elle existe car la suppression sur innexistant amène un bug
    perso je force la suppression en retirerant la gestion d'erreur: on error resume next.


    ps: oui pour le nom du module

  7. #7
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Bon,

    J'ai avancé un petit peu en mettant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If isQuery("Requête Modif Clients") Then
            DoCmd.DeleteObject acQuery, "Requête Modif Clients"
            CurrentDb.CreateQueryDef "Requête Modif Clients", SQL
            Else
            CurrentDb.CreateQueryDef "Requête Modif Clients", SQL
            End If
    Je n'ai plus d'erreur. En fait je n'avais pas relancé ma base.
    Mais maintenant ma requête se créé bien même si elle n'existe pas au départ, par contre les données n'arrivent plus au formulaire ???

    Marcopololo

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    question idiote: la requete renvoie des enregistrements?
    auquel cas il faut revoir la source de ton formulaire.

  9. #9
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Oui, j'ai vérifié la requête et elle me renvoie bien les enregistrements du code choisi.

    Mais dans le formulaire elles ne s'affichent pas.
    Ce que j'ai du mal à comprendre car l'appel à cette fonction ne change rien au reste et cela fonctionnait ?
    Je vais vérifier le code au niveau du formulaire qui s'ouvre suite à cette création de requête.

    Merci de ton aide

    Marcopololo


    Je viens de trouver. J'avais renommer ma requête pour en garder une copie, mais en faisant cela tous les liens se sont renommés. J'ai corrigé et cela fonctionne.
    Je vais retourné à mon problème de requête delete.
    Si des fois tu avais une idée j'ai mis un message sur le forum ihm.

    Merci de votre aide Oleff etVodiem

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    ps: bien que le code de Oleff fonctionne, il n'est pas très orthodoxe de procéder ainsi.
    tu trouveras d'autre code ici
    bien que je pense qu'il y a "mieux".

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

Discussions similaires

  1. [AC-2003] Vérifier des conditions avant de lancer une requête ?
    Par artus59 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2013, 23h07
  2. Tester l'existence avant création
    Par TheGzD dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2009, 15h48
  3. [MySQL] Vérifier qu'un email n'existe pas avant de créer un nouveau compte
    Par Invité dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/04/2008, 17h43
  4. Réponses: 2
    Dernier message: 21/05/2007, 18h55
  5. vérifier existence d'une table
    Par scoder dans le forum Installation
    Réponses: 5
    Dernier message: 17/01/2005, 14h14

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