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

IHM Discussion :

[Formulaire]Erreur d'execution ACCESS


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [Formulaire]Erreur d'execution ACCESS
    Bonsoir,
    Voila j'ai un petit probleme avec ACCESS, j'ai un formulaire composé d'une liste( dans laquelle se trouve le nom des persoennes) et un sous formulaire(dans lequelle il y a les informations de ces personnes).
    Mon probleme est que lorsque je double clique sur un nom (dans ma liste) j'ai une erreur qui me "saute" dessus : "ERREUR d'execution '3021' : Aucun enregistrement en cours)
    je vous laisse mon 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Private Sub Liste4_Click()
    Dim Qry As DAO.QueryDef
    Dim rs As DAO.Recordset
    Dim lib_taux1, lib_taux2 As String
    Dim date1, date2, date3 As Date
    Dim DATE_FIN As Date
    Dim taux_en_vigueur As Double
     
    ident_contrat = Liste4.Value
     
     
     
    'on se positionne sur le bon contrat
     
    Set Qry = CurrentDb.QueryDefs("R_liste_heures")
    Qry.Parameters("contrat") = ident_contrat
    Set rs = Qry.OpenRecordset
     
    'on se positionne sur le mois à étudier
     
    While rs(2) <> ID_MOIS ''''ERREUR EST ICI
        rs.MoveNext
    Wend
     
    Me.Filter = "[id_heure]=" & rs(0)
    Me.FilterOn = True
     
    Set Qry = Nothing
    Set rs = Nothing
     
    'on récupère les dénominations des taux
     
    lib_taux1 = Forms![F_ajout_heures]![SF_ajout_heure_contrat].Form![NomDuTaux1]
    lib_taux2 = Forms![F_ajout_heures]![SF_ajout_heure_contrat].Form![NomDuTaux2]
    DATE_FIN = Forms![F_ajout_heures]![SF_ajout_heure_contrat].Form![Datefin]
     
    'on dégage le taux en vigueur pour le taux1
    Set Qry = CurrentDb.QueryDefs("R_dates_taux")
    Qry.Parameters("taux") = lib_taux1
    Set rs = Qry.OpenRecordset
    taux1 = rs(1)
    date1 = rs(2)
    taux2 = rs(3)
    date2 = rs(4)
    taux3 = rs(5)
    date3 = rs(6)
     
    If DATE_FIN > date3 Then
        taux_en_vigueur = taux3
        Else
        If DATE_FIN > date2 Then
            taux_en_vigueur = taux2
            Else
            taux_en_vigueur = taux1
        End If
    End If
    Texte34.Value = taux_en_vigueur
    Set Qry = Nothing
    Set rs = Nothing
     
    'on dégage le taux en vigueur pour le taux2
    Set Qry = CurrentDb.QueryDefs("R_dates_taux")
    Qry.Parameters("taux") = lib_taux2
    Set rs = Qry.OpenRecordset
    taux1 = rs(1)
    date1 = rs(2)
    taux2 = rs(3)
    date2 = rs(4)
    taux3 = rs(5)
    date3 = rs(6)
     
    If DATE_FIN > date3 Then
        taux_en_vigueur = taux3
        Else
        If DATE_FIN > date2 Then
            taux_en_vigueur = taux2
            Else
            taux_en_vigueur = taux1
        End If
    End If
    Texte36.Value = taux_en_vigueur
    Set Qry = Nothing
    Set rs = Nothing
     
    'cumuls
    Set Qry = CurrentDb.QueryDefs("R_cumuls")
    Qry.Parameters("contrat") = ident_contrat
    Set rs = Qry.OpenRecordset
     
    Texte44.Value = rs(1)
    Texte30.Value = rs(2)
    Texte39.Value = rs(3)
    Texte32.Value = rs(4)

    Merci d'avance

  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
    Bonjour,

    Avant d'aller plus loin, un petit détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim date1, date2, date3 As Date
    Contrairement aux apparences, date1 et date2 sont de type Variant dans cette syntaxe...

    Il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim date1 as Date, date2 as Date, date3 As Date

  3. #3
    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
    '3021' : Aucun enregistrement en cours)
    Visiblement tu dois atteindre la fin de ton recordset sans rencontrer de cas où rs(2) = ID_MOIS

    Je n'aurai pas écrit ainsi ton while mais plutot avec EOF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Do While Not rs.EOF
     if rs(2) = ID_MOIS then Exit Do
    Loop
    if rs.EOF then 
        'ID mois non trouvé...
     
    end if
    mais la solution la plus appropriée me semblerait être de faire un rs.FindFirst...

    Sinon contrôle ce que vaut rs(2) (pourquoi ne pas utiliser le nom des champs...?) et ce que vaut ID_MOIS (non déclaré dans ton code... variable globale? initialisée correctement ?)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu dis que tu double-click sur ta liste, hors tu as mis ton code sur l'évènement Click, celui-ci se produit donc deux fois, ce qui peux te poser un problème.

    Mets ton code déjà sur le bon évènement et supprimer le code sur le click, déjà pour voir.

    Starec

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/06/2008, 01h06
  2. Réponses: 9
    Dernier message: 15/12/2007, 20h10
  3. Réponses: 8
    Dernier message: 19/04/2007, 16h03
  4. ACCESS 2003 : Code erreur d'execution '3075'
    Par Eric26 dans le forum Access
    Réponses: 22
    Dernier message: 14/08/2006, 17h37
  5. Réponses: 3
    Dernier message: 14/04/2006, 19h58

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