transfert sans copier coller de multiples requêtes dans une base
3 réponses
MV90
Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans utiliser
les fonctions copier/coller, car l'action TransférerBase crée à chaque fois
une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour,
Par macro, pas d'idée mais avec du vba. Une piste peut-être : (Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz() Via VBA Sub OnLance() Call zz End Sub
Function zz() Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef Dim Trouve As Boolean, strSQL As String, arrNom Dim i As Integer Set bd = DBEngine.OpenDatabase("C:mv902.mdb") ' Verif si la table receptrice existe For Each t In bd.TableDefs If t.Name = "Resultat" Then Trouve = True Exit For End If Next t ' Tableau des noms de requêtes (sélection) à fusionner ' Adapter la méthode au besoin arrNom = Array("Paris", "Orsay", "Lyon") For i = LBound(arrNom) To UBound(arrNom) qryNom = arrNom(i) If Not Trouve Then strSQL = "Select * into Resultat In " & Chr(34) _ & bd.Name & Chr(34) & " from " & qryNom Trouve = True Else strSQL = "Insert into Resultat In " & Chr(34) _ & bd.Name & Chr(34) _ & " select * from " & qryNom End If CurrentDb.Execute strSQL Next i Set t = Nothing bd.Close Set bd = Nothing MsgBox "Fusion terminée" End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes identiquement formatées dans une table unique de destination sans utiliser les fonctions copier/coller, car l'action TransférerBase crée à chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Par macro, pas d'idée mais avec du vba.
Une piste peut-être :
(Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel
en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz()
Via VBA
Sub OnLance()
Call zz
End Sub
Function zz()
Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef
Dim Trouve As Boolean, strSQL As String, arrNom
Dim i As Integer
Set bd = DBEngine.OpenDatabase("C:mv902.mdb")
' Verif si la table receptrice existe
For Each t In bd.TableDefs
If t.Name = "Resultat" Then
Trouve = True
Exit For
End If
Next t
' Tableau des noms de requêtes (sélection) à fusionner
' Adapter la méthode au besoin
arrNom = Array("Paris", "Orsay", "Lyon")
For i = LBound(arrNom) To UBound(arrNom)
qryNom = arrNom(i)
If Not Trouve Then
strSQL = "Select * into Resultat In " & Chr(34) _
& bd.Name & Chr(34) & " from " & qryNom
Trouve = True
Else
strSQL = "Insert into Resultat In " & Chr(34) _
& bd.Name & Chr(34) _
& " select * from " & qryNom
End If
CurrentDb.Execute strSQL
Next i
Set t = Nothing
bd.Close
Set bd = Nothing
MsgBox "Fusion terminée"
End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans utiliser
les fonctions copier/coller, car l'action TransférerBase crée à chaque fois
une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Par macro, pas d'idée mais avec du vba. Une piste peut-être : (Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz() Via VBA Sub OnLance() Call zz End Sub
Function zz() Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef Dim Trouve As Boolean, strSQL As String, arrNom Dim i As Integer Set bd = DBEngine.OpenDatabase("C:mv902.mdb") ' Verif si la table receptrice existe For Each t In bd.TableDefs If t.Name = "Resultat" Then Trouve = True Exit For End If Next t ' Tableau des noms de requêtes (sélection) à fusionner ' Adapter la méthode au besoin arrNom = Array("Paris", "Orsay", "Lyon") For i = LBound(arrNom) To UBound(arrNom) qryNom = arrNom(i) If Not Trouve Then strSQL = "Select * into Resultat In " & Chr(34) _ & bd.Name & Chr(34) & " from " & qryNom Trouve = True Else strSQL = "Insert into Resultat In " & Chr(34) _ & bd.Name & Chr(34) _ & " select * from " & qryNom End If CurrentDb.Execute strSQL Next i Set t = Nothing bd.Close Set bd = Nothing MsgBox "Fusion terminée" End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes identiquement formatées dans une table unique de destination sans utiliser les fonctions copier/coller, car l'action TransférerBase crée à chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Didier Bicking
Tu peux faire de la première requête une requête de création de table, les suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une macro qui les enchaîne toutes dans le bon ordre.
-- Bon courage
Didier Bicking
http://perso.wanadoo.fr/dbicking
"Eric" a écrit dans le message de news:
Bonjour,
Par macro, pas d'idée mais avec du vba. Une piste peut-être : (Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz() Via VBA Sub OnLance() Call zz End Sub
Function zz() Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef Dim Trouve As Boolean, strSQL As String, arrNom Dim i As Integer Set bd = DBEngine.OpenDatabase("C:mv902.mdb") ' Verif si la table receptrice existe For Each t In bd.TableDefs If t.Name = "Resultat" Then Trouve = True Exit For End If Next t ' Tableau des noms de requêtes (sélection) à fusionner ' Adapter la méthode au besoin arrNom = Array("Paris", "Orsay", "Lyon") For i = LBound(arrNom) To UBound(arrNom) qryNom = arrNom(i) If Not Trouve Then strSQL = "Select * into Resultat In " & Chr(34) _ & bd.Name & Chr(34) & " from " & qryNom Trouve = True Else strSQL = "Insert into Resultat In " & Chr(34) _ & bd.Name & Chr(34) _ & " select * from " & qryNom End If CurrentDb.Execute strSQL Next i Set t = Nothing bd.Close Set bd = Nothing MsgBox "Fusion terminée" End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes identiquement formatées dans une table unique de destination sans utiliser les fonctions copier/coller, car l'action TransférerBase crée à chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Tu peux faire de la première requête une requête de création de table, les
suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une
macro qui les enchaîne toutes dans le bon ordre.
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de news:
eTQn0uuAGHA.1032@TK2MSFTNGP11.phx.gbl...
Bonjour,
Par macro, pas d'idée mais avec du vba.
Une piste peut-être :
(Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel
en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz()
Via VBA
Sub OnLance()
Call zz
End Sub
Function zz()
Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef
Dim Trouve As Boolean, strSQL As String, arrNom
Dim i As Integer
Set bd = DBEngine.OpenDatabase("C:mv902.mdb")
' Verif si la table receptrice existe
For Each t In bd.TableDefs
If t.Name = "Resultat" Then
Trouve = True
Exit For
End If
Next t
' Tableau des noms de requêtes (sélection) à fusionner
' Adapter la méthode au besoin
arrNom = Array("Paris", "Orsay", "Lyon")
For i = LBound(arrNom) To UBound(arrNom)
qryNom = arrNom(i)
If Not Trouve Then
strSQL = "Select * into Resultat In " & Chr(34) _
& bd.Name & Chr(34) & " from " & qryNom
Trouve = True
Else
strSQL = "Insert into Resultat In " & Chr(34) _
& bd.Name & Chr(34) _
& " select * from " & qryNom
End If
CurrentDb.Execute strSQL
Next i
Set t = Nothing
bd.Close
Set bd = Nothing
MsgBox "Fusion terminée"
End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans
utiliser les fonctions copier/coller, car l'action TransférerBase crée à
chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2
etc...
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Tu peux faire de la première requête une requête de création de table, les suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une macro qui les enchaîne toutes dans le bon ordre.
-- Bon courage
Didier Bicking
http://perso.wanadoo.fr/dbicking
"Eric" a écrit dans le message de news:
Bonjour,
Par macro, pas d'idée mais avec du vba. Une piste peut-être : (Charger la référence Microsoft DAO 3.xx Object Library)
A copier dans un module global, puis à lancer par une macro ou par appel en VBA :
Via Macro : ExécuterCode - Nom Fonction : zz() Via VBA Sub OnLance() Call zz End Sub
Function zz() Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef Dim Trouve As Boolean, strSQL As String, arrNom Dim i As Integer Set bd = DBEngine.OpenDatabase("C:mv902.mdb") ' Verif si la table receptrice existe For Each t In bd.TableDefs If t.Name = "Resultat" Then Trouve = True Exit For End If Next t ' Tableau des noms de requêtes (sélection) à fusionner ' Adapter la méthode au besoin arrNom = Array("Paris", "Orsay", "Lyon") For i = LBound(arrNom) To UBound(arrNom) qryNom = arrNom(i) If Not Trouve Then strSQL = "Select * into Resultat In " & Chr(34) _ & bd.Name & Chr(34) & " from " & qryNom Trouve = True Else strSQL = "Insert into Resultat In " & Chr(34) _ & bd.Name & Chr(34) _ & " select * from " & qryNom End If CurrentDb.Execute strSQL Next i Set t = Nothing bd.Close Set bd = Nothing MsgBox "Fusion terminée" End Function
Comment depuis une macro transférer le résultat de plusieurs requêtes identiquement formatées dans une table unique de destination sans utiliser les fonctions copier/coller, car l'action TransférerBase crée à chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonjour,
Je crois que c'est ce que fait l'instruction sql si trouve = False (on crée la table) et sinon on ajoute ;-)
Tu peux faire de la première requête une requête de création de table, les suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une macro qui les enchaîne toutes dans le bon ordre.
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Je crois que c'est ce que fait l'instruction sql si trouve = False (on
crée la table) et sinon on ajoute ;-)
Tu peux faire de la première requête une requête de création de table, les
suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une
macro qui les enchaîne toutes dans le bon ordre.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je crois que c'est ce que fait l'instruction sql si trouve = False (on crée la table) et sinon on ajoute ;-)
Tu peux faire de la première requête une requête de création de table, les suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une macro qui les enchaîne toutes dans le bon ordre.
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr