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
Partager