Problème avec mise en relation d'une BDD Access

Résolu
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007 - 31 mai 2005 à 10:19
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 - 1 juin 2005 à 08:19
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

tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
31 mai 2005 à 10:24
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
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 11:58
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
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 15:56
pour les champs Texte : '"&...&"'
pour les champs Numerique : "&...&"

It@li@
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 16:42
pour les dates : #" & DateDebut& " #
pour les mémos c'est comme pour les champs textes

It@li@
3

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

Posez votre question
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 13:57
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
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 14:02
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@
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
31 mai 2005 à 14:39
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
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 14:43
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
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 14:48
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@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 15:03
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 ;)
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
31 mai 2005 à 15:54
INSERT INTO employee (Quantite, Nom) VALUES (3022, "Didier")

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

It@li@
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 16:07
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!
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 16:07
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!
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 16:07
désolé pr le spam :S
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 18:28
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 ??
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
1 juin 2005 à 08:19
Donnes moi ton code et dis moi la ligne qui plante

It@li@
0
Rejoignez-nous