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 :

valeur par défaut dans un formulaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre habitué Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 504
    Points : 191
    Points
    191
    Par défaut valeur par défaut dans un formulaire
    Bonjour,
    Dans le formulaire PERE ci dessous
    Nom : pere.JPG
Affichages : 114
Taille : 19,6 Ko
    quand je clique sur le petit panier, j'ouvre le formulaire "fils" avec la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmd.OpenForm "F_Objet", , , "id_item_commande = " & id_item_commande
    FILS
    Nom : fils vide.JPG
Affichages : 114
Taille : 19,8 Ko

    Je récupère bien mes données, sauf que si j'ajoute un nouvel enregistrement, il laisse la valeur de id_item_commande à vide et du coup le lien entre les tables ne se fait pas .

    J'ai essayé de mettre une valeur par défaut , cf ci-dessous mais du coup il me met # Nom?

    Nom : Capture d’écran (4).png
Affichages : 133
Taille : 89,4 Ko
    Nom : fils.JPG
Affichages : 111
Taille : 16,6 Ko
    Je voudrais que ce formulaire soit comme un sous formulaire , mais je le veux dans une fenêtre indépendante.

    Note: si j'utilise l’assistant formulaire et que je sélectionne les champs de la table père et fils, il me poe la question suivante
    Nom : auto.JPG
Affichages : 108
Taille : 11,5 Ko

    Si je prend l’option sous formulaire, c'est OK, le l'ajout d'un nouvel enregistrement das la table FILS se passe bien, id_item_commande se met bien automatiquement !
    Mais je veux une fenêtre intendante , donc je prend l'autre option , et j'ai le même problème que ce que j'ai décrit .
    Je désespère !!!!
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Autant que je sache il n'y a pas de liaison Pére/Fils entre des formulaires "indépendants".
    Il faut te le programmer toi-même.

    Ici un exemple :

    Dans le père

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call docmd.OpenForm("NomTonFormFils", , ,"UneCondition", , , me.TonChampPere.value)
    Dans le fils, événement sur chargement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if not isnull(me.openargs) then
        me.TonChampFils.DefaultValue=me.openargs
    end if
    OpenArgs permet facilement de passer une valeur au formulaire appellé.

    Éventuellement tu pourrais utiliser la condition au même usage, là il faut récupérer me.Filter (et travaillé le résultat) pour faire l'assignation à .DefaultValue. Et il me semble qu'il faut obligatoirement que DefaulValue soit du texte, donc il est possible qu'il faille mettre des guillemets autours de la valeur, donc peut-être : me.TonChampFils.DefaultValue="""" & me.openargs & """".

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre habitué Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 504
    Points : 191
    Points
    191
    Par défaut
    GENIAL
    Ça marche nickel.
    Je pétais un boulon depuis hier là dessus.

    DU coup j'ai une question supplémentaire, si on veut passer 2 valeurs au formulaire appelé, comment ça se passé ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Du coup j'ai une question supplémentaire, si on veut passer 2 valeurs au formulaire appelé, comment ça se passé ?
    Là c'est plus cher :-).

    La façon simple mais pas très sécuritaire et de concaténer tes valeurs et de les déconcaténer aprèss.

    donc par exemple
    dans le père : DoCmd.OpenForm …., Valeur1 & "|" & Valeur2.
    dans le fils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim p() as variant
    p()=split(me.OpenArgs, "|")
    me.Valeur1=p(0)
    me.Valeur2=p(2)
    Le manque sécurité vient du fait qu'il faut que te souviennes dans quel ordre passer les valeurs et du nombre de valeurs à passer.

    Une manière plus sûre mais plus lourde est de passer par un objet qu'on passe en paramètre au formulaire.
    Il faut :
    créer un module de classe :

    clsParam
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Valeur1 as Texte 
    public Valeur2 as Date
    Puis dans le père.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim param as new clsParam
    param.Valeur1=me.Valeur1
    param.Valeur2=me.Valeur2
    DoCmd.OpenForm …., ConvertObjectToPointer(param)
    Dans le fils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim param as clsParam
    set param=ConvertPointerToObject(me.openargs)
    me.Valeur1=param.Valeur1
    me.Valeur2=param.Valeur2
    Avec :

    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
    Private Const POINTERSIZE As Long = 4
    Private Const ZEROPOINTER As Long = 0
    Private Declare Sub RtlMoveMemory Lib "kernel32" _
        (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
     
    Public Function ConvertObjectToPointer(ByRef objThisObject As Object) As Long
        Dim lngThisPointer As Long
     
        RtlMoveMemory lngThisPointer, objThisObject, POINTERSIZE
        ConvertObjectToPointer = lngThisPointer
    End Function
     
    Public Function ConvertPointerToObject(ByVal lngThisPointer As Long) As Object
        Dim objThisObject As Object
        RtlMoveMemory objThisObject, lngThisPointer, POINTERSIZE
        Set ConvertPointerToObject = objThisObject
        RtlMoveMemory objThisObject, ZEROPOINTER, POINTERSIZE
    End Function
    Une autre façon, si le fils connait le père est d'aller pécher la valeur directement dans le père, plus besoin de OpenArgs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Valeur1=Forms![NomFrmPere].Valeur1
    Me.Valeur2=Forms![NomFrmPere].Valeur2

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre habitué Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 504
    Points : 191
    Points
    191
    Par défaut
    mille mercis

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

Discussions similaires

  1. valeur par defaut dans un formulaire
    Par Flash_Over dans le forum IHM
    Réponses: 6
    Dernier message: 07/07/2008, 16h58
  2. Réponses: 4
    Dernier message: 23/04/2007, 11h02
  3. Valeur Par Defaut Dans Un Formulaire
    Par jeanfi77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/03/2007, 11h08
  4. Réponses: 1
    Dernier message: 10/02/2007, 13h44
  5. Réponses: 2
    Dernier message: 03/01/2007, 11h46

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