Problème avec mise en relation d'une BDD Access [Résolu]

Signaler
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007
-
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
-
Bonjour,

Je suis une noob en vb, mais je dois créer un projet pour mon BTS.

Comment faut il que je connecte ma base de donnée afin de pouvoir insérer des requetes ajout (isert), modifier (update) et suprimer (delete) dans mes Formulaire (feuille VB) ??
J'ai déja regarder de nombreuses source mais je ne comprend pas l'histoire d'utiliser soit DAO, etc... Quelqu'un peut il m'aider SVP ??

De plus, est ce que quelqu'un sait comment récupérer la valeur d'un TEXT1 d'une Feuille1 (ou d'une variable) dans un TEXT2 d'une feuille2(ou une autre variable) ??

Merci de votre aide

16 réponses

Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
28
Ben moi oci je suis en stage pour mon bts donc voila qques infos qui pourrait t'aider.... :

donc pour te connecter à ta base de données en ADODB :
Dim con As Connection
'tudeclare ta connection
Dim rs As New ADODB.Recordset
'declaration d'une requete

Set con = New ADODB.Connection
'connection à la base
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & "Chemin de ta base"
con.Open
Set rs = New Recordset
rs.Open "select * from [ta table] where "ta condition" ", con, adOpenDynamic, adLockOptimistic
rs.MoveFirst

Ensuite pour recuperer la valeur d'une autre feuille :

feuille2.tavaleur.text = feuille1.tavaleur.text

Voila, good luck
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
En DAO c'est à dire en Cochant Projet---Références--Microsoft DAO 3.51 Object Library

Dans ton Code pour l'execution d'une Requete:

Set Db = OpenDatabase("C:\MaBase.mdb") ' Définition base de donnée Set Donnee Db.OpenRecordset("SELECT Adresse FROM MaTable WHERE Fournisseur 'toto'")
If Donnee.RecordCount <> 0 Then
Text1.Text= Donnee("Adresse")
End If
Set Db=Nothing
Set Donnee=Nothing

It@li@
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
pour les champs Texte : '"&...&"'
pour les champs Numerique : "&...&"

It@li@
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
pour les dates : #" & DateDebut& " #
pour les mémos c'est comme pour les champs textes

It@li@
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

Je vous remercie, cela va m'aider précieusement !

Mais, l'un de vous 'a expliqué comment faire avec DAO et l'autre avec ADODB.

Y a t-il l'une ou l'autre de ces méthode qui est mieux pour la base access ou est ce seulement un choix que chaque personne fait ??

Merci
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Personellement je préfére DAO...


Qui est plus ancien que l' ADO...Donc soit disant moins evolué....mais bon ça se discute


It@li@
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
28
ben moi je prends l'ADO parce que j'ai appris à le faire comme ca... On m'a dit aussi qu'il était plus evolué, mais je pense que chacun à ses habitudes, donc à toi de faire ton choix...

tof
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

Oki en effet je trouve la méthode un peu moins complexe.

ITALIA peut tu m'expliquer pourqoui apres ton Endif, tu met cela :

Set Db = Nothing
Set Donnee = Nothing

C'est une convention obligatoire de VB pour que cela marche ou on peut les retirer ???

Merci
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Si ca fonctionne sans ces 2 lignes ...tu peux tester..c'est simplememnt pour liberer la memoire que tu as préalablement Reservé avec le Set Db= et le Set Donnee=

Beaucoup de personne ne le font pas.

It@li@
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

Oki c cool!!

Une derniere petite question et pares, je pense que vous m'aurez bien aidé les mec c sympa :

Je veux faire une requete insert et insérer dasn ma table la valeur par exemple d'un champs de texte ou d'une variable

exemple de mon code :

Private Sub Command1_Click()
Dim ai As Integer
ai = ""
Dim af As Integer
af = ""
Dim Newnum As Integer


' Recherche de l'action immediate a implementer a la fnci
If Creat.tr_manuel.Value = True Then
ai = 7
End If

If Creat.bloc_info.Value = True Then
ai = 6
End If

If Creat.tr_info.Value = True Then
ai = 8
End If

If Creat.tri.Value = True Then
ai = 9
End If


' Recherche de l'action finale à implementer a la fnci
If Creat.destruction.Value = True Then
af = 1
End If

If Creat.rf.Value = True Then
af = 2
End If

If Creat.prorogation.Value = True Then
af = 3
End If

If Creat.info.Value = True Then
af = 4
End If


' Définition base de donnée
Set db = OpenDatabase("G:\BTS\PTI\VB\FNCI\fnci.mdb")
' requete
Set Donnee = db.OpenRecordset("SELECT max(num_fnci) AS max from fnci")
' si il y a des resultats
If Donnee.RecordCount <> 0 Then
' on donne a la variable le numero de fnci trouvée et on incremente
Newnum = Donnee("max") + 1
End If
Set Insert = db.OpenRecordset("INSERT INTO fnci(Num_fnci,Date_creation,Description_fnci, Cause_fnci,Nom,num_ai,num_af) VALUES '', '...','...,'...')
Set db = Nothing
Set Donnee = Nothing


End Sub

Je met directement entre mes ' ' le nom de ma variabl ou de mon champs texte ou est ce plus complexe ??

Merci bocou ;)
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
INSERT INTO employee (Quantite, Nom) VALUES (3022, "Didier")

INSERT INTO employee (Quantite, Nom) VALUES (" & Val1 & ", '" & Val2 & "')

It@li@
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

et pour les dates et champs memo ???

Voila l'erreur que cela me met :

Erreur d'execution "3219" :
operation non valide

Si kkun c, kil me dise a koi ele correspond!
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

et pour les dates et champs memo ???

Voila l'erreur que cela me met :

Erreur d'execution "3219" :
operation non valide

Si kkun c, kil me dise a koi ele correspond!
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

désolé pr le spam :S
Messages postés
47
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
29 mars 2007

S ane fonctionne toujours pas, cela me met tojuours la même erreur :

Erreur d'execution "3219" :
operation non valide

Ne serais ce pas dut au fait qu'il faille ouvrir la base de donnée en mode ecriture ou un machin comme sa ??
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Donnes moi ton code et dis moi la ligne qui plante

It@li@