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

Access Discussion :

interdire une selection dans une liste selon valeur


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 153
    Points : 89
    Points
    89
    Par défaut interdire une selection dans une liste selon valeur
    Bonjour à tous,

    en fait j'ai 3 Table T_Dossier ( clé primaire NumDossier), T_Offre ( clé primaire NumOffre, il y a un champ Cas de type liste pour donner la suite donnée à l'offre Retenue, rejeté, ou sélectionnée), enfin la table T_Offre_Dossier (clé primaire N°, deux clé étrangeres : NumDossier, et NumOffre)
    et tous ça pour relié l'offre au dossier ( chaque offre peut correspondre a plusieurs dossier et chaque dossier peut avoir plusieurs offre)
    Mon souci que je veux interdire la selection "retenue" pour une offre tant qu'il y a déja une offre retenue pour le meme dossier

    Donc j'ai fais ce code là:
    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
    Private Sub Modifiable71_Change()
    Dim numD As Integer, sql As String
     
    Dim rs As DAO.Recordset
    numD = Form_F_liste_dossiers.NumDossier.Value
    sql = "select * from R_Retenue where NumDossier=" & numD
    Set rs = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)
     
    If Len(sql) = 0 Then
    Exit Sub
    End If
    If rs.Fields("NumOffre") <> Me.NumOffre.Value And Me.Modifiable71.Value = "Retenue" Then
    MsgBox " Cette offre ne peut être retenue, car une autre offre est déjà retenue pour ce dossier", , "Avertissement"
    Me.Modifiable71.Value = ""
    End If
    rs.Close
     
     
    End Sub
    R_retenue est une requete qui selectionne tout dossier avec son offre retenue

    ce code marche quand il y a une offre déjà retenue, mais qd il n y a pa il bloque et il me dit il n y a aucun enregistrement erreur 3021..
    quelqu'un peut m'aider svp?
    merci

  2. #2
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par polianita
    Bonjour à tous,

    (...)
    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
    Private Sub Modifiable71_Change()
    Dim numD As Integer, sql As String
     
    Dim rs As DAO.Recordset
    numD = Form_F_liste_dossiers.NumDossier.Value
    sql = "select * from R_Retenue where NumDossier=" & numD
    Set rs = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)
     
    If Len(sql) = 0 Then
    Exit Sub
    End If
    If rs.Fields("NumOffre") <> Me.NumOffre.Value And Me.Modifiable71.Value = "Retenue" Then
    MsgBox " Cette offre ne peut être retenue, car une autre offre est déjà retenue pour ce dossier", , "Avertissement"
    Me.Modifiable71.Value = ""
    End If
    rs.Close
     
     
    End Sub
    (...)
    ce code marche quand il y a une offre déjà retenue, mais qd il n y a pa il bloque et il me dit il n y a aucun enregistrement erreur 3021..
    quelqu'un peut m'aider svp?
    merci
    Salut,
    Avant de lire un enregistrement, prends soin de vérifier si enregistrement il y a dans le recordset.
    Avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If rs.Fields("NumOffre") <> Me.NumOffre.Value And Me.Modifiable71.Value = "Retenue" Then
    ajoutes ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If rs.RecordCoutnt <> 0 Then
       'Ici tu ajoutes to code If rs.Fields ...
    Else
       'Aucun enregistrement
    End If

  3. #3
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par polianita
    Bonjour à tous,

    (...)
    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
    Private Sub Modifiable71_Change()
    Dim numD As Integer, sql As String
     
    Dim rs As DAO.Recordset
    numD = Form_F_liste_dossiers.NumDossier.Value
    sql = "select * from R_Retenue where NumDossier=" & numD
    Set rs = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)
     
    If Len(sql) = 0 Then
    Exit Sub
    End If
    If rs.Fields("NumOffre") <> Me.NumOffre.Value And Me.Modifiable71.Value = "Retenue" Then
    MsgBox " Cette offre ne peut être retenue, car une autre offre est déjà retenue pour ce dossier", , "Avertissement"
    Me.Modifiable71.Value = ""
    End If
    rs.Close
     
     
    End Sub
    (...)
    ce code marche quand il y a une offre déjà retenue, mais qd il n y a pa il bloque et il me dit il n y a aucun enregistrement erreur 3021..
    quelqu'un peut m'aider svp?
    merci
    Salut,
    Avant de lire un enregistrement, prends soin de vérifier si enregistrement il y a dans le recordset.
    Avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If rs.Fields("NumOffre") <> Me.NumOffre.Value And Me.Modifiable71.Value = "Retenue" Then
    ajoutes ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If rs.RecordCount <> 0 Then
       'Ici tu ajoutes to code If rs.Fields ...
    Else
       'Aucun enregistrement
    End If

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 153
    Points : 89
    Points
    89
    Par défaut Nickel
    génial
    ça marche
    c ce qu'il me fallai exact
    Merci

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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