'tite question sur une connexion access

Résolu
mell01 Messages postés 72 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 15 mai 2006 - 13 juin 2005 à 16:59
Ssmiling Messages postés 25 Date d'inscription vendredi 2 décembre 2011 Statut Membre Dernière intervention 28 septembre 2022 - 14 juin 2005 à 22:04
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

Ssmiling Messages postés 25 Date d'inscription vendredi 2 décembre 2011 Statut Membre Dernière intervention 28 septembre 2022
13 juin 2005 à 22:16
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
greg38bj Messages postés 83 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 17 novembre 2008
13 juin 2005 à 18:49
j'aimerais bien t'aider, mais j'ai pas assez d'infos ...
si tu veux mail moi ton debut de projet à
greg38bj2005@free.fr

@ +
0
mell01 Messages postés 72 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 15 mai 2006
14 juin 2005 à 11:20
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
0
Ssmiling Messages postés 25 Date d'inscription vendredi 2 décembre 2011 Statut Membre Dernière intervention 28 septembre 2022
14 juin 2005 à 22:04
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
0
Rejoignez-nous