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 :

opérateur ET dans condition WHERE


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut opérateur ET dans condition WHERE
    Bonjour à tous

    Sur ma base, je souhaite interdire qu'une requête ajout s'effectue 2 fois dans les mêmes conditions (ID et date par exemple).
    J'ai bien réussi à interdire les doublons sur plusieurs champs avec les index uniques, mais cela génère un message d'erreur lors de l'exécution, forcément...

    Est-il possible de créer en SQL (je ne conais pas le VBA) des instructions "valide si n'existe pas dans la table", avec un message personnalisé de type "cette action a déjà été effectuée"...

    Ou bien est-il possible tout simplement d'ignorer le message d'erreur et la requête ?

    Merci de votre aide

    Sylvain

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    cette requete ajoute les données que si elles n'existent pas dans la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "INSERT INTO NomTable( ID, date) SELECT " & Identification & " AS ID, #" & Format$(jour,"mm/dd/yy") & "# AS jour FROM NomTable GROUP BY " & Identification  & ", #" & Format$(jour,"mm/dd/yy") & "#  HAVING (((" & Identification & ") Not In (select NomTable.ID FROM NomTable)));"
    les valeurs à ajouter sont dans des variables Identification pour ID et Jour pour Date. Date étant un mot réservé , il est préférable d'utiliser un autre nom.
    Le test de presence est fait sur ID
    Je n'ai pas testé.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut Echec Transposition requête
    Merci de votre réponse, helas...

    Helas, je n'arrive pas à transposer cette requête à la mienne. Je cherche depuis ce matin, en vain...

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Presences_educ ( ID_educ, [Date], matin, [apres-midi] )
    SELECT Référents.N°_educ, [Formulaires]![F_Présences]![Modifiable24] AS Expr1, 0 AS Expr2, 0 AS Expr3
    FROM Référents LEFT JOIN Presences_educ ON Référents.N°_educ = Presences_educ.ID_educ;
    J'ai besoin d'aide...

    Merci

    Sylvain

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut NOT IN...
    Re-bonjour ;

    Je cherche toujours..
    J'avance avec la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Presences_educ ( ID_educ, [Date], matin, [apres-midi] )
    SELECT Référents.N°_educ, [Formulaires]![F_Présences]![Modifiable24] AS Expr1, 0 AS Expr2, 0 AS Expr3
    FROM Référents LEFT JOIN Presences_educ ON Référents.N°_educ = Presences_educ.ID_educ
    WHERE (((Référents.N°_educ) Not In ([ID_educ])) AND (([Formulaires]![F_Présences]![Modifiable24]) Not In ([date])));
    Mais la condition where ne fonctionne pas... on dirait qu'elle fonctionne comme un test OU, c'est à dire qu'une fois la requête exécutée, elle n'ajoute plus rien par la suite, comme si une des condition était remplie, et pas les 2 comme je le souhaite (AND)...

    Y a quelque chose que je ne comprends pas...

    Toujours merci de votre aide

    Sylvain

  5. #5
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    peut-être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO Presences_educ ( ID_educ, [date], matin, [apres-midi] )
    SELECT Référents.N°_educ, [Formulaires]![F_Présences]![Modifiable24] AS Expr1, 0 AS Expr2, 0 AS Expr3
    FROM Presences_educ RIGHT JOIN Référents ON Presences_educ.ID_educ = Référents.N°_educ
    WHERE (((Presences_educ.ID_educ) Is Null));
    Ajoute si ID_educ n'est pas dans la table Presences_educ

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut opérateur ET dans condition WHERE
    Merci helas, mais ça n'est pas ce que je souhaite.

    Je joins en pièce jointe mon fichier pour mieux comprendre.

    Lorsque j'exécute la requête ajout avec une date, ça fonctionne.
    Lorsque j'exécute une seconde fois la requête avec la même date, ça fonctionne aussi (pas d'ajout puisque date existe)
    si j'exécute la requête avec une autre date, ça ne fonctionne pas !

    Pourquoi ? je ne comprends pas le principe...

    Ce que je souhaite, à l'idéal, c'est qu'aucun ajout ne s'effectue si la combinanison des 2 cahmps "ID_educ" ET "date_presence_educ" existent.

    je n'y arrive pas

    Merci de votre aide

    Sylvain
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. sql - Textbox dans condition WHERE
    Par TheEdge dans le forum VB.NET
    Réponses: 6
    Dernier message: 24/09/2012, 20h17
  2. [AC-2000] [opérateur AND dans clause WHERE]
    Par moule dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/01/2010, 17h48
  3. pb Hibernate-HSQL parenthèse dans condition Where
    Par quisera dans le forum Hibernate
    Réponses: 3
    Dernier message: 02/04/2007, 10h11
  4. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06
  5. Réponses: 6
    Dernier message: 24/09/2004, 13h10

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