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 :

Probleme avec la méthode OpenReport


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 50
    Points
    50
    Par défaut Probleme avec la méthode OpenReport
    bonjour a tous,
    je travaille sur une base de donnée afin de déterminer la période de fonctionnement d'un appareil (i.e. le temps entre 2 interventions avec défaut constaté sur l'appareil)
    je crée une table avec comme champ le n° d'appareil, la date d'intervention (il n'y a pas forcément un défaut à chauqe date : certaine sont juste des vérif' de fonctionnement), le champ défaut et un champ période vide que je veux remplir avec un module.dans ce champ période, je fais une somme cumulée depuis le dernier défaut. j'ai écrit ce code :
    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
     Sub periodesappareils()
        Dim db As Database
        Dim enrg1 As Recordset
        Dim enrg2 As Recordset
        Set db = CurrentDb
        Set enrg1 = db.OpenRecordset("oscillos_TablePériodes")
        Set enrg2 = db.OpenRecordset("oscillos_TablePériodes")
        enrg1.MoveFirst
        enrg1!période = 0
        enrg2.Move (2)
        Do Until enrg2.EOF
            If enrg1!Marquage = enrg2!Marquage And Not (enrg2!défaut) Then
                enrg2!périodecumulée = CLng(enrg2!dateintervention - enrg1!dateintervention) + enrg1!périodecumulée
            End If
        enrg1.MoveNext
        enrg2.MoveNext
        Loop
    End Sub
    je me doute que c'est loin d'être parfait, mais lors de l'execution, VBA s'arrête à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Set enrg1 = CurrentDb.OpenRecordset("oscillo_TablePériodes")
    et il m'affiche un message d'erreur de compatibilité de type.(erreur d'exécution '13') j'ai tout vérifié : ma table porte bien ce nom, les références sont à jour, tous les autres variables du openrecordset sont facultatives, bref tout semble devoir faire que ca fonctionne ! et pourtant.....

    comble du désepoir, j'envoie une copie à un collègue qui lance le début du module (juste le openrecordset) et pour lui ca marche. il travaille avec access2002 et moi access2000.

    Quelqu'un a-t-il déjà rencontré ce problème ou remarqué quelque chose qui ne va pas dans mon code?

    merci d'avance pour toutes vos réponse.
    4rn0_o

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Hummm. tu n'aurais pas un pb de références (genre un mélange entre DAO et ADO...)

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Dim enrg1 As DAO.Recordset
        Dim enrg2 As DAO.Recordset
    Et jette un coup d'oeil à Outils/références depuis ton code.

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Rien à voir avec ta question à laquelle Mout1234 a probablement répondu, mais juste un conseil pour ton sub : pense à fermer les recordset et libérer les variables...

    Bon courage,

    PGZ

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    en effet en ajoutant DAO cela fonctionne. merci de votre aide. une derniere petite question : comment libérer les variables ?. fermer les recordset, j'ai testé .CloseRecordset et ca marchait, mais je ne sais pas libérer les variable. est-ce vraiment important ?

    Merci encore !

  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Citation Envoyé par 4rn0_o
    en effet en ajoutant DAO cela fonctionne. merci de votre aide. une derniere petite question : comment libérer les variables ?. fermer les recordset, j'ai testé .CloseRecordset et ca marchait, mais je ne sais pas libérer les variable. est-ce vraiment important ?

    Merci encore !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mavariable.close
    set mavariable = nothing
    Important ??
    Tu libères la mémoire utilisée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2008, 11h04
  2. probleme avec la méthode contains
    Par nabilfaouzi dans le forum VB.NET
    Réponses: 6
    Dernier message: 10/03/2008, 04h08
  3. probleme avec la méthode insert de std::set
    Par elekis dans le forum SL & STL
    Réponses: 4
    Dernier message: 18/04/2007, 19h01
  4. probleme avec la méthode "delete", (ADO)
    Par nguhv dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/04/2007, 14h56
  5. [Wscript] probleme avec la méthode send
    Par machinTruc dans le forum Windows
    Réponses: 8
    Dernier message: 18/05/2005, 18h30

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