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 :

mise à jour "en cascade" Projet Gestion de parc informatique


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut mise à jour "en cascade" Projet Gestion de parc informatique
    Bonsoir tt le monde,
    Alors voilà la situation :
    j'ai une variable global guid

    j'ai une table :

    BASE_MAT avec entre autres les champs suivants :

    Numm_immo | site

    TABLE_PRIN avec entre autres les champs suivants :

    uid | Numm_immo_pc | Numm_immo_ecran | Numm_immo_impr | site

    Je veux que pour chaques Numm_immo de Base_mat éxistant dans table_prin ( les enregistrement retenus dans table_prin etant ceux dont uid = guid)
    on met à jour le site par celui correspondant dans site de la table_prin (base_mat.site=table_prin.site ou (base_mat.num_immo=table_prin.num_immo_pc ou base_mat.num_immo=table_prin.num_immo_impr ou base_mat.num_immo=table_prin.num_immo_ecran)
    Exemple :
    guid = 000001
    le contenu de table_prin est : (en gras ce qui doit etre retenue)
    uid | Numm_immo_pc | Numm_immo_ecran | Numm_immo_impr | site
    000001 | M00001 | P00001 | I00001 | site1
    000002 | M00002 | P00002 | I00002 | site2
    000003 | M00003 | P00003 | I00003 | site3
    000004 | M00004 | P00004 | I00004 | site4
    000001 | M00005 | P00005 | I00005 | site5
    dans la table base_mat
    Num_immo | site
    M00001 | site3
    P00001 | site3
    I00001 | site3
    .....
    .....
    .....
    .....
    M00005 | site2
    P00005 | site2
    I00005 | site2
    je veux donc que cela devienne :
    base_mat
    Num_immo | site
    M00001 | site1
    P00001 | site1
    I00001 | site1

    .....
    .....
    .....
    .....
    M00005 | site5
    P00005 | site5
    I00005 | site5



    Pour cela, j'ai pour le moment cette requete :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sSQL = "UPDATE base_mat SET base_mat.site = ?" & sitesel & "? WHERE (((base_mat.Num_immo) In (select objet from (select table_prin.num_immo_ecran as objet from table_prin where (table_prin.N°) =" & guid & "))))" _
    & "or (((base_mat.Num_immo) In (select objet from (select table_prin.num_immo_impr as objet from table_prin where (table_prin.N°) =" & guid & "))))" _
    & "or (((base_mat.Num_immo) In (select objet from (select table_prin.num_immo_pc as objet from table_prin where (table_prin.N°) =" & guid & "))));"
    le probleme c'est que sitesel à une seule valeur ...
    Bref je ne vois pas comment m'y prendre, d'avance merci de votre aide

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonsoir,


    Heu ou j'ai rien compris (ce qui est fort possible ) ou tu te compliques la vie pour rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sSQL="UPDATE base_mat SET base_mat.site = TABLE_PRIN.SITE " & _
    "FROM base_mat, TABLE_PRIN " & _
    "WHERE ((base_mat.Num_immo = TABLE_PRIN.Numm_immo_pc)" & _
    "           OR (base_mat.Num_immo =Numm_immo_ecran) " & _
    "           OR (base_mat.Num_immo = TABLE_PRIN.Numm_immo_impr)) " & _
    "          AND TABLE_PRIN.UID = " & GUID

    Bon courage

  3. #3
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    En fait chaques valeurs peut etre differentes, du coup, cela ne fonctionne pas ...
    en fait dans mon esprit, voilà comment je vois les choses, mais je ne sais pas le retranscrir sous Access :
    alors grace a ma requete, je récupere le materiel associé à l'utilisateur dans table_prin sous la forme :
    (je reprends mon exemple avec guid = 000001)
    M00001
    P00001
    I00001
    M00005
    P00005
    I00005
    il faudrait ensuite que je traite la table base_mat ou num_immo est dans ces valeurs afin de remplacer le site par celui correspondant ds table_prin.
    Je ne suis pas sur qu'il faille passer par des requetes sql

  4. #4
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    j'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    update base_mat SET base_mat.site =(select table_prin.site from table_prin where
    ((base_mat.Num_immo=table_prin.num_immo_pc) or 
    (base_mat.Num_immo=table_prin.num_immo_impr) or 
    (base_mat.Num_immo=table_prin.num_immo_ecran)))
     
    WHERE (((base_mat.Num_immo) In (select objet from (select table_prin.num_immo_ecran as objet from table_prin where (table_prin.uid) =getguid())) 
    Or (base_mat.Num_immo) In (select objet from (select table_prin.num_immo_impr as objet from table_prin where (table_prin.uid) =getguid())) 
    Or (base_mat.Num_immo) In (select objet from (select table_prin.num_immo_pc as objet from table_prin where (table_prin.uid) =getguid()))));
    Et j'ai le message suivant :
    L'opération doit utiliser une requete qui peut etre mise a jour.
    kesako ?

  5. #5
    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 à tous,

    fomy, regarde si cela te conviendrait:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update base_mat inner join table_prin on ((base_mat.Num_immo=table_prin.num_immo_pc) or 
    (base_mat.Num_immo=table_prin.num_immo_impr) or 
    (base_mat.Num_immo=table_prin.num_immo_ecran)) set base_mat.site=table_prin.site where table_prin.uid=getguid()
    et si cela marche...

  6. #6
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par vodiem Voir le message
    salut à tous,

    fomy, regarde si cela te conviendrait:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update base_mat inner join table_prin on ((base_mat.Num_immo=table_prin.num_immo_pc) or 
    (base_mat.Num_immo=table_prin.num_immo_impr) or 
    (base_mat.Num_immo=table_prin.num_immo_ecran)) set base_mat.site=table_prin.site where table_prin.uid=getguid()
    et si cela marche...
    merci merci et encore merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/03/2008, 21h03
  2. Projet Gestion de parc informatique
    Par fomy dans le forum Modélisation
    Réponses: 21
    Dernier message: 06/03/2008, 09h10
  3. Réponses: 1
    Dernier message: 24/02/2008, 11h08
  4. Réponses: 2
    Dernier message: 23/02/2008, 10h54

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