IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

exporter l'enregistrement courant


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Par défaut exporter l'enregistrement courant
    Bonjour
    Je voudrais pouvoir exporter depuis un formulaire access , l'enregistrement courant.
    J'ai essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub cmd_transfert_excel_Click()
    Dim requete As String
    Dim nom_fich As String
     
      ' Construction de la requête
     
    requete = "Select * From rqt_pps Where [21-N° MDPH]= " & "'" & Me.[21-N° MDPH] & "'"
     
     ' Construction du nom du fichier d'exportation
    nom_fich = "'" & Me.[1-NOM DE L'ENFANT:] & "_" & Me.[2-Prénom] & "_" & Me.[21-N° MDPH] & "_origine_" & Me.[NOM_REFERENT] & ".xls'"
     
        DoCmd.OutputTo acOutputQuery, requete, acFormatXLS, nom_fich
     
    End Sub
    La construction de requete et de fic_nom marche correctement.

    J'ai fini par comprendre que mon sql n'étant pas un objet requête, cela ne pouvait pas fonctionner.
    Comment dois-je faire? ADO? DAO?
    je ne sais pas comment faire.
    Merci d'avance pour votre aide.
    Sellig60

  2. #2
    Membre Expert Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Par défaut
    Bonjour,

    Je ne comprends pas ce que tu cherches... qu'est ce qui ne fonctionne pas (ou mal) ? Ta méthode semble correcte... sauf peut être le nom de ton champ avec les - et un espace. Mais ce n'est pas cela qui doit coincer...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Par défaut
    Il faut créer un objet QueryDef et l'exporter à partir de son nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim qry As QueryDef
     
       Set qry = CurrentDb.CreateQueryDef("haha", requete)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Par défaut
    Merci pour vos réponses.
    Pour répondre à Gabout:
    Mon code produit l'erreur n°2437 et le message suivant:
    "L'action ou la méthode nécessite un argument Type objet"
    J'ai compris qu'il fallait créer l'objet avant .
    Je viens d'essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim qry As QueryDef
     
       Set qry = CurrentDb.CreateQueryDef("haha", requete)
    ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub cmd_transfert_excel_Click()
    Dim requete As String
    Dim nom_fich As String
    Dim qry As QueryDef
     
      ' Construction de la requête d'exportation
     
        requete = "Select * From rqt_pps Where [21-N° MDPH]= " & "'" & Me.[21-N° MDPH] & "'"
     
     
       Set qry = CurrentDb.CreateQueryDef("export_current_record", requete)
     
     
     ' Construction du nom du fichier d'exportation
     nom_fich = "'" & Me.[1-NOM DE L'ENFANT:] & "_" & Me.[2-Prénom] & "_" & Me.[21-N° MDPH] & "_origine_" & Me.[NOM_REFERENT] & ".xls'"
     'Le beep d'avertissement
        DoCmd.Beep
     'L'exportation proprement dite
        DoCmd.OutputTo acOutputQuery, "export_current_record", acFormatXLS, nom_fich
     
    End Sub
    mais j'obtiens l'erreur n° 3012 et le message suivant:

    "L'objet 'export_current_record' existe déjà."

    Sellig60

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Par défaut
    Je viens me répondre. J'ai trouvé l'origine du deuxième message !
    La requête "export_current_record" est bien créée, je l'ai trouvée dans access.
    Donc le code fonctionne.
    Merci Fold85

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Par défaut
    Bon j'ai cliqué sur résolu mais je viens quand même donné le code propre et qui marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub cmd_transfert_excel_Click()
    Dim requete As String
    Dim nom_fich As String
    Dim qry As QueryDef
     'Affichage du sablier
      DoCmd.Hourglass True
        ' Construction de la requête d'exportation
        requete = "Select * From rqt_pps Where [21-N° MDPH]= " & "'" & Me.[21-N° MDPH] & "'"
        ' Construction de la requête export
         Set qry = CurrentDb.CreateQueryDef("export_current_record", requete)
        'Construction du nom du fichier d'exportation
        'nom_fich = "'" & Me.[1-NOM DE L'ENFANT:] & "_" & Me.[2-Prénom] & "_" & Me.[21-N° MDPH] & "_origine_" & Me.[NOM_REFERENT] & ".xls'"
        nom_fich = Me.[1-NOM DE L'ENFANT:] & "_" & Me.[2-Prénom] & "_" & Me.[21-N° MDPH] & "_origine_" & Me.[NOM_REFERENT] & ".xls"
        'Le beep d'avertissement
        DoCmd.Beep
        'L'exportation proprement dite
        DoCmd.OutputTo acOutputQuery, "export_current_record", acFormatXLS, nom_fich
      'Rétablissement du pointeur normal
     DoCmd.Hourglass False
    End Sub
    Attention! Afin d'éviter le message d'erreur N°3012 :"L'objet 'export_current_record' existe déjà.", il faut ajouter un effacement de la requête "export_current_record" avant sa recréation.
    Merci encore de vos réponses.
    Sellig60

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 08h56
  2. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 16h59
  3. Effacer l'enregistrement courant?
    Par juliea dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/12/2004, 11h48
  4. Trigger sur l'enregistrement courant
    Par fifi2000ez dans le forum SQL
    Réponses: 4
    Dernier message: 03/08/2004, 22h25
  5. Enregistrement courant RECNO
    Par Chonchon dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/06/2004, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo