Rs.AddNew ajoute un record au mauvais endroit

cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
- 29 juin 2011 à 14:58
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
- 1 juil. 2011 à 14:44
Salut

Je veux ajouter une ligne dans un recordset, mais elle apparaît n'importe où selon la DB.
Le rs.Movelast ne sert à rien

Public Sub AjoutRow()
NameCol = frmDico.MGrid.DataField(0, frmDico.MGrid.Col)
On Error GoTo err
' le type de curseur ne change rien rs.CursorType = adOpenForwardOnly
rs.LockType = adLockOptimistic
rs.Open "SELECT * FROM " & nameTable & "  ", cnx, adOpenDynamic
rs.MoveLast
rs.AddNew

'ceci ajoute quelque chose dans les champs
    For j = 0 To (rs.Fields.Count - 1)
        rs.Fields(j) = ""
    Next j
    
rs.Update
rs.Close

GoTo fin
err: MsgBox "Erreur d'ajout de rang"
fin: End Sub


Merci

6 réponses

NHenry
Messages postés
14955
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 août 2022
162
29 juin 2011 à 21:35
Bonjour,

Tu utilises quel SGBD ?
Quelle est ta clé primaire ?
Quel est le critère de tri ?

Mon site
0
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
30 juin 2011 à 08:35
Hello

C'est ACCESS
Sans clé primaire ni critère de tri, ce sont des tables très réduites dont chaque cellules est indépendantes des autres et pour utilisateur inexpérimenté en ACCESS.
0
NHenry
Messages postés
14955
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 août 2022
162
30 juin 2011 à 09:16
Bonjour,

Quand tu supprimes des enregistrements, tu laisses un "trou" dans la table.
Access comme tout SGBD réutilises ces "trous" pour ajouter de nouveaux enregistrements.

Il est donc normal que la position de l'enregistrement soit "aléatoire" si tu ne mets aucun critère de tri (ORDER BY).

Le plus simple serait un champ auto incrémenté, si ta base de données n'est pas marquée comme réplicable (car dans ce cas, les numéros auto sont aléatoires).

Mon site
0
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
30 juin 2011 à 11:05
Merci

j'avais déjà essayé un ORDER BY mais rien n'est trié et l'ajout est toujours aléatoire
j'ai une table avec un champ ID auto-incrémenté, mais ca provoque une erreur quand j'ajoute une ligne, donc pas d'ajout
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry
Messages postés
14955
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 août 2022
162
30 juin 2011 à 19:46
Bonjour,

Quelle erreur ?

Sinon évites le GOTO, il y a plus propre comme un Exit Sub.

Mon site
0
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
1 juil. 2011 à 14:44
Apparemment, c'est lié à certaines bases de données parce que je n'ai pas le même problème avec les nouvelles bases de données

Merci de ton aide en tout cas
0