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 :

violation des régles de validation


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut violation des régles de validation
    Bonjour,
    Je travaille sous Access 2000, mon rôle conciste à fusionner les données de deux bases differentes.
    Dans ma base fusion voici ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Patient (PAT_ExternalId (Texte),
    NIPATIENT (Texte),
    PAT_DemId (Texte), 
    NOM (Texte),
    PRENOM (Texte),
    PATRONYME (Texte),
    DATENAIS (Date/Heure))
    Dans ma première base1 voici la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    patient (PAT_DemId (Numérique),
    PAT_ExternalId (Texte),
    PAT_FirstName (Texte),
    PAT_Lastname (Texte),
    PAT_Birthname (Texte),
    PAT_Birthdate (Date/Heure),...)
    et dans ma deuxième base2 voici la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Patient (NIPATIENT (Numérique), 
    NOM (Texte), 
    PRENOM (Texte), 
    PATRONYME (Texte), 
    DATENAIS (Numérique),...)
    pour le champ PAT_ExternalId dans la deuxième base je le récupére à partir d'une autre Table.
    J'ai testé l'ajout des données une fois à partir de la première base1 (sachant que le champ NIPATIENT restera vide), et une fois à partir de la base2 (sachant que le champ PAT_DemId restera vide) et ça marche.

    miantenant il me faut inserer les données de la première base1, ce qui fait que j'ai toutes les données, sauf le champ NIPATIENT que je dois completer à partir de la base2, en prenant en compte bien sur le fait que le champ PAT_ExternalId doit être le même dans les deux base.

    alors cela n'a pas marché, et pour simplifier et voir d'ou vient le problème, j'ai essayé de fair un ajout dans une ligne de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Patient ( NIPATIENT )
    SELECT PENSOINS_PATIENT.NIPATIENT
    FROM PENSOINS_PATIENT
    WHERE (((PENSOINS_PATIENT.NOM) Like 'TATI%') 
        AND ((PENSOINS_PATIENT.PRENOM) Like 'TOTO%'));
    et cela m'a provoqué une violation des régles de validation. Et pour cette raison je demande votre aide.

    Je vous remercie d'avance

    Mais quand

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Pourquoi faire un INSERT INTO quand ce que tu veux faire est un UPDATE ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE Fusion INNER JOIN Base2 ON
        Fusion.NOM = Base2.NOM AND
        Fusion.Prenom = Base2.PRENOM
    SET Fusion.NIPatient = Base2.NIPatient

    Serait préférable, je pense

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Merci beaucoup pour ta réponse, effectivement t'as raison et j'y pensé en plus.

    je vais voir ça de près

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Voilà, je vous remercie encore, ça marche.

    par contre j'ai une autre question svp:
    j'essaye maintenant de faire un mise à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE [VueEnsemblesPatientsBase2] INNER JOIN Patient ON ([VueEnsemblesPatientsBase2].["PAT_ExternalId"] = Patient.PAT_ExternalId) AND ([VueEnsemblesPatientsBase2].NIPATIENT = Patient.NIPATIENT) SET Patient.NIPATIENT = [VueEnsemblesPatientsBase2].[NIPATIENT];
    en utilisant une requête que j'utilise comme sorte de Vue (VueEnsemblesPatientsBase2), mais j'obtiens le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'opération doit utilisé une requête qui peut être mise à jour
    , sachant que la requête (VueEnsemblesPatientsBase2) marche très bien !!


    est ce que vous avez une explication?

    je vous remercie encore

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    je viens de me rendre compte qu'il fallait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE [VueEnsemblesPatientsBase2] INNER JOIN Patient 
    ON [VueEnsemblesPatientsBase2].["PAT_ExternalId"] = Patient.PAT_ExternalId 
    SET Patient.NIPATIENT = [VueEnsemblesPatientsBase2].[NIPATIENT];
    mais j'ai toujour le même message d'erreure

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Apparemment ceci à un rapport avec les droit d'utlisateurs.
    mais j'ai le statut administrateur !!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Je ne pense pas, puisque j'arrive à faire des mise à jours à partir d'une table au lieu d'une Vue.
    mais la Vue ou la requ^te toute seule marche très bien!!
    est ce que vous avez une idée?

    Je vous remecie d'avance

  8. #8
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Tu ne peux pas mettre à jour ta table à partir de la requête.

    Crées une table à partir de ta requête.
    Mets à jour à partir de la table.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    merci beaucoup de m'avoir répondu,

    Je m'en douté, et j'ai déjà pensé à cette solution puisque j'ai vu que ça marche quand je fais des mises à jour à partir des tables.
    seulement j'ai procédé de cette manière parce que la base n'est pas encore gelée et je serai obligé à chaque fois de créer la table avec les nouvelles données avant de mettre à jour la table patient.
    mais bon je vais peut être fair une macro (parce que apparemment les script ne sont pas possible avec Access) à la fin qui crée la table (vue) à partir de la requ^te et qui lance la mise à jour par la suite.

    Je vous remercie encore.

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

Discussions similaires

  1. Réponses: 56
    Dernier message: 18/03/2013, 21h29
  2. [ASP.NET MVC] Création des règles de validation
    Par Leelith dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/09/2009, 18h49
  3. Violation des règles de validation : comment trouver cause ?
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/08/2007, 21h02
  4. quelles sont les causes des violation des régles de validation?
    Par Smix007 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/07/2007, 17h16

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