Exporter le résultat d'une requête vers un fichier access [Résolu]

jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 2 nov. 2004 à 16:22 - Dernière réponse : cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention
- 8 nov. 2004 à 20:12
Bonjour à tous ,

Voilà mon problème, j'effectue une requête SQL sur une BD et je souhaiterai exporter le résultat de la requête (environ 1000 lignes) dans une nouvelle base de données (1 seule table avec 4 champs)

Merci d'avance pour votre aide très précieuse !


Jujunio
Afficher la suite 

11 réponses

Meilleure réponse
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 2 nov. 2004 à 21:28
3
Merci
Salut, avec sql c simple, un tit exemple en DAO mais en ADO on peut faire la même chose :

Set db = OpenDatabase("c:\temp\bd1.mdb")
db.Execute "SELECT * INTO table2 IN 'c:\temp\bd2.mdb' From table1"

"c:\temp\bd1.mdb" c'est ta base de départ
table2 c le nom de la table que tu veux créer dans la base d'arrivée.
'c:\temp\bd2.mdb' c'est la base d'arrivée
table1 c'est la table dans la base d'origine

le * ça peut être : champ1, champ2, ....

et, à la place de table1, ça pourrait être table1, table2, ...

En fait, pour être plus clair, tu construis ta requête et tu insères INTO TaTableDeReception IN 'TaBaseDeRecption'entre le select * et le from.

Si je ne suis pas assez clair, n'hésite pas, demande des précisions.

Cordialement, CanisLupus

Merci cs_CanisLupus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

alias666 308 Messages postés mardi 1 juin 2004Date d'inscription 23 mars 2010 Dernière intervention - 2 nov. 2004 à 16:41
0
Merci
Ca marche pas si tu fais:
- tu lances ta nouvelle base tu fais "fichier/données externes/importer"
- tu sélectionnes ta requête et ensuite importer.

_______________________
4L!@$ >>>>
jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 2 nov. 2004 à 17:22
0
Merci
Je préfère que ça soit automatique dans une fonction VB. Tu n'as pas une idée ??

Jujunio
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 2 nov. 2004 à 21:08
0
Merci
Bhà ce que tu peux faire c'est un truc de ce genre

[code]
open "toto.txt" for output as #1 'ouverture du fichier
do until rs.eof 'Boucle jusqu'à la fin du recordset
print #1, rs.fields("LLLLLL") 'Inscription des infos contenue dans la colonne LLLLLL
loop
close #1 'Fermeture du fichier

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 3 nov. 2004 à 09:18
0
Merci
Salut CanisLupus

Merci pour ton aide.
Je t'ai très bien compris, je vais faire l'essai et je te tiens au courant

Merci
Jujunio
jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 4 nov. 2004 à 10:31
0
Merci
Salut, j'ai fais l'essai mais j'ai deux erreurs au moment de la requête :

1°)La méthode Refresh échoue mais le résultat est bien récupéré dans la nouvelle table

2°)Quand je fais la requête à nouveau, un message m'indique que la table existe déjà !

3°)Si je change le nom de ma table de récéption, un message m'indique que "Cette opération n'est pas autorisé si l'objet est fermé mais la table est quand même récupérée !

Alors je suis un peu perdu !!!

Voila ma requête :
-----------------------
Adodc2.RecordSource = "SELECT Cli.Cli, Cli.Int_Loc, tie.tel, tie.gsm INTO maTable2 In 'c:\temp\bd2.mdb' From Tie inner join Cli on tie.tie=cli.tie WHERE Tie.Tie=Cli.Tie And Tie.Gsm Is Not Null And Cli.Ste='T'"

Call Adodc2.Refresh

-----------------------

Jujunio
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 4 nov. 2004 à 20:22
0
Merci
Ok, je ne savais pas que tu utilisais un DataControl. Personnellement je n'en utilise pas. Sinon pour tes 3 points :

1°) Cette requete ne remonte rien ni dans un recordset ni dans un datacontrol, donc refresh ne fonctionne pas. La requete que je t'ai donné ne travaille que dans la base, comme "delete from ..." par exemple.

2°) Une requete select .... into ... crée une table donc si cette table existe, il y a erreur. Dans ce cas, il faut détruire la table de réception avant. Voilà ce que j'utilise en DAO :

Dim db As Database
Dim tbl As TableDef

' Ouverture de la base de réception
Set db = OpenDatabase("c:\temp\bd2.mdb")
' Recherche de la table de réception
For Each tbl In db.TableDefs
' si elle existe, on la détruit
If LCase(tbl.Name) = "table2" Then
db.TableDefs.Delete tbl.Name
Exit For
End If
Next

' ouverture de la base de départ
Set db = OpenDatabase("c:\temp\bd1.mdb")
' exécution de la requete de transfert
db.Execute "SELECT * INTO table2 IN 'c:\temp\bd2.mdb' From table1"


3°) Si tu supprimes la table avant, tu n'auras plus ce message.

Maintenant, est-ce que tout ça peut être utilisé avec un DataControl ? je ne sais pas. Faut tester.

J'espère que j'ai pu t'être utile.

Bonne prog.

Cordialement, CanisLupus
jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 5 nov. 2004 à 11:42
0
Merci
Salut finalement j'ai utilisé le modèle objet ADODB.

Dim cnn As New ADODB.Connection

    ' Connexion à la base de donnée
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Mes Documents\MyDataBase.mdb"

    ' Suppression de la table "Table1"
    cnn.Execute "DROP TABLE Table1"

    cnn.Close
    Set cnn = Nothing



Puis j'ouvre ma base de départ et j'effectue ma requête ! Là ça fonctionne très bien.

ps : comment je peux tester si la table existe ounon dans la base ?

Merci.

Jujunio
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 5 nov. 2004 à 15:25
0
Merci
En ADO, j'ai testé ça :

'Référence : Microsoft ADO Ext. 2.8 for DDL and Security
Dim cnx As New ADODB.Connection
Dim mycat As New ADOX.Catalog
Dim tbl As New ADOX.Table

cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = "C:\temp\bd1.mdb"
cnx.Open

mycat.ActiveConnection = cnx

' Recherche si la table existe
For Each tbl In mycat.Tables
If LCase(tbl.Name) = "table1" Then
mycat.Tables.Delete "table1"
Exit For
End If
Next

Bonne prog

Cordialement, CanisLupus
jujunio 37 Messages postés lundi 24 mars 2003Date d'inscription 22 septembre 2010 Dernière intervention - 8 nov. 2004 à 12:14
0
Merci
Salut CanisLupus et merci pour ton aide,

J'ai encore un soucis : avec une base access, ça fonctionne bien mais avec une base oracle ça plante.

base source (ORACLE) et base de destination (ACCESS)

J'ai une erreur dans la requete : "mot-clé absent"

Voici cette requête :

str3 = "SELECT * INTO maTable IN '" & base_dest & "' From Tie 


"maTable" se trouve dans la base base_dest (access)
la table "TIE" se trouve dans la base ORACLE

Je ne sais pas si la syntaxe reste la même quand on travaille sur une base ORACLE.

Jujunio
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 8 nov. 2004 à 20:12
0
Merci
Là, tu me colles.
En principe, le SQL de base fonctionne avec tous les types de bdd qui l'acceptent mais est ce qu'on peut utiliser le "SELECT ... INTO ..." avec des bases différentes ? Je ne sais pas, jamais testé.
Je ne peux pas te répondre ce soir. Au boulot, on a les 2 types de bdd (access et oracle), on fait des requêtes sur l'une OU sur l'autre mais pas sur les 2 en même temps. Faudra que je teste mais je ne te promet rien. Repose tout de même cette question sur le forum, peut-être quelqu'un a la solution ?

Cordialement, CanisLupus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.