Recordset et addnew

cboin Messages postés 9 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 10 janvier 2007 - 8 sept. 2005 à 12:18
Paladin2107 Messages postés 154 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 5 septembre 2008 - 8 sept. 2005 à 20:20
Bonjour à tous,

Bonjour à tous !
Je suis débutant en VB et j'essai d'ajouter un enregistrement dans une table dans un bdd Access 97 à l'aide d'ADOC

Pour cela j'utilise un contrôle ADOC nommé "Adodc1_Commande"
pour lequel j'ai attribué la chaine de connexion qui va bien et défini le nom de la table sur laquelle je travaille.

ensuite, j'utilise le code suivant :
<<
With Adodc1_Commande.Recordset
.AddNew
!Id_Donneur_Ordre = DataCombo1_DonneurOrdre.BoundText
!Référence_Commande = txt_Refrence_Commande
!Id_Fournisseur = DataCombo1_Fournisseur.BoundText
!Date_de_Commande = Date
!Date_de_livraison_souhaitée = txt_Date_Livraison_Souhaitee
.Update
End With
>>
A l'exécution j'obtiens le message d'erreur suivant :

Erreur d'exécution '91':
Variable objet ou variable bloc With non définie

Lorsque je clique sur "Debug" je constate que c'est la ligne ".Addnew" qui
pose problème (commande en surbrillance).
Je ne comprends pas trop car j'ai pris exemple sur les syntaxes
données dans les tutoriaux et la plupart reprend la syntaxe
With
.AddNew
!nom_champ=valeur
.Update
End With

Je sais qu'il existe une autre syntaxe pour Addnew qui serait
AddNew ListField:={Liste de Champs}, Value:={Liste des valeurs}
mais je ne sais pas quelle syntaxe utiliser pour attribuer les noms des champs à ListField
et les valeurs à Value

Bref je n'arrive pas à ajouter un enregistrement...

Merci d'avance pour votre aide.

Charles

3 réponses

cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
8 sept. 2005 à 14:10
peut etre que tu a ouvert la table en lecture seule. pour cela tu n'a pas la possiblité d'ajouter ni de modifier

Hassen TUNISIE
0
cboin Messages postés 9 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 10 janvier 2007
8 sept. 2005 à 15:47
Tout d'abord merci de me répondre.

J'avais peur de ce genre de réponse.
En fait, pour la syntaxe
With rs
.AddNew
!nom_champ= valeur
.Update
End With
ça marche si au préalable je fait :

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset


' Ouverture de la connection
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GS_97.mdb;Mode=ReadWrite;Persist Security Info=False"
cn.Open


' Chargement de la table
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Source = "tbl_Commande"
rs.ActiveConnection = cn
rs.Open

et à la fin

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

Mais ça ne fonctionne pas avec le contrôle ADOC et ça je comprends pas trop...
au cas ou cela puisse aider voici le chaine de connection spécifée pour ce contrôle :

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GS_97.mdb; Mode=ReadWrite ;Persist Security Info =False

Donc a priori la table est ouverte en Lecture et Ecriture ()

Au passage, j'ai le même message si je fais : Adodc1_Commande.Recordset.Delete
Je ne comprends pas tout....

Merci encore

Charles
0
Paladin2107 Messages postés 154 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 5 septembre 2008 1
8 sept. 2005 à 20:20
ess sa a tt hasar

With Adodc1_Commande.Recordset
.AddNew
Recordset![Id_Donneur_Ordre] = DataCombo1_DonneurOrdre.BoundText
...
.Update
End With

Couscous
0
Rejoignez-nous