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 :

intégration valeur recordset dans msgbox [AC-2002]


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
    Mars 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 163
    Par défaut intégration valeur recordset dans msgbox
    Bonjour,

    Je débute complétement avec le VBA ... alors tentez d'être cléments si j'ai commis des erreurs grossières...

    Voici mon pb: je cherche à faire figurer dans le contenu d'un msgbox dans une procédure afterupdate d'une list box une variable que je tente d'appeler avec un recordset ( je ne sais pas très bien où le placer dans 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
    Option Compare Database
    Sub DAOOpenRecordset()
        Dim db As DAO.Database, rs1 As DAO.Recordset, fld As DAO.Field
        Dim SQL1 As String
     
        ' Ouverture de la base de données
        Set db = DBEngine.OpenDatabase(".\Nucléus.mdb")
        SQL1 = "SELECT Table_plafond_emploi.quantite FROM Table_plafond_emploi WHERE (((Table_plafond_emploi.id_categorie_contrat)=1) AND ((Table_plafond_emploi.date_début)<=Now()) AND ((Table_plafond_emploi.date_fin)>=Now()));"
        ' Ouverture du recordset
        Set rs1 = db.OpenRecordset(SQL1, dbOpenForwardOnly, dbReadOnly)
        ' Fermeture du Recordset
        rs1.Close
        End Sub
     
     
     
    Private Sub type_contrat_AfterUpdate()
     
        Dim a, b As Integer
     
        a = SQL1
        b = 750 - 1
        If type_contrat = 1 Then MsgBox "Il vous reste à ce jour " & a & " ETP disponibles" Else MsgBox "Il vous reste à ce jour " & b & " contrats disponibles"
     
     
    End Sub
    En vous remerciant par avance pour votre aide.

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

    Un tuto tout frais à lire, il correspond à ton cas : Résultats dans Labels, Zones de Texte ou MsgBox.

    Philippe

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 163
    Par défaut
    Bonjour,

    Merci pour cette réponse... j'ai parcourru le tuto ... il me faut encore le comprendre... (pas gagné)

    Je reste partant pour un décriptage de mes erreurs de synthaxe....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 163
    Par défaut
    Re-bonjour,

    J'ai essayé d'appliquer ce que j'ai cru comprendre dans le tuto .... mais visiblement je bug

    voici mon nouveau code:

    1- pour mon module:
    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
    Option Compare Database
     
    Option Explicit
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
     
    Sub RechercheRS1()
     
     
         Dim rs1 As Integer     ' variable donnant le plafond ETP
    Set oDb = CurrentDb
     
        'Nous allons chercher la valeur du plafond d'ETP
        Set oRst = oDb.OpenRecordset("SELECT Table_plafond_emploi.quantite FROM Table_plafond_emploi WHERE (((Table_plafond_emploi.id_categorie_contrat)=1) AND ((Table_plafond_emploi.date_début)<=Now()) AND ((Table_plafond_emploi.date_fin)>=Now()));", dbOpenSnapshot)
     
        'Nous appliquons le résultat affiché dans la colonne1 à la variable rs1
    rs1 = oRst.Fields(0)
     
    'Nous fermons les connexions (dans le cas d'une utilisation DAO)
        oRst.Close
        oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
     
        Exit Sub
    End Sub
    2- sur MAJ de ma ZL:
    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
    Option Compare Database
     
     
     
    Private Sub type_contrat_AfterUpdate()
     
    Call RechercheRS1
     
        Dim a, b As Integer
     
        a = rs1
        b = 750 - 1
        If type_contrat = 1 Then MsgBox "Il vous reste à ce jour " & a & " ETP disponibles" Else MsgBox "Il vous reste à ce jour " & b & " contrats disponibles"
     
     
    End Sub
    En vous remerciant par avance pour vos aiguillages...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir
    Si tu veux rester dans l'esprit du tuto, et si j'ai bien compris ton problème, il faut changer certaines choses:
    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
     
    Option Compare Database
    Option Explicit
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
     
    Sub RechercheRS1(Type as Boolean, b as Integer)
       Dim rs1 As Integer     ' variable donnant le plafond ETP
     
     If Type = True
        Set oDb = CurrentDb
     
        'Nous allons chercher la valeur du plafond d'ETP
        Set oRst = oDb.OpenRecordset("SELECT Table_plafond_emploi.quantite FROM Table_plafond_emploi WHERE (((Table_plafond_emploi.id_categorie_contrat)=1) AND ((Table_plafond_emploi.date_début)<=Now()) AND ((Table_plafond_emploi.date_fin)>=Now()));", dbOpenSnapshot)
     
    'Nous appliquons le résultat affiché dans la colonne1 à la variable rs1
         If oRst.EOF Then
               MsgBox "Pas d'enregistrements"
          Else
               rs1 = oRst.Fields(0)
              MsgBox "Il vous reste à ce jour " & rs1 & " ETP disponibles"
     
              'Nous fermons les connexions (dans le cas d'une utilisation DAO)
              oRst.Close
              oDb.Close
             Set oDb = Nothing
             Set oRst = Nothing
         End if
    Else
     
    MsgBox "Il vous reste à ce jour " & b & " contrats disponibles"
    End if
    End sub
    Et sur l'appel de ta routine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      Dim b as integer  
      b = 750 - 1
    If Me.type_contrat.Value = 1 Then
            Call RechercheRS1(True, b)
        Else
            Call RechercheRS1(False, b) 
    End if
    Je pense que ce sera mieux.
    Par contre il faut être sûr que ta requête est bonne.(je n'ai pas regardé)
    Bon courage

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 163
    Par défaut
    Bonjour Gayot,

    Merci pour cette correction de script... je viens de l'essayer et malheureusement un message d'erreur apparait :

    erreur de compilation:
    Attendu:identificateur

    A priori pb avec "Type"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub RechercheRS1(Type as Boolean, b as Integer)
       Dim rs1 As Integer     ' variable donnant le plafond ETP
     
     If Type = True
        Set oDb = CurrentDb

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

Discussions similaires

  1. [AC-2003] Pb intégration valeur supplémentaire dans liste déroulante
    Par seballix dans le forum IHM
    Réponses: 2
    Dernier message: 01/10/2012, 12h21
  2. Transférer valeur d'un recordset dans un tableau
    Par chelmi95 dans le forum IHM
    Réponses: 7
    Dernier message: 02/05/2008, 17h44
  3. Valeur nulle dans un Recordset et boucle de décision
    Par agrosjea dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/07/2007, 13h01
  4. Réponses: 4
    Dernier message: 06/05/2007, 15h43
  5. Problème de valeur null dans un recordset
    Par Petzouille57 dans le forum Access
    Réponses: 3
    Dernier message: 19/05/2005, 12h27

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