Bonjour,
J'ai un souci de l'efficacité de mon code. Je voudrais faire incrementer le numéro de la colonne "ELT_ORD" pour chaque CIR_IDE(En fait chaque PAR_IDE a bp CIR_IDE. ) Il y a 797 013 lignes totales.
voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Option Compare Database Public Function Incrementer_ELT_ORD_v0() InitModif End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub InitModif() Dim conDatabase As ADODB.Connection Set conDatabase = CurrentProject.AccessConnection SelectNOMITINL "Elements_Base", "CIR_IDE", "ELT_ORD" End SubMes questions sont:
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 Private Sub SelectNOMITINL(StrNomTable As String, NomCritere As String, NomIncrementer1 As String) Dim rs As New ADODB.Recordset Dim res As New ADODB.Recordset Dim nbLignes As Integer Dim nbLignes1 As Integer Dim ChnSQL As String Dim counter As Integer 'initialisation des variables nbLignes = 0 ChnSQLRequete1 = "Select " & NomCritere & " from " & StrNomTable & " group by " & NomCritere & ";" rs.Open ChnSQLRequete1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic nbLignes = rs.RecordCount counter = 1 If (nbLignes <> 0) Then rs.MoveFirst While rs.EOF <> True ChnSQLRequete2 = "Select " & NomIncrementer1 & " from " & StrNomTable & " where " & StrNomTable & "." & NomCritere & "=" & rs.Fields(0).Value & _ " order by " & StrNomTable & "." & NomIncrementer1 & ";" res.Open ChnSQLRequete2, CurrentProject.Connection, adOpenKeyset, adLockOptimistic nbLignes1 = res.RecordCount If (nbLignes1 > 0) Then res.MoveFirst While res.EOF <> True res.Fields(0).Value = counter res.Update counter = counter + 1 res.MoveNext Wend res.Close Else res.Close End If counter = 1 rs.MoveNext Wend End If End Sub
1. est-ce que la code est correct?
2. comment je pourrai améliorer l'efficacité (797 013 lignes en totale)?
3. comment je pourrai afficher un message box pour afficher l'état d'avancement de programme (par exemple, afficher le numéro de "CIR_IDE"), svp?
Merci beaucoup!
Partager