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 :

Modifier dynamiquement un formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut Modifier dynamiquement un formulaire
    Bonjour tout le monde,

    J'ai un petit soucis avec access, j'ai un formulaire en affichage tabulaire avec la liste des sociétés de ma BdD.

    Dans ma table j'ai un champ ville et ville_cedex, j'ai alors créer une zone de texte ville dans mon formulaire et par VBA je met dans cette zone soit la ville soit la ville_cedex.

    J'ai appelé cette fonction dans l'événement chargement mais il me prend que la derniére adresse, j'ai pour chaque ligne la même ville.

    J'ai essayé une autre solution, appelé la fonction dans la source de données de la zone de texte, la ca fonctionne mais tout ne s'affiche pas du premiere coup, les villes s'aficchent au fur et à mesure...

    Quelqu'un aurait une solution?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pourquoi ne pas utiliser la fonction sur un nouveau champ de la source de données du Formulaire (la requète), ce qui donnerait dans le formulaire un champ qui contient la bonne valeur ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    Oui j'ai essayé ca, mais voila le problème :

    J'ai essayé une autre solution, appelé la fonction dans la source de données de la zone de texte, la ca fonctionne mais tout ne s'affiche pas du premiere coup, les villes s'aficchent au fur et à mesure...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    J'ai essayé une autre solution, appelé la fonction dans la source de données de la zone de texte, la ca fonctionne mais tout ne s'affiche pas du premiere coup, les villes s'aficchent au fur et à mesure...
    Au fur et à mesur de quoi ?
    Elles apparaissent tout doucement, ou il faut cliquer sur chaque ligne pour les voir ?

    Car si l'affichage n'est pas instantanné c'est que la fonction semble complexe pour Access.

    On peut voir cette fonction ?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    Elles apparaissent au fur et a mesure que je me déplace dans la page

    Voici la fonction:

    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
    Function LectureContacts(ByVal id_adresse As Long) As String
     
    '
    ' Variables locales :
    ' ===================
    '
       Dim strSQL      As String
     
       Dim rsRequete   As ADODB.Recordset
     
       Dim strContacts As String
     
    '
    ' Traitement :
    ' ============
    '
     
       strSQL = "SELECT TOP 2 * FROM contacts WHERE con_adresse = " & id_adresse & " ORDER BY con_identifiant ASC"
     
       Set rsRequete = New ADODB.Recordset
     
       Call rsRequete.Open(strSQL, CurrentProject.Connection)
     
       strContacts = ""
     
       While Not rsRequete.EOF
     
          If (Len(strContacts) > 0) Then strContacts = strContacts & vbCrLf
     
          If rsRequete("con_fonction") <> "" Then
     
             strContacts = strContacts & DLookup("fon_libelle", "fonctions", "fon_identifiant=" & rsRequete("con_fonction"))
     
          End If
     
          If rsRequete("con_civilite") <> "" Then
     
          strContacts = strContacts & DLookup("civ_libelle", "civilites", "civ_identifiant=" & rsRequete("con_civilite")) & " "
     
          End If
     
          strContacts = strContacts & rsRequete("con_prenom") & " " & rsRequete("con_nom") & " " & IIf(Len(Nz(rsRequete("con_telephone"), "")) = 0, "", " - " & rsRequete("con_telephone"))
     
          Call rsRequete.MoveNext
     
       Wend
     
       Call rsRequete.Close
     
       Set rsRequete = Nothing
     
       LectureContacts = strContacts
     
    End Function
    Ce que je voudrais c'est que quand j'ouvre ma page, bah j'ai tout les éléments affichées.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    C'est vrai que la fonction à l'air complexe, d'autant plus qu'elle utilise des DLookUp ce qui ralenti les traitements.
    Je crois deviné ce que tu veux faire (concaténer plusieurs éléments relatifs au contact), mais là, il faudrait carrément la base pour pouvoir faire des essais.

    Sinon, il faudrait trouver une autre solution

    N'y a-t-il pas moyen de faire tout la fonction dans la requète associée au formulaire avec des jointures externes et en utilisant la fonction VraiFaux (ou iif) ?

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    Pour la complexité de la fonction je pense pas que ca vienne de la, car j'ai la même chose avec une simple requête de sélection sur l'adresse qui me sort la ville et la ville cedex et qui regarde si la ville est présente dans le champ ville ou ville_cedex et la vitesse d'affichage est la même...

    J'ai essaye de créer une fonction :

    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
    Private Sub Report_Load()
    '
    ' Variables locales :
    ' ===================
    '
       Dim rsRequete  As ADODB.Recordset
     
       Dim strSQL     As String
     
    '
    ' Traitement :
    ' ============
    '
     
       If Me.id_adresse <> "" Then
     
          strSQL2 = "SELECT adr_ville,adr_ville_cedex,adr_code_postal,adr_code_postal_cedex FROM adresses WHERE adr_identifiant = " & Me.id_adresse
     
          Set rsRequete2 = New ADODB.Recordset
     
          Call rsRequete2.Open(strSQL2, CurrentProject.Connection)
     
          If Not rsRequete2.EOF Then
     
             strCodePostal = IIf(Len(Nz(rsRequete2("adr_code_postal"), "")) = 0, IIf(Len(Nz(rsRequete2("adr_code_postal_cedex"), "")) = 0, "", rsRequete2("adr_code_postal_cedex")), rsRequete2("adr_code_postal"))
     
             strVille = IIf(Len(Nz(rsRequete2("adr_ville"), "")) = 0, IIf(Len(Nz(rsRequete2("adr_ville_cedex"), "")) = 0, "", rsRequete2("adr_ville_cedex")), rsRequete2("adr_ville"))
     
          End If
     
          [code_postal].Value = strCodePostal
     
          [ville].Value = strVille
     
          Call rsRequete2.Close
     
          Set rsRequete2 = Nothing
     
       End If
     
    End Sub
    Et je l'ai mise sur l'événement sur chargement du formulaire, le problème c'est qu'elle me retourne tout le temps le même résultat (le dernier), il faudrait que je puisse d'abord parcourir tous les champ "id_adresse" avant de faire le traitement, car la id_adresse vaut toujours la même chose...

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    Ben je vois plus trop.
    La seule chose que je peux encore dire, sachant que cela ne règlera pas ton problème pour autant, c'est que je n'aurais pas travaillé avec sur chargement , mais Sur Activation.
    Tu devras quand même cliquer sur chaque ligne pour que la zone se mette à jour.
    Désolé de pas pouvoir faire plus pour l'instant

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 261
    Points : 64
    Points
    64
    Par défaut
    C'est bon le problème est régle je fais mon IIF directement dans la requéte, je met le résultat dans une variable et j'appel cette variable au lieux d'appeler les 2 autres.

    Merci de ton aide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/06/2018, 19h33
  2. Modifier dynamiquement le code d'un autre formulaire
    Par daerlnaxe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2014, 22h08
  3. Formulaire avec champ SELECT modifié dynamiquement.
    Par zebulon36 dans le forum jQuery
    Réponses: 3
    Dernier message: 27/12/2012, 18h33
  4. Réponses: 7
    Dernier message: 21/07/2006, 08h56
  5. imprimer graphique croisé dynamique ou formulaire
    Par bossun dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2004, 11h53

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