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 :

[Formulaire] 1 seul Formulaire sur 2 tables dont 1 table variable


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut [Formulaire] 1 seul Formulaire sur 2 tables dont 1 table variable
    Bonjour à tous,

    J'aimerais savoir s'il est possible de réaliser un formulaire pointant sur 2 tables dont l'une changerait selon une case cochée.

    Pour mieux comprendre j'ai mis en pièce jointe une capture de mes tables:
    - la table fixe est tbl_Clients
    - la table dite variable est soit tbl_Standard_Conditions soit tbl_Client_Conditions

    Mon but est de mettre en place un formulaire permettant d'entrer ou modifier les conditions de ces tables liées à la table Clients.

    Ces deux tables ayant les mêmes champs, j'ai pensé à faire un formulaire ou il y aurait une check box Standard:

    Si elle est cochée alors le formulaire pointe sur tbl_Clients & sur tbl_Standard_Conditions, sinon il pointe sur tbl_Clients & sur tbl_Client_Conditions.

    N'étant pas pro ni en Access, ni en VBA je me tourne vers vous pour savoir si déjà cette idée est réalisable et si vous auriez des pistes ou éléments de réponse a mon problème.

    Merci d’avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Il faut le faire en changeant la source du formulaire :
    http://access.developpez.com/faq/?pa...e#ModifSrcForm
    Ou en modifiant la source avec des requêtes "en dur" genre :
    http://www.developpez.net/forums/sho...70&postcount=3

    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par francishop Voir le message
    Bonsoir,

    Il faut le faire en changeant la source du formulaire :
    http://access.developpez.com/faq/?pa...e#ModifSrcForm
    Ou en modifiant la source avec des requêtes "en dur" genre :
    http://www.developpez.net/forums/sho...70&postcount=3

    Cordialement.
    Bonjour,

    Merci beaucoup.

    Je vais chercher dans ce sens

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par francishop Voir le message
    Bonsoir,

    Il faut le faire en changeant la source du formulaire :
    http://access.developpez.com/faq/?pa...e#ModifSrcForm
    Ou en modifiant la source avec des requêtes "en dur" genre :
    http://www.developpez.net/forums/sho...70&postcount=3

    Cordialement.

    Re-bonjour,

    J'ai compris la premiere methode sur le principe, mais comment faire lorsque la source est formée de deux tables dont une variable...?

    J'ai alors essayé de faire le formulaire par la seconde methode.
    Dans mon formulaire il y a les champs de la table fixe (tbl_clients)
    et il y a un sous-formulaire destiné a recevoir les champs de la table variable a l'aide de deux requetes de selection, une pour chacune des deux tables

    J'ai mis en place un bouton de commande TypeConditions dont le code vba est le 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
    Private Sub cmdTypeConditions_Click()
    If Me.cmdTypeConditions.Caption = "Enter/Modify Standard Conditions" Then
     
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_StandardConditions"
        Me.cmdTypeConditions.Caption = "Enter/Modify Client Conditions"
        Me.ClientConditionsSubform.Form.Caption = "Enter/Modify Standard Conditions"
     
     Else
     
        Me.ClientConditionsSubform.Form.RecordSource = "qry_ClientConditions"
        Me.cmdTypeConditions.Caption = "Enter/Modify Standard Conditions"
        Me.ClientConditionsSubform.Form.Caption = "Enter/Modify Client Conditions"
     
     End If
    End Sub
    et ... ca ne fait pas tout a fait ce que je veux:

    - Lorsque je clique sur le bouton ''Enter/Modify Client Conditions'' je vois en premier le client 0 qui represente les Conditions Standard. Alors que j'aimerais passer au vrai premier client...
    - Et cas inverse lorsque je clique sur le bouton ''Enter/Modify Standard Conditions'', j'aimerais limiter le sousformulaire aux conditions standard c'est a dire au client 0 uniquement

    - Et enfin La procedure ne change pas le nom du sous formulaire (lignes en gras) meme si ce n'est pas tres grave.


    Ma question est: Dois-je revoir mes requetes sur lesquelles est basé le sous-formulaire ou dois-je codifier ces conditions en vba?


    Merci

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour :

    cmdTypeConditions-->Légende-->Client Conditions
    "qry_StandardConditions" en source par défaut du sous formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmdTypeConditions_Click()
     If Me.cmdTypeConditions.Caption = "Standard Conditions" Then
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_StandardConditions"
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.Form.Caption = "Standard Conditions"
     Else
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_ClientConditions"
        Me.cmdTypeConditions.Caption = "Standard Conditions"
        Me.Form.Caption = "Client Conditions"
     End If
    End Sub
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  6. #6
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par francishop Voir le message
    Bonjour :

    cmdTypeConditions-->Légende-->Client Conditions
    "qry_StandardConditions" en source par défaut du sous formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmdTypeConditions_Click()
     If Me.cmdTypeConditions.Caption = "Standard Conditions" Then
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_StandardConditions"
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.Form.Caption = "Standard Conditions"
     Else
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_ClientConditions"
        Me.cmdTypeConditions.Caption = "Standard Conditions"
        Me.Form.Caption = "Client Conditions"
     End If
    End Sub
    Cordialement.
    Merci pour ta reponse.
    Mais les lignes que j'ai mises en gras change le nom du formulaire. Ce que je voudrais c'est changer le nom du sous-formulaire qui varie selon la requete d'ou mon code precedent. Si ce n'est pas possible, c' est pas grave...

    Aussi le probleme persiste par rapport au contenu du sous-formulaire, alors que dans mes requetes je precise bien les criteres de selection

    En gros, lors du click sur le bouton Commande (pour les clients), je voudrais que le sous formulaire pointe sur la table Clients mais a partir du 2eme enregistrement (en fait toutes les conditions des clients sans le client 0).
    Lors d'un nouveau click, pour les conditions standard, je voudrais que le sous formulaire pointe sur la table standard (la il n'y a pas de probleme, il n'y a que le client 0)

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,
    Citation Envoyé par jeo13 Voir le message
    Merci pour ta reponse.
    Mais les lignes que j'ai mises en gras change le nom du formulaire. Ce que je voudrais c'est changer le nom du sous-formulaire

    je voudrais que le sous formulaire pointe sur la table Clients mais a partir du 2eme enregistrement (en fait toutes les conditions des clients sans le client 0).
    Il est posé différentes questions.

    Pour les requêtes :
    Il faut trier la requête source de ton formulaire lui indiquant qu'il te faut plus grand ou égal genre : >="2" (Et la balise code??.)
    Vérifie tes requêtes hors formulaires. Ce ne sont pas ces derniers qui modifient la stucture des tes requêtes.

    Pour les formulaires :
    Dans l'en tête de ton sous formulaire une étiquette-->lbl_TitreSform
    Légende-->Standard Conditions
    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
    Private Sub cmdTypeConditions_Click()
     If Me.cmdTypeConditions.Caption = "Standard Conditions" Then
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_StandardConditions"
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.Form.Caption = "Standard Conditions"
        Me.ClientConditionsSubform.Form.lbl_TitreSform.Caption = "Standard Conditions"
     Else
        Me.cmdTypeConditions.Caption = "Client Conditions"
        Me.ClientConditionsSubform.SetFocus
        Me.ClientConditionsSubform.Form.RecordSource = "qry_ClientConditions"
        Me.cmdTypeConditions.Caption = "Standard Conditions"
        Me.Form.Caption = "Client Conditions"
        Me.ClientConditionsSubform.Form.lbl_TitreSform.Caption = "Conditions Clients"
     End If
    End Sub
    Cordialement.

    Ps : Inutile de remettre l'intégralité de mon post.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Merci beaucoup !

    Pour le nom du sous formulaire maintenant ca fonctionne !
    Pour la source du sous formulaire, le problème venait effectivement des requêtes

    J’arrive désormais à faire afficher dans le sous-formulaire ce qu’il faut selon le click sur la commande.


    Néanmoins un problème persiste :

    Dans la partie supérieure de mon formulaire il y a les informations relatives à chaque client.

    J’aimerais, lors du click sur ‘Enter/View Standard Conditions’ (voir image1 en pièce jointe), me positionner directement sur le client dit Standard (Client fictif dont le radical est 0 et representant les conditions standard ) et bloquer la consultation des 378 autres clients

    A l’inverse, lors du click sur ‘Enter/View Client Conditions’, (voir image2 en pièce jointe)j’aimerais me positionner directement sur le 1er vrai client (client radical <>0, donc deuxieme enregistrement de mes clients) et bloquer la consultation du 1er enregistrement (dont le radical est 0)


    Est-ce possible ?
    Ou dois-je revoir mes requêtes pour lier la partie supérieure du formulaire et le sous-formulaire ?

    Merci

  9. #9
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Il "suffisait" d'utiliser GoToRecord

    Sujet résolu donc jusqu'a nouvel ordre...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/05/2015, 12h24
  2. Réponses: 11
    Dernier message: 20/11/2008, 18h08
  3. Réponses: 2
    Dernier message: 16/02/2006, 09h24
  4. Réponses: 7
    Dernier message: 14/02/2006, 10h33
  5. Formulaire avec liste basée sur une autre table
    Par sabotage dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/08/2005, 13h43

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