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

Access Discussion :

Mettre à jour une Table avec les champs d'une autre


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Mettre à jour une Table avec les champs d'une autre
    Bonjour à tous,

    J’ai deux tables:
    - tbl_Client avec les champs Id, Client & Adresse (Image1)
    - tbl_Adresse avec les champs Id, Client Id & Adresse (Image2)

    Chaque client peut avoir plusieurs adresses.

    Je souhaiterai éviter de lier les deux tables par une requête (à cause du maximum des 255 caractères) ou une relation mais mettre à jour le champ [tbl_Client]![Adresse] directement avec la concaténation des champs venant du champ [tbl_Adresse]![Adresse] pour arriver au rendu final selon Image3)

    Je pense qu’il faut faire un Loop mais je ne suis pas trop à l’aise avec les Loop.

    Mon idee c’est :

    1) Avec un Loop, traverser tous les enregistrements de [tbl_Adresse]![Adresse], de concaténer en fonction [tbl_Adresse]![Client Id]
    2) Et mettre à jour [tbl_Client]![Adresse] en sachant que [tbl_Client]![Id] = [tbl_Adresse]![Client Id]
    mais j’ai commencé un début de code mais je n’y arrive vraiment pas. Je n’arrive pas à faire le lien entre [tbl_Client]![Id] = [tbl_Adresse]![Client Id]

    Merci beaucoup pour votre aide.
    Domivax



    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub RefreshAddress_Click()
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim strSQL As String
     
    Set db = CurrentDb
    Set rs1 = CurrentDb.OpenRecordset("SELECT * " & "FROM tbl_Client")
    Set rs2 = CurrentDb.OpenRecordset("SELECT * " & "FROM tbl_Adresse")
     
    'to reset the field
    MyAdresseConcatenate = ""
    'start the loop from the first record
    rs2.MoveFirst
    Do While Not rs2.EOF
    'create the concatenate
    MyAdresseConcatenate = MyAdresseConcatenate & rs2![Adresse]
     
            strSQL = "UPDATE tbl_Client " & _
                     "SET [Adresse] ='" & MyAdresseConcatenate & "' " & _
                     "WHERE Id=" & rs1![Id]
            'On Error Resume Next
            CurrentDb.Execute strSQL, dbFailOnError
     
    rs2.MoveNext
     
    Loop
     
    Set db = Nothing
    Set rs1 = Nothing
    Set rs2 = Nothing
     
    End Sub
    Images attachées Images attachées    

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub RefreshAddress_Click()
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim strSQL As String
     
    Set db = CurrentDb
    Set rs1 = CurrentDb.OpenRecordset("SELECT * " & "FROM tbl_Client")
    Set rs2 = CurrentDb.OpenRecordset("SELECT * " & "FROM tbl_Adresse")
    dim critereAdresse as string
     
    'to reset the field
    'start the loop from the first record
     
    do while not rs1.eof()
       critereAdresse="[Id]=" &  rs1![Id]
     
       '=== Concatène les adresses
       call rs2.findfisrt(critereAdresse)
       MyAdresseConcatenate=""
     
       do while not rs2.nomatch
     
            if MyAdresseConcatenate<>"" then
               MyAdresseConcatenate=MyAdresseConcatenate & vbnewline
            end if
     
            MyAdresseConcatenate = MyAdresseConcatenate & rs2![Adresse]
     
            call rs2.findnext(critereAdresse)
     
       Loop
       '--- Concatène les adresses
     
       '=== MAJ des adresses
       rs1.edit
       rs1.adresse=MyAdresseConcatenate 
       rs1.update
       '--- MAJ des adresses
     
       rs1.movenext
    loop
     
    rs1.close: Set rs1 = Nothing
    rs2.close: Set rs2 = Nothing
    db.close   Set db = Nothing
     
    End Sub
    Devrait faire ce dont tu as besoin.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/07/2016, 11h37
  2. [Oracle] Requête qui sélectionne tous les champs d'une table et un champ d'une autre table
    Par roswina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/06/2015, 13h34
  3. [AC-2010] Alimneter une table avec les champs d'une autre table selon critères
    Par tibao276 dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2014, 21h26
  4. Réponses: 3
    Dernier message: 18/07/2006, 17h37
  5. [VB6]Mettre à jour une table avec les valeurs d'une DATAGrid
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/05/2006, 20h56

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