Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête Update en ADO qui plante

2 réponses
Avatar
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:=adOpenStatic, _
LockType:=adLockOptimistic, _
Options:=adCmdTable
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

2 réponses

Avatar
Michel_D
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" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
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




Avatar
jerome crevecoeur
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" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
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