Bonjour,
Cela fait plusieurs fois que je me posait une question qui n'est pas fondamentale en soit mais je pense que la réponse que vous m'apporterez pourra qd même amméliorer mon programme.
Donc voilà : je fait une boucle while not ma_table.eof / wend afin d'insérer les enregistrement de ma table 1 dans ma table 2 selon X critère donc je vous passe les détailles.
Quelle est la méthode la mieux appropriée afin de créer et de modifier mes nouveaux enregistrement de ma table 2.
Je vous cole 2 code et dites moi si vous savez ce qui est le mieux :
1ère solution :
2ème solution
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 Private Sub Commande2_Click() Dim DBS As Database Dim TAB_DOSSIER As DAO.Recordset Dim TAB_IMPORT As DAO.Recordset Set DBS = CurrentDb() Set TAB_DOSSIER = DBS.OpenRecordset("TAB_DOSSIER_PARCELLE_2") Set TAB_IMPORT = DBS.OpenRecordset("TAB_IMPORTATION") TAB_IMPORT.MoveFirst While Not TAB_IMPORT.EOF TAB_DOSSIER.Edit TAB_DOSSIER.AddNew If TAB_IMPORT("NUM_PAR") <> "" Then TAB_DOSSIER("NUM_PAR") = CLng(TAB_IMPORT("NUM_PAR")) End If If TAB_IMPORT("SURFACE") <> "" Then TAB_DOSSIER("SURFACE") = CLng(TAB_IMPORT("SURFACE")) End If If TAB_IMPORT("PROPRIO") <> "" Then TAB_DOSSIER("PROPRIO") = TAB_IMPORT("PROPRIO") End If If TAB_IMPORT("TYPE_TERRAIN") <> "" Then TAB_DOSSIER("TYPE_TERRAIN") = TAB_IMPORT("TYPE_TERRAIN") End If etc etc etc ..... TAB_DOSSIER.Update TAB_IMPORT.MoveNext Wend End Sub
En gros vaut il mieux faire un EDIT / UPDATE à chaque fois que je modifie un champ ou alors une seule fois en début (EDIT) et fin de boucle (UPDATE). En effet étant donné que le champ ne sera pas forcemment mis à jour je ne sais pas quelle est la meilleure solution.
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 [...] TAB_IMPORT.MoveFirst While Not TAB_IMPORT.EOF If TAB_IMPORT("NUM_PAR") <> "" Then TAB_DOSSIER.Edit TAB_DOSSIER.AddNew TAB_DOSSIER("NUM_PAR") = CLng(TAB_IMPORT("NUM_PAR")) TAB_DOSSIER.Update End If If TAB_IMPORT("SURFACE") <> "" Then TAB_DOSSIER.Edit TAB_DOSSIER("SURFACE") = CLng(TAB_IMPORT("SURFACE")) TAB_DOSSIER.Update End If If TAB_IMPORT("PROPRIO") <> "" Then TAB_DOSSIER.edit TAB_DOSSIER("PROPRIO") = TAB_IMPORT("PROPRIO") TAB_DOSSIER.Update End If If TAB_IMPORT("TYPE_TERRAIN") <> "" Then TAB_DOSSIER.edit TAB_DOSSIER("TYPE_TERRAIN") = TAB_IMPORT("TYPE_TERRAIN") TAB_DOSSIER.Update End If etc etc etc ..... TAB_IMPORT.MoveNext Wend End Sub
Aussi, d'un point de vu sécurité... que dois je faire si j'ai oublié de paramétrer une éventuelle erreur et que le programme plante avant d'avoit terminé l'import de ma table 1 vers ma table 2 ?
Merci pour vos bons conseils.
Thomas
Partager