cboin
Messages postés9Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention10 janvier 2007
-
8 sept. 2005 à 12:18
Paladin2107
Messages postés154Date d'inscriptionsamedi 25 octobre 2003StatutMembreDerniè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...
cboin
Messages postés9Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention10 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....