Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connexion à une autre base de données

8 réponses
Avatar
Jpmill
Bonjour voici mon probl=E8me :


J'ai 2 bases de donn=E9e Access 2003 dans le m=EAme r=E9pertoire sur mon PC=
.
Je veux =E0 partir d'un bouton de commande dans un formulaire , pouvoir
faire une requ=EAte SQL sur ma 2e base de donn=E9es. je ne suis pas sur de
la bonne technique =E0 utilser. J'aimerais avoir le code VBA qu'il faut
utiliser pour que =E7a fontionne.


Merci

8 réponses

Avatar
Eric
Bonsoir,

Tu peux faire quelque chose du genre pour une requête Selection, si mes
souvenirs sont encore bons:

Sur l'évènement clic de ton bouton:

Private Sub Commande0_Click
'Charger la référence Microsft DAO Object Library 3.x
Dim strSQL as String ' stockage de la chaine SQL
Dim qry as DAO.Querydef
strSQL = "SELECT * " _
& "FROM LaTable " _
& "IN """ & CurrentProject.Path & "NomAutreBase.mdb"" " _
& "WHERE LaConditionEventuelle ;"
Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
DoCmd.OpenQuery "tmp" ' Ouverure de la requête
CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
' car recréée à chaque lancement
Set qry = Nothing
End Sub



Jpmill a écrit :
Bonjour voici mon problème :


J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
Je veux à partir d'un bouton de commande dans un formulaire , pouvoir
faire une requête SQL sur ma 2e base de données. je ne suis pas sur de
la bonne technique à utilser. J'aimerais avoir le code VBA qu'il faut
utiliser pour que ça fontionne.


Merci




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Jpmill
On 29 sep, 13:23, Eric wrote:
Bonsoir,

Tu peux faire quelque chose du genre pour une requête Selection, si mes
souvenirs sont encore bons:

Sur l'évènement clic de ton bouton:

Private Sub Commande0_Click
   'Charger la référence Microsft DAO Object Library 3.x
   Dim strSQL as String ' stockage de la chaine SQL
   Dim qry as DAO.Querydef
   strSQL = "SELECT * " _
         & "FROM LaTable " _
         & "IN """ & CurrentProject.Path & "NomAutreBase.mdb"" " _
         & "WHERE LaConditionEventuelle ;"
   Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
   DoCmd.OpenQuery "tmp" ' Ouverure de la requête
   CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
                                   ' car recréée à chaque lancement
   Set qry = Nothing
End Sub

Jpmill a écrit :

> Bonjour voici mon problème :

> J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mo n PC.
> Je veux à partir d'un bouton de commande dans un formulaire , pouvoir
> faire une requête SQL sur ma 2e base de données. je ne suis pas sur de
> la bonne technique à utilser. J'aimerais avoir le code VBA qu'il faut
> utiliser pour que ça fontionne.

> Merci

--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=f r



Ok est-ce que il est possible de mettre ça dans un genre de recordset
pour pouvoir y faire des "move next" etc....???
Avatar
Eric
re,

Tu modifies comme suit:

Private Sub Commande0_Click
'Charger la référence Microsft DAO Object Library 3.x
Dim strSQL as String ' stockage de la chaine SQL
Dim rst as DAO.Recordset
strSQL = "SELECT * " _
& "FROM LaTable " _
& "IN """ & CurrentProject.Path & "NomAutreBase.mdb"" " _
& "WHERE LaConditionEventuelle ;"
Set rst = CurrentDb.OpenRecordset(strSQL)
While not rst.EOF
Debug.? rst(0), rst(1), rst(2) ' tous les champs que tu veux
' l'index des champs commence à 0
rst.MoveNext
Wend
Set rst = Nothing
End Sub


Jpmill a écrit :
On 29 sep, 13:23, Eric wrote:
Bonsoir,

Tu peux faire quelque chose du genre pour une requête Selection, si mes
souvenirs sont encore bons:

Sur l'évènement clic de ton bouton:

Private Sub Commande0_Click
'Charger la référence Microsft DAO Object Library 3.x
Dim strSQL as String ' stockage de la chaine SQL
Dim qry as DAO.Querydef
strSQL = "SELECT * " _
& "FROM LaTable " _
& "IN """ & CurrentProject.Path & "NomAutreBase.mdb"" " _
& "WHERE LaConditionEventuelle ;"
Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
DoCmd.OpenQuery "tmp" ' Ouverure de la requête
CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
' car recréée à chaque lancement
Set qry = Nothing
End Sub

Jpmill a écrit :

Bonjour voici mon problème :
J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
Je veux à partir d'un bouton de commande dans un formulaire , pouvoir
faire une requête SQL sur ma 2e base de données. je ne suis pas sur de
la bonne technique à utilser. J'aimerais avoir le code VBA qu'il faut
utiliser pour que ça fontionne.
Merci


--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Ok est-ce que il est possible de mettre ça dans un genre de recordset
pour pouvoir y faire des "move next" etc....???



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Jpmill
On 29 sep, 13:56, Jpmill wrote:
On 29 sep, 13:23, Eric wrote:



> Bonsoir,

> Tu peux faire quelque chose du genre pour une requête Selection, si m es
> souvenirs sont encore bons:

> Sur l'évènement clic de ton bouton:

> Private Sub Commande0_Click
>    'Charger la référence Microsft DAO Object Library 3.x
>    Dim strSQL as String ' stockage de la chaine SQL
>    Dim qry as DAO.Querydef
>    strSQL = "SELECT * " _
>          & "FROM LaTable " _
>          & "IN """ & CurrentProject.Path & "NomAutreBase.mdb "" " _
>          & "WHERE LaConditionEventuelle ;"
>    Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
>    DoCmd.OpenQuery "tmp" ' Ouverure de la requête
>    CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
>                                     ' car recréée à chaque lancement
>    Set qry = Nothing
> End Sub

> Jpmill a écrit :

> > Bonjour voici mon problème :

> > J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
> > Je veux à partir d'un bouton de commande dans un formulaire , pouvo ir
> > faire une requête SQL sur ma 2e base de données. je ne suis pas s ur de
> > la bonne technique à utilser. J'aimerais avoir le code VBA qu'il fa ut
> > utiliser pour que ça fontionne.

> > Merci

> --
> A+
> Erichttp://www.mpfa.info/
> Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl =fr

Ok est-ce que il est possible de mettre ça dans un genre de recordset
pour pouvoir y faire des "move next" etc....???



Voici ce que j'ai comme code et ca me retourne toujours 1 :

Private Sub CmdLancerTransfert_Click()


Dim db As Database
Dim rsRSFSelectTransfert As Recordset


Dim strSQL As String ' stockage de la chaine SQL

strSQL = "SELECT * " _
& "FROM RSF " _
& "IN """ & CurrentProject.Path & "Base de données
RSF.mdb"" " _
& " ;"


Set rsRSFSelectTransfert = CurrentDb.OpenRecordset(strSQL)


MsgBox (rsRSFSelectTransfert.RecordCount)


End Sub
Avatar
Jpmill
On 29 sep, 13:56, Jpmill wrote:
On 29 sep, 13:23, Eric wrote:



> Bonsoir,

> Tu peux faire quelque chose du genre pour une requête Selection, si m es
> souvenirs sont encore bons:

> Sur l'évènement clic de ton bouton:

> Private Sub Commande0_Click
>    'Charger la référence Microsft DAO Object Library 3.x
>    Dim strSQL as String ' stockage de la chaine SQL
>    Dim qry as DAO.Querydef
>    strSQL = "SELECT * " _
>          & "FROM LaTable " _
>          & "IN """ & CurrentProject.Path & "NomAutreBase.mdb "" " _
>          & "WHERE LaConditionEventuelle ;"
>    Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
>    DoCmd.OpenQuery "tmp" ' Ouverure de la requête
>    CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
>                                     ' car recréée à chaque lancement
>    Set qry = Nothing
> End Sub

> Jpmill a écrit :

> > Bonjour voici mon problème :

> > J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
> > Je veux à partir d'un bouton de commande dans un formulaire , pouvo ir
> > faire une requête SQL sur ma 2e base de données. je ne suis pas s ur de
> > la bonne technique à utilser. J'aimerais avoir le code VBA qu'il fa ut
> > utiliser pour que ça fontionne.

> > Merci

> --
> A+
> Erichttp://www.mpfa.info/
> Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl =fr

Ok est-ce que il est possible de mettre ça dans un genre de recordset
pour pouvoir y faire des "move next" etc....???


Avatar
Jpmill
On 29 sep, 13:56, Jpmill wrote:
On 29 sep, 13:23, Eric wrote:



> Bonsoir,

> Tu peux faire quelque chose du genre pour une requête Selection, si m es
> souvenirs sont encore bons:

> Sur l'évènement clic de ton bouton:

> Private Sub Commande0_Click
>    'Charger la référence Microsft DAO Object Library 3.x
>    Dim strSQL as String ' stockage de la chaine SQL
>    Dim qry as DAO.Querydef
>    strSQL = "SELECT * " _
>          & "FROM LaTable " _
>          & "IN """ & CurrentProject.Path & "NomAutreBase.mdb "" " _
>          & "WHERE LaConditionEventuelle ;"
>    Set qry = CurrentDb.CreateQueryDef("tmp", strSQL)
>    DoCmd.OpenQuery "tmp" ' Ouverure de la requête
>    CurrentDb.QueryDefs.Delete "tmp" ' Suppression de la requête
>                                     ' car recréée à chaque lancement
>    Set qry = Nothing
> End Sub

> Jpmill a écrit :

> > Bonjour voici mon problème :

> > J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
> > Je veux à partir d'un bouton de commande dans un formulaire , pouvo ir
> > faire une requête SQL sur ma 2e base de données. je ne suis pas s ur de
> > la bonne technique à utilser. J'aimerais avoir le code VBA qu'il fa ut
> > utiliser pour que ça fontionne.

> > Merci

> --
> A+
> Erichttp://www.mpfa.info/
> Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl =fr

Ok est-ce que il est possible de mettre ça dans un genre de recordset
pour pouvoir y faire des "move next" etc....???



J'ai modifié un peu le code pour utiliser les recordset mais voici que
mon recordcount est toujorus 1 :

Private Sub CmdLancerTransfert_Click()


Dim db As Database
Dim rsRSFSelectTransfert As Recordset


Dim strSQL As String ' stockage de la chaine SQL

strSQL = "SELECT * " _
& "FROM RSF " _
& "IN """ & CurrentProject.Path & "Base de données
RSF.mdb"" " _
& " ;"


Set rsRSFSelectTransfert = CurrentDb.OpenRecordset(strSQL)


MsgBox (rsRSFSelectTransfert.RecordCount)


End Sub
Avatar
Eric
Bonsoir,

Au pas de course, pour connaitre le nb d'enregistrements d'un recordset,
il faut, sous réserve qu'il contienne au moins un enregistrement, se
déplacer sur le dernier, ce qui revient à faire parcourir par le système
le jeu d'enregistrements. Pour le parcourir par la suite il faudra se
repositionner sur le 1er ou alors revenir du dernier vers le 1er en
faisant un MovePrevious

Ce qui pourrait s'écrire pour récupérer le nb d'enreg:
If not rst.EOF then
rst.MoveLast
msgbox " nb d'enregistrements : " & rst.recordcount
Else
Set rst= Nothing: Exit Sub
end if
Pour lire tous les enregistrements du dernier au premier:
While not rst.BOF
debug.? rst(1), rst(2) ' c'est un exemple
rst.MovePrevious
Wend
...



Jpmill a écrit :
On 29 sep, 13:56, Jpmill wrote:




J'ai modifié un peu le code pour utiliser les recordset mais voici que
mon recordcount est toujorus 1 :





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
chpa
Bonsoir,
Et si pour faire simple tu te contentait de créer un lien vers les tables de
la 2ème base ?
Tu pourrais ainsi faire autant de requête que tu souhaite sans te prendre la
tête non ?

"Jpmill" a écrit dans le message de
news:
Bonjour voici mon problème :


J'ai 2 bases de donnée Access 2003 dans le même répertoire sur mon PC.
Je veux à partir d'un bouton de commande dans un formulaire , pouvoir
faire une requête SQL sur ma 2e base de données. je ne suis pas sur de
la bonne technique à utilser. J'aimerais avoir le code VBA qu'il faut
utiliser pour que ça fontionne.


Merci