Requête Update en ADO qui plante

Le
RENAUD Eric
Bonjour,
Dans une requête ADO avec la méthode Update, aux environ de la 700 000 ème
ligne, j'ai un message
Pilote ODBC Microsoft Access
Emplacement du curseur non valide
Pas de jeux de clefs défini
Est-ce un problème de nombre d'enregistrements ou autre ?
Le code est le suivant :

Sub UpdateData_ADO()
Dim Rs1 As ADODB.Recordset
Set Rs1 = New ADODB.Recordset
Rs1.Open Source:="Distributeurs", _
ActiveConnection:="DBQ=" & ThisWorkbook.Path &
"DataBaseName.MDB;" & _
"Driver={Microsoft Access Driver (*.mdb)};",
_
CursorType:­OpenStatic, _
LockType:­LockOptimistic, _
Options:­CmdTable
With Rs1
.MoveFirst
Do Until .EOF
If .Fields("Distributor") = "Café Paris" Then
!ContactName = "Eric"
.Update
End If
.MoveNext
Loop
End With
Rs1.Close
End Sub

D'avance merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel_D
Le #6301281
Tu as essayé avec une requête action de mise à jour

sSql = "UPDATE Distributeurs SET ContactName='Eric' WHERE (Distributor Like 'Café Paris');"
DoCmd.SetWarnings False
DoCmd.RunSQL sSql
DoCmd.SetWarnings True


"RENAUD Eric"
Bonjour,
Dans une requête ADO avec la méthode Update, aux environ de la 700 000 ème
ligne, j'ai un message
Pilote ODBC Microsoft Access
Emplacement du curseur non valide
Pas de jeux de clefs défini
Est-ce un problème de nombre d'enregistrements ou autre ?
Le code est le suivant :

Sub UpdateData_ADO()
Dim Rs1 As ADODB.Recordset
Set Rs1 = New ADODB.Recordset
Rs1.Open Source:="Distributeurs", _
ActiveConnection:="DBQ=" & ThisWorkbook.Path &
"DataBaseName.MDB;" & _
"Driver={Microsoft Access Driver (*.mdb)};",
_
CursorType:­OpenStatic, _
LockType:­LockOptimistic, _
Options:­CmdTable
With Rs1
.MoveFirst
Do Until .EOF
If .Fields("Distributor") = "Café Paris" Then
!ContactName = "Eric"
.Update
End If
.MoveNext
Loop
End With
Rs1.Close
End Sub

D'avance merci




jerome crevecoeur
Le #6301071
Salutations,

1) Il vaudrait mieux utiliser une chaine de connexion et OLE et non pas
ODBC.
LA plupart du temps, c'est bien plus performant:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:mydatabase.mdb;User
Id­min;Password=;

Trouvée sur ce site:
http://www.connectionstrings.com/?carrier¬cess


2) 700 000 c'est beaucoup.
Il faudrait essayer de faire un .UpdateBatch adAfectsAllChapters de
temps à autre pour actualiser la mise à jour sur le serveur.




Tu as essayé avec une requête action de mise à jour

sSql = "UPDATE Distributeurs SET ContactName='Eric' WHERE (Distribu tor Like 'Café Paris');"
DoCmd.SetWarnings False
DoCmd.RunSQL sSql
DoCmd.SetWarnings True


"RENAUD Eric"
Bonjour,
Dans une requête ADO avec la méthode Update, aux environ de la 700 000 ème
ligne, j'ai un message
Pilote ODBC Microsoft Access
Emplacement du curseur non valide
Pas de jeux de clefs défini
Est-ce un problème de nombre d'enregistrements ou autre ?
Le code est le suivant :

Sub UpdateData_ADO()
Dim Rs1 As ADODB.Recordset
Set Rs1 = New ADODB.Recordset
Rs1.Open Source:="Distributeurs", _
ActiveConnection:="DBQ=" & ThisWorkbook.Path &
"DataBaseName.MDB;" & _
"Driver={Microsoft Access Driver (*.m db)};",
_
CursorType:­OpenStatic, _
LockType:­LockOptimistic, _
Options:­CmdTable
With Rs1
.MoveFirst
Do Until .EOF
If .Fields("Distributor") = "Café Paris" Then
!ContactName = "Eric"
.Update
End If
.MoveNext
Loop
End With
Rs1.Close
End Sub

D'avance merci







Publicité
Poster une réponse
Anonyme