'tite question sur une connexion access

Résolu
Signaler
Messages postés
72
Date d'inscription
lundi 6 juin 2005
Statut
Membre
Dernière intervention
15 mai 2006
-
Messages postés
17
Date d'inscription
vendredi 2 décembre 2011
Statut
Membre
Dernière intervention
15 octobre 2016
-
Bonjour ,
voila j ai un pb: je vien de créer une connexion simple avec ma bd en utilisant ADODB, apparament la connexion fonctionne mais mon enregistrement est tjs vide
Si qql a une idée ca ferait plais,
merci merci

4 réponses

Messages postés
17
Date d'inscription
vendredi 2 décembre 2011
Statut
Membre
Dernière intervention
15 octobre 2016

salut

Copie ce code dans un nouveau module de classe, crée ton objet ... et récupère ton recordset en sortie !!

_______________________________________________________________

'Chaine de connexion à Access
Const StrCNN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\tabase.mdb;user id=admin; password=;"


Dim CNN As ADODB.Connection

'****************** ouverture de la connexion à l'initialisation de l'objet ****************


Private Sub Class_Initialize()

On Error Resume Next '* prise en compte d'une erreur de connexion

Set CNN = New ADODB.Connection '* instanciation de la connexion

CNN.ConnectionString = StrCNN '* StrCNN variable publique définie plus haut
CNN.Open '* ouverture de la connexion

If Err.Number <> 0 Then
MsgBox "Connexion à la base de données impossible" & vbCrLf & Err.Description, vbExclamation, "ERREUR DE CONNEXION"
End If


End Sub



'******************* fermeture de la connexion à la destruction de l'objet ****************


Private Sub Class_Terminate()

CNN.Close '* fermeture de la connexion
Set CNN = Nothing '* destruction de la connexion


End Sub

'************** ICI TU METS TA FONCTION'********************************************************************************************



Public Function Ta_Fonction(tes_paramètres as parametres) As type_résultat


Dim strSQL As String
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

On Error Resume Next

cmd.ActiveConnection = CNN '* affectation de la connexion à la commande
cmd.CommandType = adCmdText '* définition du type de commande

rs.CursorLocation = adUseClient '3 réglage du curseur
rs.CursorType = adOpenStatic '3
rs.LockType = adLockReadOnly '1

strSQL = "SELECT tes_données FROM ta_table WHERE condition"

cmd.CommandText = strSQL '* définition de la requête
rs.Open cmd 'cmd en paramètre de l'ouverture du RS

'***********************************************
If Err.Number <> 0 Then '* teste un éventuel plantage
MsgBox cmd.CommandText & Err.Description '*
End If '*
'***********************************************


If Not rs.EOF Then '* teste si le RS n'est pas vide
rs.MoveFirst
Ta_Fonction = rs(0)
End If


rs.Close
Set rs = Nothing
Set cmd = Nothing

End Function

Si tu as besoin de plus d'explication ... n'hésite pas, je me sers aussi pas mal des forums pour essayer de progresser :-)


Private void Ssmiling
3
Merci

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

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

Messages postés
83
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2008

j'aimerais bien t'aider, mais j'ai pas assez d'infos ...
si tu veux mail moi ton debut de projet à
greg38bj2005@free.fr

@ +
Messages postés
72
Date d'inscription
lundi 6 juin 2005
Statut
Membre
Dernière intervention
15 mai 2006

merci ca marche nikel (m si j ai pas vraiment compris la différence...)


j ai juste un autre petit pb (si je peux abuser un peu), moi j ai une procédure et pas une fct ;en parametre je voulais lui passer une form mais imposible , je te met le code concerné tu pourra peut être me conseiller :

Public Sub fournisseur(frm As Form)
...
If Not rs.EOF Then
rs.MoveFirst
Dim i As Integer
For i = 0 To rs.EOF
frm.ComboF.AddItem (rs(i))
Next
End If
...
et pour l'appeler dans une feuille externe au module
Dim c As New cn
c.fournisseur (modifier)

voila si ta le courage...
merci a plus
Messages postés
17
Date d'inscription
vendredi 2 décembre 2011
Statut
Membre
Dernière intervention
15 octobre 2016

Salut Mell :-)


heureux que ça t'ai servi ...


pour ta sub, faut savoir que ton rs.EOF il te renvoie un booléen, vrai ou faux, alors pas cool de le mettre dans le For.


Après, ton frm.comboF.additem(rs(i)) il te remplit une combo à une seule colonne, si tu en as plusieurs faut loucher vers la propriété .list(a,b) de ta combo, ou mieux un rs.getrows()

j'espère avoir répondu à tes attentes...

Bonne soirée (ou bonne journée selon l'heure à lakelle tu lis ce message)


Private void Ssmiling