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

Requêtes et SQL. Discussion :

Requete pour nouveau Recordset [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Requete pour nouveau Recordset
    Bonjour,

    J'ai beau lire attentivement le document de Tofalu sur la création de recordset, le mien refuse de s'ouvrir!

    Le contexte: Je selectionne depuis un formulaire un certain nombre d'enregistrements et je voudrais remplir deux feuilles Excel avec les données completes relatives aux enregistrements selectionnés (toutes les données ne sont pas dans la requète selection initiale).

    Après avoir ouvert la feuille Excel, je cherche donc a créer un nouveau recordset basé sur la table principale qui me ramènerait les données manquantes.

    Voila le éléments du code: rst est le recordset correspondant au formulaire de selection, rstForm est celui que je veux créer.

    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
    Dim idFormRst As Integer
    Dim n As Integer
    Dim idFormRst, idParcRst As Integer
    Dim rst As Recordset
    Dim rstForm As Recordset
     
    Set rst = Me.Recordset
     
    If Not rst.EOF Then
            rst.MoveFirst
      While Not rst.EOF
            idFormRst = rst![idformfusion]
            idParcRst = rst![idparcfusion]
        If idFormRst <> 0 Then
            Set rstForm = CurrentDb.OpenRecordset(" SELECT * FROM T01_Formation WHERE T01_Formation.idformation = " & idFormRst & ";", dbOpenTable)
                    n = rst.AbsolutePosition + 4
     
            appExcel.Worksheets("formations").Select
            appExcel.Cells(n, 1) = rstForm![idformation]
            appExcel.Cells(n, 2) = rstForm![Titre]
    Arrivé à la ligne de Set rstForm un message apparait indicant que le moteur Jet n'a pu trouver l'objet 'SELECT * FROM TABLE WHERE TABLE.CHAMP = 37;'

    J'ai essayé en définissant les objets rst en DAO.recorset, echec! Essais avec ou sans espaces dans la définition de requète, essais avec ou sans le ";" final, rien n'y fait et le libellé des tables et champs est fait avec un copier/collé pour éviter les erreurs de frappe!

    Merci d'avance pour les idées.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    bonjour,

    ça pourrait être à cause du type de recordset choisi : dbOpenTable.
    Essaie avec dbOpenDynaset.

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Bravo et merci
    Effectivement cela suffit pour que tout marche parfaitement!

    Juste pour ma gouverne, et aussi parce que j'ai un autre rst a faire plus complexe (a partir d'une query) quelle est l'explication? Je travaillais pourtant la à partir d'une simple table?

    En tout cas encore merci.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Lorsque le type de recordset demandé est de type table (dbOpenTable), l'argument Nom de la méthode OpenRecordset est le nom d'une table.

    Extrait de l'aide en ligne concernant l'argument Nom :
    Source des enregistrements du nouvel objet Recordset. Il peut s'agir du nom d'une table, du nom d'une requête ou d'une instruction SQL qui renvoie des enregistrements. Pour les objets Recordset de type table dans les bases de données du moteur de base de données Microsoft Access, la source ne peut représenter qu'un nom de table.
    Voir aussi : 5.1.1. Les différents types de Recordset

    A+

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

Discussions similaires

  1. [AC-2013] Requete pour calculer une Moyenne mobile exponentielle (qui depend du recordset precedent.)
    Par lukebalthazar dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/06/2014, 00h31
  2. Requete pour un top 3!
    Par faayy dans le forum Access
    Réponses: 6
    Dernier message: 20/06/2005, 09h06
  3. Requete pour un débutant
    Par sqlnoob dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/05/2005, 08h55
  4. requete pour reccuperer une parti d'un resultat
    Par ViBy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/09/2004, 09h33
  5. requete pour avoir CONTENU procedures stockees
    Par bmayer dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 11/02/2004, 13h20

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