AddNew????

Résolu
GilgameshDragon Messages postés 4 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 22 avril 2005 - 20 avril 2005 à 14:49
GilgameshDragon Messages postés 4 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 22 avril 2005 - 22 avril 2005 à 08:50
bonjour
pour commencer, je suis sur Visual Basic 6.0 et Access 97
J'ai un DBGrid qui se rempli de façon globale lors du chargement de la fenêtre
Après je dois faire en sorte que avec le début d'un champ ( par exemple tous les codes utilisateurs commençant par "t" ou "au" etc.... n'importe quoi) seul les champs de l'indication apparaisse dans le DBGrid
Je pensais utiliser un RecordSet pour ajouter les éléments que je voulais dedans et après l'afficher dans le DBGrid mais je n'y arrive pas
Je fais un AddNew suivi de plusieurs RecordSet.Fields et les recordField ne veulent prendre aucune valeur j'ai toujours la même erreur "Variable objet ou bloc With non définie"
Cela fait un bon moment que je suis dessus et je n'arrive pas a voir comment cela marche
Est ce que qq'un pourrais m'aidez svp

voila mon code:

Private Sub BRechercher_Click()
Dim req As String
Dim Rs As Recordset

Me.DBUtilisateur.DataSource = Rs

Me.DataUtilisateur.RecordSource = "UTILISATEUR"
Me.DataUtilisateur.Refresh


If Me.TCodeUtilisateur.Text <> "" Then

Me.DataUtilisateur.Recordset.MoveFirst
While Not Me.DataUtilisateur.Recordset.EOF()


If Me.TCodeUtilisateur.Text = Left(Me.DataUtilisateur.Recordset.Fields(0), Len(Me.TCodeUtilisateur.Text)) Then
Rs.AddNew
Rs.Fields(0) = Me.DataUtilisateur.Recordset.Fields(0)
Rs.Fields(1) = Me.DataUtilisateur.Recordset.Fields(1)
Rs.Fields(2) = Me.DataUtilisateur.Recordset.Fields(2)
Rs.Fields(3) = Me.DataUtilisateur.Recordset.Fields(3)
Rs.Fields(4) = Me.DataUtilisateur.Recordset.Fields(4)


End If
Me.DataUtilisateur.Recordset.MoveNext
Wend
End If

End Sub

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
20 avril 2005 à 19:19
Salut,

Pour moi, entre
Dim Rs As Recordset
et
Me.DBUtilisateur.DataSource = Rs

il manque quelquechose comme un

Set rs = TaBDD.OpenRecordset("select .... from ....", dbOpenDynaset) 'en DAO

L'erreur vient sans doute de là car ton Rs n'est pas initialisé.

Ensuite, après un addnew, il faut faire un update quand tu a renseigné les champs.

Loup Gris
3
GilgameshDragon Messages postés 4 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 22 avril 2005
21 avril 2005 à 12:03
Maintenant mon code donne ça:

req = " Select ... from..."
Set DB = OpenDatabase("BDD.MDB")
Set Rs = DB.OpenRecordset(req, dbOpenSnapshot
Set Me.DBUtilisateur.DataSource = Rs

Me.DataUtilisateur.RecordSource = "UTILISATEUR"
Me.DataUtilisateur.Refresh
...

Message d'erreur:
La classe ne gère pas soit l'Automation ou l'interface attendue

J'ai fait plein de chose et ça ne marche pas
help encore svp
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
21 avril 2005 à 19:16
Set Rs = DB.OpenRecordset(req, dbOpenSnapshot ?

Si tu veux pouvoir faire un addnew, il faut mettre dbOpenDynaset.

dbOpenSnapshot, c'est pour créer une vue donc en lecture seule.

Pour le risque de doublons, à mon avis le champs (0) de ta table est peut-être en NumeroAuto ?

Loup Gris
3
GilgameshDragon Messages postés 4 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 22 avril 2005
22 avril 2005 à 08:50
merci bien pour l'info mais au final, j'ai changer de méthode, j'utilise un MsFlexGrid et je rempli manuellement la table
C'est plus long c'est vrai mais au moins j'ai un résultat et je n'ai pas une erreur toutes les 2 secondes
merci quand mm
3

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

Posez votre question
GilgameshDragon Messages postés 4 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 22 avril 2005
21 avril 2005 à 09:52
Merci ça marche déjà mieux, j'ai pensé après avoir posté mon message au set Rs mais je n'avais pas vu qu'il fallait mettre une requete

maintenant j'ai un problème avec l'update. Il me dit ça:
Modifications non effectuées: risque de doublons dans champs index, clé primaire ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez.

Je ne comprend pas car il n'y a pas de doublons dans ma base à moins qu'il veut ajouter après la liste existante dans le DBgrid (DBUtilisateur). Sans le update le résultat que j'obtient c'est qu'il me garde la première ligne de la liste qui était affiché avant
Si je trouve avant un message ici je le préciserai ;)
0
Rejoignez-nous