Problème Objet Adodc - Access - VB6

philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 5 juil. 2005 à 15:54
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 - 6 juil. 2005 à 13:17
Bonjour tout le monde,

J'en reviens à vous car je commence à déséspérer et je suis au bord du pétage de plomb....
J'aimerais savoir comment aller écrire ou plutôt changer une valeur dans un fichier .mdb via VB6 avec l'objet Adodc. Aussi, comment utiliser ces fameuses requêtes SQL avec cet objet?? . Ca fait trois jours que je cherche des infos là dessus et je n'ai rien trouvé de super clair et je commence à tout mélanger!

Quelle est la syntaxe exacte de ces requêtes?
Pour l'instant j'arrive juste à lire dans une base de données via Adodc mais c'est tout ...
Si vous avez d'autres solutions plus simple, je suis tout ouïe!
Merci d'avance en tout cas

Philippe
phil.lasch@free.fr

10 réponses

cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
5 juil. 2005 à 16:18
tu dois d'abord déclaré une connection:

ex:

Sub Connection()
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Properties("Jet OLEDB:Database Password") = "azerty" dans le cas ou ta base a un password
cnn.Open "Data Source=" & chemin
End Sub

exemple de requetes:
dim rst as ADODB.Recordset
dim SQLString as String

rst.CursorLocation=aduseclient
sqlstring="Select .... From ..... Where ....."
rst.open SQLString,'nom de ta connection ici cnn',adOpenDynamic, adLockOptimistic

exemple accés au valeur:
dim val as string

val = rst.fields("Nom de ton champ").value

fais moi signe si t'a du mal
0
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
5 juil. 2005 à 16:19
tu dois d'abord déclaré une connection:

ex:

Sub Connection()
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Properties("Jet OLEDB:Database Password") = "azerty" dans le cas ou ta base a un password
cnn.Open "Data Source=" & chemin
End Sub

exemple de requetes:
dim rst as ADODB.Recordset
dim SQLString as String

rst.CursorLocation=aduseclient
sqlstring="Select .... From ..... Where ....."
rst.open SQLString,'nom de ta connection ici cnn',adOpenDynamic, adLockOptimistic

exemple accés au valeur:
dim val as string

val = rst.fields("Nom de ton champ").value

fais moi signe si t'a du mal
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
5 juil. 2005 à 16:45
Merci d'avoir répondu si vite, j'essairai demain matin car làj'ai la tête en choux fleur et je dois y aller. Je te tiens au courant si j'ai des probs .... tiens toi prêt ! ).
Moi j'arrivai à récupérer les données de la base Access sans taper une seule ligne de code, la déclaration était faite dans l'objet Adodc mais ca doit pas être la bonne solution car je sais pas comment récupérer une donnée précise dans la bdd sans devoir faire défiler les paramères lus dans la bdd, via les petites flèches du control Adobc.

En tout cas je te dis déjà merci!
Philippe
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
5 juil. 2005 à 19:27
J'ai quand même regardé le code ce soir mais j'ai un problème à l'instruction :
val = rst.fields("Marque").Value

Il me mets variable ojet ou bloc with non définie. J'ai crée une base de donnée bidon Appelée CARS qui contient une colonne avec pour intitulé 'Marque' (avec access). Alors ou est ma faute et comment lister les paramètres de la colonne marque (SUBARU, MITSU, M3 .....).
Voici mon code tel que je l'ai mis avec un commandbutton1

Dim rst As ADODB.Recordset
Dim SQLString As String
Dim val As String


Sub Connection()
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.open "Data Source=" & App.Path & "\essai.mdb"
End Sub



Private Sub Command1_Click()


'exemple accés au valeur:
Connection
val = rst.fields("CARS").Value


End Sub

Désolé si je pose des questions bêtes ...
Merci d'avance !

Philippe
0

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

Posez votre question
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
6 juil. 2005 à 09:24
en premier tu dois faire :

projet -> references et tu coche la case Microsoft ActiveX Data Objects 2.0 Librairie
c'est la librairie ado

ensuite tu met sa dans un module:


Sub Connection()
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.open "Data Source=App.Path & "\essai.mdb""
End Sub

Sub Deconnection()
cnn.close
End Sub

et pour l'accés aux données tu fais:

le mieu dans ton cas et de créer un combobox qui va contenir tes marques

Private Sub Form_Load()
dim rst as adodb.recordset 'tu declare un recordset (jeu d'enregistrement) qui va contenir les champs de ta requete
dim SQLString as String 'tu declare une chaine de caractere qui va contenir ta requete
Connection ' tu établi la connection
SQLString="Select Marque from Cars" 'ta requete
rst.CursorLocation=aduseclient 'c pour pouvoir compter le nombre d'enregistrement
rst.open SQLString,cnn,adOpenDynamic, adLockOptimistic 'tu envoi ta requete dans le recordset

'et la tu rempli ton combobox avec une boucle:
If rst.recordcount <> 0 then 'tu teste si ton recordset n'est pas vide
rst.movefirst 'tu te place sur le 1er enregistrement
while not rst.eof 'tant qu'on est pas a la fin du recordset
combo.additem (rst.fields(0)) 'tu envoi dans ton combo le champ de ta base
rst.movenext 'tu passe a l'enregistrement suivant
loop
End if
Deconnection 'mais tu peux le faire quand tu quitte ton prog pour éviter les reconnections avant chaque requete
end sub

J'espere que ca va t'aidé fais moi signe


End Sub
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
6 juil. 2005 à 09:57
Il me met tjrs Erreur d'éxécution '91' : variable objet ou variable bloc with non définie.
C'est à la ligne là qu'il plante :
rst.CursorLocation = aduseclient 'c pour pouvoir compter le nombre d'enregistrement

Y'a pas besoin de déclarer rst (dim rst as 'je sais ps quoi')?
Et pourquoi ne faut-il pas faire : Set rst = 'je sais ps quoi')?

Ca sert à quoi au juste l'instruction 'set'? c'est bien pour créer un objet?

Merci pour ton aide en tout cas !
Philippe
0
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
6 juil. 2005 à 10:50
je crois que j'ai oublié un truc

essaye ca:

dim rst as new adodb.recordset

ou t'ajoute avant cursorlocation

set rst = new adodb.recordset

fais mois signe
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
6 juil. 2005 à 11:14
Maintenant il plante à la ligne là:
rst.open SQLString, cnn, adOpenDynamic, adLockOptimistic

> erreur d'exécution '3001' probs d'arguments .....
J'en ai marre !

------------------------------------------------
Dim SQLString As String 'tu declare une chaine de caractere qui va contenir ta requete

Sub Connection()
Set cnn = New ADODB.Connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.open "Data Source=" & App.Path & "\essai.mdb"
End Sub


Sub Deconnection()
cnn.Close
End Sub


Private Sub Form_Load()


Connection ' tu établi la connection
SQLString = "SELECT Marque FROM CARS" 'ta requete
Set rst = New ADODB.Recordset
rst.CursorLocation = aduseclient 'c pour pouvoir compter le nombre d'enregistrement
rst.open SQLString, cnn, adOpenDynamic, adLockOptimistic 'tu envoi ta requete dans le recordset


'et la tu rempli ton combobox avec une boucle:
If rst.recordcount <> 0 Then 'tu teste si ton recordset n'est pas vide
rst.movefirst 'tu te place sur le 1er enregistrement
Do While Not rst.EOF 'tant qu'on est pas a la fin du recordset
Combo.AddItem (rst.fields(0)) 'tu envoi dans ton combo le champ de ta base
rst.movenext 'tu passe a l'enregistrement suivant
Loop
End If


Deconnection 'mais tu peux le faire quand tu quitte ton prog pour éviter les reconnections avant chaque requete
End Sub
0
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
6 juil. 2005 à 11:19
ta table s'appelle bien CARS et le champ de ta table c bien Marque?
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
6 juil. 2005 à 13:17
Vi tout à fait !!!!
Vois pas ou est le problème alors ... ah ce cher VB !!!
0