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 :

Pb pour update un champ par plusieurs champs d'autre table


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 24
    Points
    24
    Par défaut Pb pour update un champ par plusieurs champs d'autre table
    Bonjour
    J'ai un pb lié à la mise à jour du champs ( mettre plusieurs champs de la table T_dossierAléa dans un champ de la table T_revue),je vous explique ma question :
    comme j'ai dit en haut, j'ai 2 table T_revue, et T_dossierAléa. L'idée principale est que pour un flux "origine-destination",on peux avoir plusieur aléa possible. Donc, il faudrait que je remplisse certains champs dans la table T_revue par rapport la table T_dossierAléa (dont les champs comme "DC,motif,observation...").
    Pour le moment, je peux récupéré tous les aléas pour tous les flux dans T_revue, mais j'arrive pas les mettre en face de chaque flux
    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT T_dossierAléa.DC,T_dossierAléa.motifPrincipale,T_dossierAléa.observation,T_dossierAléa.clientAviseAtemps,T_dossierAléa.fournisseurAvise FROM T_dossierAléa inner JOIN T_Revue ON (T_dossierAléa.DESTINATION = T_Revue.destination) AND (T_dossierAléa.ORIGINE = T_Revue.Origine) where DC_prévu > DC_Reel and (T_dossierAléa.DateEngaTheo between #" & Format(Me.ld_revueDateEngaDeb, "mm/dd/yy") & "# and #" & Format(Me.ld_revueDateEngaFin, "mm/dd/yy") & "# )order by T_dossierAléa.DC ", dbOpenDynaset)
     
    Dim str As String
    Dim Motif As String
    Dim observation As String
    Dim clientAviseAtemps As String
    Dim fournisseurAvise As String
    str = ""
    Motif = ""
    observation = ""
    clientAviseAtemps = ""
    fournisseurAvise = ""
    While Not rs.EOF
    str = str & rs.Fields("DC") & Chr(47)
    Motif = Motif & rs.Fields("motifPrincipale") & Chr(47)
    observation = observation & rs.Fields("observation") & Chr(47)
    clientAviseAtemps = clientAviseAtemps & rs.Fields("clientAviseAtemps") & Chr(47)
    fournisseurAvise = fournisseurAvise & rs.Fields("fournisseurAvise") & Chr(47)
    rs.MoveNext
    Wend
    'MsgBox clientAviseAtemps
    DoCmd.RunSQL "UPDATE T_revue INNER JOIN T_dossierAléa ON (t_revue.destination = T_dossierAléa.DESTINATION) AND (t_revue.Origine = T_dossierAléa.ORIGINE) SET T_revue.DC=" & Chr(34) & str & Chr(34) & ",T_revue.observation=" & Chr(34) & observation & Chr(34) & ", T_revue.motifPrincipale = " & Chr(34) & Motif & Chr(34) & ",T_revue.clientAviseAtemps = " & Chr(34) & clientAviseAtemps & Chr(34) & ",T_revue.fournisseurAvise = " & Chr(34) & fournisseurAvise & Chr(34) & " where DC_prévu > DC_Reel;"
    je vous joins ce que j'ai comme résultat. Je voulais juste que pour le champ "DC" par exemple,il met en face de chaque "Origine_Destination" que les DC des aléas concernés ( meme origine,destination) au lieu de tous répéter quand "Dc à heure < DC Prévu"
    J'éspère que j'ai bien expliqué ma question en espérant que vous pouvez m'aider ;
    Images attachées Images attachées  

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    POurquoi tu récupérer tous tes éléments en les séparant par des / ??

    Si j'ai bien compris ton problème, il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL "UPDATE T_revue INNER JOIN T_dossierAléa ON (t_revue.destination = T_dossierAléa.DESTINATION) AND (t_revue.Origine = T_dossierAléa.ORIGINE) SET T_revue.DC=T_dossierAléa.DC, T_revue.observation=T_dossierAléa.observation, T_revue.motifPrincipale = T_dossierAléa.motifPrincipale, T_revue.clientAviseAtemps = T_dossierAléa.clientAviseAtemps,T_revue.fournisseurAvise = T_dossierAléa.fournisseurAvise WHERE DC_prévu > DC_Reel AND (T_dossierAléa.DateEngaTheo between #" & Format(Me.ld_revueDateEngaDeb, "mm/dd/yy") & "# and #" & Format(Me.ld_revueDateEngaFin, "mm/dd/yy") & "# );"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Taoueret Voir le message
    POurquoi tu récupérer tous tes éléments en les séparant par des / ??

    Si j'ai bien compris ton problème, il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL "UPDATE T_revue INNER JOIN T_dossierAléa ON (t_revue.destination = T_dossierAléa.DESTINATION) AND (t_revue.Origine = T_dossierAléa.ORIGINE) SET T_revue.DC=T_dossierAléa.DC, T_revue.observation=T_dossierAléa.observation, T_revue.motifPrincipale = T_dossierAléa.motifPrincipale, T_revue.clientAviseAtemps = T_dossierAléa.clientAviseAtemps,T_revue.fournisseurAvise = T_dossierAléa.fournisseurAvise WHERE DC_prévu > DC_Reel AND (T_dossierAléa.DateEngaTheo between #" & Format(Me.ld_revueDateEngaDeb, "mm/dd/yy") & "# and #" & Format(Me.ld_revueDateEngaFin, "mm/dd/yy") & "# );"
    En fait, pour chaque origine et destination (OD) concerné, il peut avoir plusieurs inomalie(dont Aléa), ce que j'ai besoin c'est de trouver tous les infos d'aléa sur ces OD,et les mettre en face de chaque DC dans les champs corresponds(motif d'aléa,clientAviseAtemps...). Donc, la solution que tu as proposé me permet récuperer que un aléa ...

Discussions similaires

  1. update un champ par plusieurs champs
    Par babycoca dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/12/2009, 10h19
  2. Réponses: 6
    Dernier message: 26/02/2008, 16h58
  3. Recherche multi-critères (plusieurs champs par critères)
    Par nancy_leblanc dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/12/2007, 08h26
  4. update d'un champs par le minimum d'une table liée
    Par tiopan dans le forum Access
    Réponses: 2
    Dernier message: 27/03/2006, 16h49
  5. order par plusieurs champs
    Par Death83 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2005, 10h12

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