Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 16h33   #1
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
Par défaut limite nombre d'enregistrement traités

Bonjour,
j'utilise une requete SQL dans du code VBA pour effacer le contenu d'un table avant d'y recopier les données provenant d'un requete et d'y effectuer des calculs.

Or J'ai l'impression que ma requete SQL ne fonctionne que pour 3405 enregistrement alors que les données à recopier sont largement plus nombreuse (env 18000)

Je n'ai pourtant aucun message d'erreur,

pouvez vous m'aider svp .

Si cela aide voici le code
Code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Private Sub Commande70_Click()
 
 
'DoCmd.SetWarnings False    'bloque les messages d'avertissement
DoCmd.RunSQL "DELETE * FROM budget;"
DoEvents
DoCmd.RunSQL " INSERT INTO budget SELECT * FROM pricing;"
'DoCmd.SetWarnings False
 
 
'calcul du prix de chaque livraison en automatique
 
 
Dim rst     As DAO.Recordset
Dim I       As Long
Dim tarif   As Long
 
 
    'concerne le traitement de la requete budgetreq pour les flux LTL
    Set rst = CurrentDb.OpenRecordset("budgetreq", dbOpenDynaset, dbDenyWrite)
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
 
    With rst
        .MoveLast
        .MoveFirst
        For I = 1 To .RecordCount   ' Il existe d'autre moyens pour
                                    ' passer sur tous les enregistrements
            .Edit
            If !nombrepal < 34 Then
                If !nombrepal = 1 Then
                !prixauto = !prix1
                End If
                If !nombrepal = 2 Then
                !prixauto = !prix2
                End If
                If !nombrepal = 3 Then
                !prixauto = !prix3
                End If
                If !nombrepal = 4 Then
                !prixauto = !prix4
                End If
                If !nombrepal = 5 Then
                !prixauto = !prix5
                End If
                If !nombrepal = 6 Then
                !prixauto = !prix6
                End If
                If !nombrepal = 7 Then
                !prixauto = !prix7
                End If
                If !nombrepal = 8 Then
                !prixauto = !prix8
                End If
                If !nombrepal = 9 Then
                !prixauto = !prix9
                End If
                If !nombrepal = 10 Then
                !prixauto = !prix10
                End If
                If !nombrepal = 11 Then
                !prixauto = !prix11
                End If
                If !nombrepal = 12 Then
                !prixauto = !prix12
                End If
                If !nombrepal = 13 Then
                !prixauto = !prix13
                End If
                If !nombrepal = 14 Then
                !prixauto = !prix14
                End If
                If !nombrepal = 15 Then
                !prixauto = !prix15
                End If
                If !nombrepal = 16 Then
                !prixauto = !prix16
                End If
                If !nombrepal = 17 Then
                !prixauto = !prix17
                End If
                If !nombrepal = 18 Then
                !prixauto = !prix18
                End If
                If !nombrepal = 19 Then
                !prixauto = !prix19
                End If
                If !nombrepal = 20 Then
                !prixauto = !prix20
                End If
                If !nombrepal = 21 Then
                !prixauto = !prix21
                End If
                If !nombrepal = 22 Then
                !prixauto = !prix22
                End If
                If !nombrepal = 23 Then
                !prixauto = !prix23
                End If
                If !nombrepal = 24 Then
                !prixauto = !prix24
                End If
                If !nombrepal = 25 Then
                !prixauto = !prix25
                End If
                If !nombrepal = 26 Then
                !prixauto = !prix26
                End If
                If !nombrepal = 27 Then
                !prixauto = !prix27
                End If
                If !nombrepal = 28 Then
                !prixauto = !prix28
                End If
                If !nombrepal = 29 Then
                !prixauto = !prix29
                End If
                If !nombrepal = 30 Then
                !prixauto = !prix30
                End If
                If !nombrepal = 31 Then
                !prixauto = !prix31
                End If
                If !nombrepal = 32 Then
                !prixauto = !prix32
                End If
                If !nombrepal = 33 Then
                !prixauto = !prix33
                End If
             End If
 
             If !nombrepal >= 34 Then
             !prixauto = !prix33 / 33 * !nombrepal
             End If
 
            .Update
            .MoveNext
        Next I
    End With
 
    Set rst = Nothing
    MsgBox ("la requete budget pour les flux LTL a été mise a jour")
 
End Sub
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 17h21   #2
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
Par défaut suite

en fait un message d'erreur s'affiche maintenant et me dit "erreur de conversion de type ... violation de clé"

c'est la raison pour laquelle il recopie seulement 3405 enregistrements sur 17000 cependant je n'identifie toujours pas la raison ?
merci d'avance
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 18h34   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Bonjour,

Compare la structure de la table source à celle de destination pour l'erreur de conversion de type.

Et pour la violation de clef tu dois surement vouloir tranférer des données dans un champ NuméroAuto, ce qu'il ne faut pas faire.

Vu le peu d'info fournie on ne peut que donner des pistes logiques.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 08h38   #4
Invité de passage
 
Homme
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 15
Points : 4
Points : 4
Effectivement lors de la recopie j'utilisais un des champ de la requete comme clé primaire dans la table ou je recopie les données et comme il y avait "énormément de doublon" il ne recopiait pas toutes les données.
Du coup j'ai simplement modifié la requete source pour y créer un champ qui me sert de clef primaire dans la table de recopie ou je suis sur qu'il n'y a aucun doublon et cela fonctionne parfaitement !

Merci pour votre aide
sylvmand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h25.


 
 
 
 
Partenaires

Hébergement Web