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

NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 10 juin 2005 à 09:42 - Dernière réponse : tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention
- 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.
Afficher la suite 

63 réponses

Meilleure réponse
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 15 juin 2005 à 11:51
3
Merci
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

Merci tof008 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Meilleure réponse
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 16 juin 2005 à 08:44
3
Merci
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

Merci tof008 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 10 juin 2005 à 09:51
0
Merci
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
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 11 juin 2005 à 16:21
0
Merci
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
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 10:47
0
Merci
Pour Con et RS, tu les déclares comment dans VB? Tu mets quoi pour Dim?
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 15 juin 2005 à 11:16
0
Merci
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
cs_DJtoph 16 Messages postés mardi 31 mai 2005Date d'inscription 8 octobre 2007 Dernière intervention - 15 juin 2005 à 11:29
0
Merci
g un peu le meme style de prob sur le forum aide absolue ou un truc comme ca

aidez moi svp
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 11:33
0
Merci
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?
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 14:05
0
Merci
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. ++
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 15 juin 2005 à 14:19
0
Merci
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
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 16:18
0
Merci
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?
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 16:26
0
Merci
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.
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 15 juin 2005 à 16:34
0
Merci
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...
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 16 juin 2005 à 10:24
0
Merci
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?
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 16 juin 2005 à 10:56
0
Merci
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
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 16 juin 2005 à 11:53
0
Merci
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.
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 16 juin 2005 à 13:18
0
Merci
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
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 16 juin 2005 à 14:08
0
Merci
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?
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 16 juin 2005 à 16:11
0
Merci
Ah mais je crois que la fonction elif n'existe pas dans VB6 ...
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 16 juin 2005 à 16:25
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.