[VB6 + Access] Mettre à jour des champs d'une base de données

Résolu
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005 - 10 juin 2005 à 09:42
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 - 23 juin 2005 à 16:14
Bonjour,

J'aimerais savoir la synthaxe de programmation pour mettre à jour/modifier un champ d'une table d'une base de données Access 2002 car je ne sais pas du tout comment faire.

¤ Enoncé du projet ¤

J'aimerais donc récupérer une chaine que l'utilisateur entre dans une TextBox (nommé "txt_licence"). J'aimerais ensuite en cliquant sur un bouton mettre la base de donnée à jour en ajoutant le contenu de "txt_licence" dans une table nommé "Poste" pour le champ "Licence". Ce champ doit correspondre à la ligne du "CodePoste" concerné que l'utilisateur a choisi en cliquant sur une ListBox nommé "lst_poste", le champ "CodePoste" étant la clé primaire de la table "Poste".


Pour résumer on choisit donc dans le programme le CodePoste puis on entre une licence dans le txt_licence. A partir ce ces 2 éléments je veux mettre à jour le champ "Licence" de la table "Poste" pour le "CodePoste" concerné dans une base de données Access 2002 nommé "Gestionnaire de licence.mdb".

Quelqu'un pourrait-il me dire comment programmer ça sous VB6?

Message pour tof008: étant donné que tout le monde programme en ADO et me demande pourquoi j'utilise DAO (cf. Monsieur Gross ), je veux bien une réponse en ADO. Si j'ai pas programmé en ADO jusque là c'est parce que je ne sais pas comment ça marche mais bon, je crois que je vais m'y mettre donc commençons dès maintenant.

63 réponses

tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
15 juin 2005 à 11:51
quand c'est public sub, tu peux l'appeler n'importe ou dans ton projet... Pour les references :

Microsoft active X Data Objects Library

dans les composants

Microsoft ADO Data control

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
3
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
16 juin 2005 à 08:44
ok, voila :
dim db as new ADODB.connection
dim req_ent as new ADODB.recordset

Call connexion(db)
Set req_ent = new Recordset

req_ent.open "select distinct LibService from Service order by LibService", db, adopendynamic, adlockoptimistic

req_ent.MoveFirst
While req_ent.EOF = False
lst_service.AddItem req_ent!LibService
req_ent.MoveNext
Wend
Voila ton prog en ADO!!!
Good luck NeT_SlipKnoT !!!



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
3
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
10 juin 2005 à 09:51
ah ben voila! tu defviens raisonnable...lol
La je vais pouvoir t'aider...

Set Con = New ADODB.Connection
'connection à la base
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & "H:\projet\metrologie.mdb"

Con.Open



Set RS = New Recordset RS.Open "update Poste set licence '" & txtlicence.text & "' where CodePoste '" & lstposte.text & "' ; ", Con, adOpenDynamic, adLockOptimistic

Voila! J'espere que ca t'aidera!!!



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
11 juin 2005 à 16:21
hey NeT_SlipKnoT !!! g appris un bon truc pour toi jte transmettrai par mail... Ca a marché ma technique? ? ? J'espere que tu t'en sors avec vb....Ca avance ton truc?



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0

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

Posez votre question
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 10:47
Pour Con et RS, tu les déclares comment dans VB? Tu mets quoi pour Dim?
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
15 juin 2005 à 11:16
tu fais comme ca...

Dim con As New ADODB.Connection
Dim RS As New ADODB.Recordset

Et pour la connexion, tu pe la mettre dans un module :

Public Sub SeConnecter(cnx)
'Dim con As New ADODB.Connection
'declaration de la connexion
Set cnx = New ADODB.Connection 'connection à la base
cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\metrologie.mdb"

cnx.Open
End Sub

et ensuite tu l'appelle comme ca quand t'en a besoin...

Call SeConnecter(con)

J'espere que ca t'aidera!!!!


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
cs_DJtoph Messages postés 16 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 8 octobre 2007
15 juin 2005 à 11:29
g un peu le meme style de prob sur le forum aide absolue ou un truc comme ca

aidez moi svp
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 11:33
Merci beaucoup pour tes réponses tof008, je crois qu'aujourd'hui je te poserai pas mal de questions donc tu peux surveiller ce post :-).

Pour que "Dim con As New ADODB.Connection" fonctionne, il faut cocher quoi comme référence? Parce que j'ai coché "Microsoft ADO Ext. 2.7" mais ça ne fonctionne pas, j'ai un message d'erreur au niveau du "Dim" ...

Pour la fonction à appeler c'est une très bonne idée. Quelle est la différence entre une Private Sub et une Public Sub?
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 14:05
Merci pour les références et composants, ça fonctionne. Mais je ne pense pas que le composant "Microsoft ADO Data Control" soit nécessaire, les 2 références doivent suffir normalement.

J'ai donc utilisé ce que tu m'as écris mais j'ai un message d'erreur. Quand j'exécute le programme j'ai un message d'erreur au niveau de la ligne Set cnx = New ADODB.Connection : "Erreur de compilation: utilisation incorrect du mot clé New".

Tu saurais quoi faire?

Merci. ++
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
15 juin 2005 à 14:19
Déjà as tu bien mis tout ca dans un module...
Ensuite il ne fo pas que tu declare cnx dans les options explicit, mais juste dans le module
Ca marche comme ca?


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 16:18
J'ai mis ça dans le module (je sais pas vraiment ce que t'appelles module, j'ai écris ça à la suite de mon programme tout simplement):

Public Sub Connexion(cnx)


Dim RS As New ADODB.Recordset


Set cnx = New ADODB.Connection
cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Gestionnaire_de_licences.mdb"

cnx.Open
Set RS = New Recordset

End Sub



Voilà ce qui est écrit quand je clique sur un bouton pour exécuter le code:

Private Sub cmd_majlic_Click()

Dim cnx As New ADODB.Connection
Dim RS As New ADODB.Recordset

Call Connexion(cnx)


RS.Open "update Poste set licence '" & txt_licence.Text & "' where CodePoste '" & lst_poste.Text & "' ; ", cnx, adOpenDynamic, adLockOptimistic


End Sub


Lorsque j'execute le programme, j'ai un message d'erreur au niveau de la ligne RS.Open "update Poste set licence '" & txt_licence.Text & "' where CodePoste '" & lst_poste.Text & "' ; ", cnx, adOpenDynamic, adLockOptimistic : "Aucune valeur donnée pour un ou plusieurs des paramètres requis".

Pourtant en laissant le pointeur de la souris sur chaque élément de la ligne pour y voir leur valeur, j'ai l'impression que tout a une valeur. La licence et le CodePoste notamment ont une valeur.

Vois-tu quel est le problème?
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 16:26
Oublie mon message!! Mon erreur venait tout simplement du fait que mon champ dans la base de données s'appellait "LicOffice" et pas "Licence". Je n'avais pas fais attention. Désolé.
Ca fonctionne.

Merci beaucoup tof008.
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
15 juin 2005 à 16:34
Je continue dans mes questions...

J'ai donc commencé mon programme en DAO. Ce qui fait que mon programme qui consulte à tout simplement consulter la base de données est en DAO. J'aimerais donc changer ça afin que cette partie de mon programme soit aussi en ADO. Peux-tu m'indiquer comment faire ça en ADO?

Voilà le modèle de codes que j'aimerais transformer en ADO:

Dim db As DAO.Database
Dim req_ent As DAO.Recordset

Set db = OpenDatabase("D:\Geoffrey\Projet\Gestionnaire de licences\Gestionnaire_de_licences.mdb")

Set req_ent = db.OpenRecordset("select distinct LibService from Service order by LibService")
req_ent.MoveFirst
While req_ent.EOF = False
lst_service.AddItem req_ent!LibService
req_ent.MoveNext
Wend

Voilà un exemple de prog en DAO. J'aimerais refaire ça mais en ADO...
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
16 juin 2005 à 10:24
Merci pour ce cours en ADO. J'ai tout changé et apparement ça marche.
Faut donc que j'apprenne par coeur la syntaxe en ADO pour savoir comment faire les requêtes.

Sinon ce que t'appelles "module" ce n'est autre qu'une procedure ou une fonction en fait?
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
16 juin 2005 à 10:56
Non, en fait le module c'est quand tu vas dans la fenetre projet et que tu fais click droit, ajouter, et au lieu de mettre feuille, tu met module... Ca te permet d'appeler ton module ou que tu sois dans ton projet...
Mais dans le module tu met une procedure ou une fonction...


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
16 juin 2005 à 11:53
Ah ok donc ce que j'ai fait c'est pas un module. Je l'ai mis direct dans le programme en lui-même. Mais bon apparement ça marche aussi donc je pense pas que je vais modifier...

Sinon j'ai une question: est-ce possible de faire des "Case" avec plusieurs conditions sur une seule ligne, notamment avec le mot "Or" ?
Parce que j'ai essayé cette ligne mais ça ne marche pas:

Case "NON" Or "non" ("Type de données incompatibles")

Si jamais tu sais comment faire ça, ou trouver un autre moyen. Parce que j'aimerais effectuer la même action pour plusieurs conditions alors ça m'embête de faire plusieurs "Case" pour mettre en-dessous la même ligne de code à chaque fois...

Merci.
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
16 juin 2005 à 13:18
Je sais pas si tu peux mettre plusieurs conditions dans un Case, mais si tu sais pas comment faire, fais un if, ca devrait mlarcher...



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
16 juin 2005 à 14:08
Beh je voulais pas trop utiliser un if mais bon je veux bien essayer.
C'est quoi la synthaxe pour le if pour faire deux conditions + un else? If, Elif et Else?
Y'a moyen que tu me donnes un exemple de synthaxe STP?
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
16 juin 2005 à 16:11
Ah mais je crois que la fonction elif n'existe pas dans VB6 ...
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
16 juin 2005 à 16:25
If i = 1 Or i = 2 Then
text1.Text = oui
Else
text1.Text = non
End If
Voila qui devrait t'aider...


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
Rejoignez-nous