REquete base access

1 réponse
Avatar
frankie666
Bonjour,

J'ai actuellement ce code pour attaquer une base access qui contient
plusieurs tables (10)depuis excel:

'----------------------------
Dim DbF As Database
Dim RsF1, RSF2 As Recordset

Set DbF = DBEngine.OpenDatabase("c:\ma_base.mdb")
Set RsF1 = DbF.OpenRecordset(Name:="Clients", Type:=dbOpenTable)
Set RsF2 = DbF.OpenRecordset(Name:="Fournisseurs", Type:=dbOpenTable)

msgbox RsF1.Fields("NOM").Value
msgbox RsF2.Fields("NOM").Value

....
'-----------------

Ma question est la suivante est-il possible plutot que de passer par
"Set RsF1 = Dbf.Open..." de faire une requete du style:

msgbox DbF("Clients").Fields("NOM").value ??????
msgbox DbF("Fournisseurs").Fields("NOM").value ??????

Cela me permetrait de rendre mes requetes dynamiques.

Une idée?

Meilleures salutations,

Frankie

1 réponse

Avatar
michdenis
Bonjour Frank,

Au lieu d'ouvrir une table, pourquoi ne pas adresser une requête pour extraire seulement les éléments que tu désires.

'-----------------------
Sub Requête()

Dim BD As Database, Rst As Recordset,
Dim Requete As String
Set BD = OpenDatabase("c:ma_base.mdb")

'à toi d'écrire une requête suffisamment précise pour n'extraire que la donnée sur le champ désiré

Requete = "SELECT Nom From Table1 Group By Nom ORDER By Nom"

' Comme le recordset de la requête ne contiendra qu'un champ, tu pourras utiliser une syntaxe comme ceci :
msgbox rst.Fields(0).name

Set Rst = BD.OpenRecordset(Requete, dbOpenDynaset)


Rst.Close 'ferme le recordset
BD.Close
set Rst=Nothing: set Bd=Nothing

End sub
'-----------------------


Salutations!




"Frank Michel" a écrit dans le message de news:
Bonjour,

J'ai actuellement ce code pour attaquer une base access qui contient
plusieurs tables (10)depuis excel:

'----------------------------
Dim DbF As Database
Dim RsF1, RSF2 As Recordset

Set DbF = DBEngine.OpenDatabase("c:ma_base.mdb")
Set RsF1 = DbF.OpenRecordset(Name:="Clients", Type:ÛOpenTable)
Set RsF2 = DbF.OpenRecordset(Name:="Fournisseurs", Type:ÛOpenTable)

msgbox RsF1.Fields("NOM").Value
msgbox RsF2.Fields("NOM").Value

....
'-----------------

Ma question est la suivante est-il possible plutot que de passer par
"Set RsF1 = Dbf.Open..." de faire une requete du style:

msgbox DbF("Clients").Fields("NOM").value ??????
msgbox DbF("Fournisseurs").Fields("NOM").value ??????

Cela me permetrait de rendre mes requetes dynamiques.

Une idée?

Meilleures salutations,

Frankie