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 :

Problème sur évènement OnNotInList dans une liste déroulante


Sujet :

IHM

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Problème sur évènement OnNotInList dans une liste déroulante
    Bonjour à tous,

    Voila mon problème, dans un formulaire j'ai une liste déroulante "Nom ville" qui quand on déroule la liste on peut voir deux colonnes (Nom ville et son code postal) que je vais chercher dans une table.

    Le problème est que j'aimerai pouvoir rentrer d'autres noms de ville que ceux de ma table.

    Deja il faut que je mette "BoundCollums" à 2 pour que la propriété LimitToList puisse se mettre à "False" Pourquoi?

    Et quand je mets "BoundCollums" à 2 et que je retourne rentrer un nom de ville (existant dans la liste ou non) il me met une erreur du type "Valeur non valide pour ce champ"

    Merci d'avance,

    Bonne journée.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 352
    Points : 181
    Points
    181
    Par défaut
    Bonjour,

    Sur ta liste déroulante, il te suffit de définir la propriété "Limiter à liste" à NON (Propiétés, Données) ce qui permet de rentrer d'autres valeurs que celles de la liste sans les rentrer dans la table source.

    Jean-Pierre

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai deja mis cette propriété a FAUX mais pour cela j'ai du changer la propriété BoundCollum de 1 à 2 (je ne sais pas pourquoi mais ca permet a la propriété Limiter a liste d'accepter de passer de VRAI à FAUX.

    Donc après que je rentre un nom de ville non compris dans la source il me dit que la valeur rentré est non valide... un autre problème. le texte entré est passé de "aligné a gauche" à "aligné à droite" pourquoi... je n'en sais rien :/

    Donc en fait j'aimerai savoir ce que cela a changé de passer la propriété boundCollum de 1 à 2

    Merci

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Les deux colonnes sources affichées dans la liste sont les noms des villes et leurs codes postaux. Je pense qu'après avoir modifié la propriété BoundCollum de 1 à 2 il veut une valeur numerique (type code postal) ...

    Car même en selectionnant dans la liste un choix definis dans la table il me met valeur non valide quand le nom d'une ville apparait dans la zone de texte...

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Salut Jackpot,

    Tu as de la chance, j'ai déjà été confronté à ce genre de situation et comme j'ai un peu de temps ce soir je t'ai préparé quelques lignes.
    Je n'ai pas pris en compte le fait que 2 villes avec le même nom ne puissent avoir le même code postal. A toi de te débrouiller avec çà.

    Donc tu as une zone de liste (Lst_Ville) basée sur un table (Tbl_Ville) qui contient une clé primaire (Id), un champ Ville et un champ CP (code postal).
    Propriétés de la zone de liste :
    Onglet données : Limitée à liste : Non
    Onglet format : Nombre de colonnes : 3 (l'Id, le champ Ville et le champ CP)
    Onglet format : Largeur colonnes : 0;5;2
    Pour ce dernier paramètre, seul le 0 est important, il cache la clé primaire.

    Ensuite, tu colle le code suivant :

    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
    Private Sub Lst_Ville_AfterUpdate()
        ' Rechercher l'enregistrement correspondant au contrôle.
        Dim rs As Object
     
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[Id] = " & str(Nz(Me![Lst_Ville], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
     
    Private Sub Lst_Ville_NotInList(NewData As String, Response As Integer)
    On Error GoTo Err
     
    Dim oId As Long
     
    'Message pour ajouter la ville
    If MsgBox("Souhaitez-vous ajouter cette nouvelle ville ?", _
                vbYesNo + vbQuestion + vbDefaultButton2, "Ajout d'un nouvelle ville") = vbYes Then
            'Ajoute le nom de la nouvelle ville
            DoCmd.RunSQL "INSERT INTO Tbl_Ville ( Ville ) SELECT """ & NewData & """;"
            'Zappe le message d'erreur système
            Response = acDataErrAdded
            'Récupère la clé primaire de la dernière valeur ajoutée dans la table
            oId = DLast("Id", "Tbl_Ville")
            'Si on clique sur Annuler dans la boite de dialogue de saisie du code postal
            If AdCodePostal(oId) = False Then
                GoTo On_Annule
            End If
        Else
    On_Annule:
            Response = acDataErrContinue
            Me.Lst_Ville.Undo
            Exit Sub
     End If
     
    'On est obligé de remetre cette ligne de code pour actualiser la liste avec le code postal
    Response = acDataErrAdded
     
    Fin: Exit Sub
     
    Err:
        MsgBox "Erreur n° : " & Err.Number & vbLf & "Description : " & Err.Description
        Resume Fin
    End Sub
     
    Private Function AdCodePostal(Id As Long) As Boolean
     
    Dim sInput As String
    On_Relance:
    'Ouverture de la boite de dialogue pour saisir le code postal
    sInput = InputBox("Saisir le code postal :", "Code postal")
     
                If StrPtr(sInput) = 0 Then 'Si on appuie sur Annuler
                    MsgBox "Opération annulée." & vbLf & "La ville saisie précédement va être supprimée.", vbOKOnly, "Information"
                    'Suppression de la ville
                    DoCmd.RunSQL "DELETE * FROM Tbl_Ville WHERE (((Tbl_Ville.Id)=" & Id & "));"
                    'Annule la saisie dans le champ de la liste
                    AdCodePostal = False
                ElseIf Not IsNumeric(sInput) Then
                    MsgBox "Le code postal doit être numérique.", vbOKOnly + vbCritical, "Information"
                    GoTo On_Relance 'On relance la boite de dialogue
                ElseIf Len(sInput) <> 5 Then
                    MsgBox "Le code postal doit avoir 5 chiffres.", vbOKOnly + vbCritical, "Information"
                    GoTo On_Relance 'On relance la boite de dialogue
                Else
                    'Met à jour le code postal de la ville saisie précédement
                    DoCmd.RunSQL "UPDATE Tbl_Ville SET Tbl_Ville.CP = " & sInput & " WHERE (((Tbl_Ville.Id)= " & Id & "));"
                End If
    End Function
    Et voilà le travail

    Cordialement

    Christophe

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/05/2015, 13h40
  2. Réponses: 3
    Dernier message: 03/11/2008, 10h09
  3. [MySQL] Affichage de champs dans une liste déroulante
    Par mealtone dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/10/2008, 18h06
  4. Réponses: 3
    Dernier message: 11/10/2007, 12h18
  5. Réponses: 1
    Dernier message: 14/09/2007, 18h04

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