Rs.AddNew et première ligne vide

[Résolu]
Signaler
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
Hello,

Je veux ajouter des lignes dans un recordset, ca se passe bien, sauf que j'ai la première ligne vide

rsCombi.Open "SELECT * FROM Combinaisons ;", cnxCombi, adOpenDynamic, adLockOptimistic
'ceci ne sert à rien: rsCombi.MoveLast:rsCombi.MoveFirst
'quand pas de rs.AddNew, la première ligne est remplie mais est effacée à chaque nouvelle entrée
rsCombi.AddNew
'on remplit la BD avec les paramètres
rsCombi(0) = cbxNameCombi.Text
rsCombi(1) = cbxValCombi.Text
                                                                                                                                
For i = 0 To 8
    If txtM(i).Text <> "" Then
        rsCombi(i + 4) = txtM(i).Text
    Else: rsCombi(i + 4) = " "
    End If
Next i
rsCombi.Update
rsCombi.Close
Set rsCombi = Nothing

Merci à vous

6 réponses

Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
Hello

En fait, je pense ne pas bien avoir expliqué le problème: chaque nouvelle ligne est entrée après chaque nouveau clic, ce qui veut dire que la première ligne est une création d'un recordset (nClick=1), et les suivantes sont des modifications (nClick >1).
En clair, il ne faut pas de rs.AddNew pour la première ligne (contrairement à la doc microsoft), mais par contre, il en faut pour les suivants. Donc un truc du genre marche très bien..

If nClick > 1 Then
   rsCombi.MoveLast
   rsCombi.AddNew
End If
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
bonsoir
mets ton " rsCombi.AddNew " à la fin du remplissage de ligne  au lieu de le mettre au début !

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour

Pour moi le code est correct et le AddNew est bien placé.

lacomm, est-ce que la ligne vide provient du SELECT ou du AddNew ?


A mon avis elle existe déjà dans la table et ton code n'est pas en cause.


Amicalement
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

y'a t'il un ON ERROR avant le code indiqué?
quelle est ta chaine de connexion à la base?
y a t'il des champs attachés à un autre RS ouvert? (datasource)
est-ce de l'ado ou du dao?
base "access"?
ta vue contient bien au moins 12 champs?
quelle version du mdac utilies-tu?

que donne le même code avec juste cette connexion ? :
rsCombi.Open "Combinaisons", cnxCombi

(beaucoup de questions hein )
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
Bonjour et merci à tous pour vos réponses

mets ton " rsCombi.AddNew " à la fin du remplissage de ligne  au lieu de le mettre au début !

En effet, la première ligne est remplie (comme quand je ne mets pas de rs.AddNew) mais j'ai ensuite un message d'erreur: le champ Combinaisons.1 ne peut contenir la valeur Null car la valeur de la propriété Required pour ce champ est True. Saisissez une valeur dans ce champ, alors que ce champ n'est pas vide

est-ce que la ligne vide provient du SELECT ou du AddNew ?

Du rs.AddNew car la première ligne est bien remplie lorsqu'il n'y a pas de AddNew

y'a t'il un ON ERROR avant le code indiqué?
non

quelle est ta chaine de connexion à la base?
Elle vient d'une boîte de dialogue

y a t'il des champs attachés à un autre RS ouvert? (datasource)
non pas de recordset, mais bien une base ouverte pour lister des champs

est-ce de l'ado ou du dao?
ADO

base "access"?
ACCESS

ta vue contient bien au moins 12 champs?
oui

quelle version du mdac utilies-tu?
mdac 2.71

que donne le même code avec juste cette connexion ? :
rsCombi.Open "Combinaisons", cnxCombi
Ca donne une première ligne, une deuxième ligne remplie de ce que j'attends mais ca empêche l'update d'une ligne supplémentaire  et donne le message suivant: le jeu d'enregistrements suivant ne prend pas en charge la mise à jour. Le type de curseur et le mode de verrouillage sont renseignés comme dans ce code dans la doc.

Encore merci à tous
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
Erratum:
Que donne le même code avec juste cette connexion ? :
rsCombi.Open "Combinaisons", cnxCombi
Ca donne une première ligne vide, une deuxième ligne remplie de ce que j'attends mais ca emp