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 un seul enregistrement formuliare tabulaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut Modifier un seul enregistrement formuliare tabulaire
    Bonjour à tous et à toutes,

    J'ai un formulaire en mode tabulaire pour le suivi des cotisations d'adhérents.
    Sur activation j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Current()
     
    Me.AllowEdits = False
     
    End Sub
    Je ne peux donc modifier intempestivement une donnée du formulaire.

    J'ai un bouton "Modifier" avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Modification1_Click()
     
       Dim Ctl As Control
        For Each Ctl In Me.Détail.Controls
        If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then
        Ctl.Locked = False
        End If
        Next Ctl
     
    End Sub
    Avec cette procédure, je débloque TOUS les contrôles du formulaire.
    Or je ne voudrais débloquer que les seuls contrôles de l'enregistrement sélectionné.
    Comment procéder et quel code associer à un bouton "Valider la modification actuelle" avant de pouvoir passer à un autre enregistrement ?

    Merci de votre aide.

    A+

    c15

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Dans ce genre de situation, je ne permets pas une modification "globale" de tous les champs.

    J'autorise la modification d'une zone de texte en double-cliquant dessus et re-vérouille la zone de texte après mise à jour.

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonsoir,

    Pour être plus précis j'ai un grand nombre de case à cocher correspondant aux cotisations à payer et autant de zones de texte correspondant aux cotisations dues.
    Quand je coche une Cac la cotisation due correspondante passe à 0.

    Par contre j'ai un souci avec les procédures rappelées dans le post ci-dessous.
    En effet, le code du bouton "Modifier" ne m'autorise pas les modifs quel que soit l'enregistrement

    Merci de ton aide.
    A+
    C15

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Je ne comprends pas ce qui se passe.
    Tu dis que :
    Avec cette procédure, je débloque TOUS les contrôles du formulaire.
    Et après :
    En effet, le code du bouton "Modifier" ne m'autorise pas les modifs quel que soit l'enregistrement
    On peut avoir un aperçu du formulaire et sa source s'il te plait.

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    J'ai vérifié tout cela et adresse en PJ le formulaire incriminé.

    Je crois avoir compris, il est basé sur une requête analyse croisée.
    sa source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM Sum(T_Cotisation.Cotisation_Du) AS SommeDeCotisation_Du
    SELECT [T Adhérents].N°Adherent, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].MiseAJour, [T Adhérents].DateAdhesion, [0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES].Total, [T Adhérents].Adherent
    FROM ([T Adhérents] INNER JOIN [0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES] ON [T Adhérents].N°Adherent = [0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES].N°Adherent) INNER JOIN T_Cotisation ON [T Adhérents].N°Adherent = T_Cotisation.T_Adherent_FK
    WHERE ((([T Adhérents].Adherent)=True))
    GROUP BY [T Adhérents].N°Adherent, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].MiseAJour, [T Adhérents].DateAdhesion, [0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES].Total, [T Adhérents].Adherent
    ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom
    PIVOT T_Cotisation.Cotisation_An;
    C'est sans doute pour cela que je ne peux modifier les enregistrements via le code suivant associé à mon bouton "Modifier"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Modification1_Click()
     
        Me.AllowEdits = True
       Dim Ctl As Control
        For Each Ctl In Me.Détail.Controls
        If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then
        Ctl.Locked = False
        End If
        Next Ctl
    End Sub
    Pour info cela fonctionne bien sur le contrôle test mis en en-tête de formulaire mais pas sur les autres.
    Le but recherché : je coche la case C2017 pour valider la réception de la cotisation et la zone de texte Du_2017 passe à 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub C2017_Click()
    Me.Du_2017.Value = 0
    End Sub
    Y a t il un moyen de contourne le problème ?
    En effet j'ai bien des formulaires uniques associés à chaque adhérent, mais par exemple suite à l'assemblée générale l'on doit enregistrer toutes les cotisations reçues un formulaire tabulaire est nettement plus pratique.
    Images attachées Images attachées

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Oui, effectivement si ton formulaire est basé sur une requête analyse croisée, tu ne peux pas mettre à jour directement les données.

    Mais si l'opération consiste à mettre à jour les enregistrements d'une table, il (suffirait) de faire une requête mise à jour (ou peut-être ajout, vu que si j'ai bien compris tu as modifié la structure de ta base). Cela ne devrait pas être difficile, vu que tu as le numéro de référence de ton adhérent dans le formulaire en question.

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    J'avoue ne pas trop comprendre comment une requête mise à jour me permettrait de résoudre mon problème.

    Je reprécise mon besoin :
    faire un formulaire où, adhérent par adhérent, j'ai les cotisations à payer (C1983 à C2035) qui sont des cases à cocher, et les cotisations dues (Du1983 à 2035) zones de texte où apparaissent soit 25 soit 0 si c'est payé (c'est en cliquant sur C2017 que la Du2017 passe à 0)
    Ce formulaire devrait être présenté comme l'exemple joint (basé sur une structure différente de ma base)

    Cela pourrait être fait à partir de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [T Adhérents].N°Adherent, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].DateAdhesion, [T Adhérents].Adherent, T_Cotisation.Cotisation_An, T_Cotisation.Cotisation, T_Cotisation.Cotisation_Du
    FROM [T Adhérents] INNER JOIN T_Cotisation ON [T Adhérents].N°Adherent=T_Cotisation.T_Adherent_FK;
    Sauf que j'ai autant de lignes par adhérent que d'années d'adhésion.

    Sans doute faut-il passer par une autre requête pour qu'à chaque année (T_Cotisation.Cotisation_An) corresponde 1 colonne.

    Merci de ton aide.
    A+

    C15
    Images attachées Images attachées

  8. #8
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Je vais clore cette discussion et essayer de reposer le problème sous une autre forme

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/03/2007, 23h18
  2. Sous-formulaire avec 1 seul enregistrement
    Par Farbin dans le forum Access
    Réponses: 6
    Dernier message: 08/08/2006, 17h37
  3. Modifier un seul enregistrement
    Par nellynew dans le forum Access
    Réponses: 3
    Dernier message: 09/05/2006, 15h12
  4. Voir un seul enregistrement
    Par PrinceMaster77 dans le forum SQL
    Réponses: 1
    Dernier message: 15/11/2004, 17h51
  5. ROLLBACK sur une seul enregistrement
    Par toctoc80 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/04/2004, 21h22

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