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 :

remplissage automatique du champ fils d'un sous-formulaire [AC-2007]


Sujet :

IHM

  1. #1
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut remplissage automatique du champ fils d'un sous-formulaire
    Bonsoir Messieurs.
    j'ai un problème. j'ai parcouru le site de long en large mais je n'ai pas encore trouvé la solution. cela fait des mois.
    J'ai un formulaire DEVOIRS et un sous-formulaire COMPOSER
    DEVOIRS(Num_Dev, Cls,...) et COMPOSER(Mle_Elv, Num_Dev, Note). Cls est le code de la classe et une liste deroulante.
    je veux que qu'après la mise la mise à jour de Cls, qu'il me rempli le sous-formulaire COMPOSER avec la liste des eleves (mle) et Num_Dev.
    j'ai proceder de deux manières mais aucune ne marche. en faite il ajoute le nombre de lignes des élèves mais avec des #Nom.

    1. En rattachant un recordset au 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Code_Cls_AfterUpdate()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strSQL As String
    Dim cl As Recordset
    Dim cls As Long, dv As Long
     
    Set rs = New ADODB.Recordset
    Set cn = CurrentProject.Connection
     
     
    cls = Form_DEVOIRS.Code_Cls
     
     
    dv = Me![Num_Dev]
    strSQL = "SELECT ELEVES.Mle_EL," & dv _
     & " FROM ELEVES INNER JOIN (CLASSES INNER JOIN INSCRIRE ON CLASSES.[Code_Cls] = INSCRIRE.[Code_Cls]) " & _
    "ON ELEVES.[Mle_EL] = INSCRIRE.[Mle_elv] WHERE (((INSCRIRE.Code_Cls)= " & cls & "));"
    rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic, adCmdText
     
    'MsgBox rs.GetString, , "Liste des élèves de la classe       "
     
    Form_DEVOIRS.COMPOSERSF.Form.Recordset.AddNew
     
     
    Set Forms("DEVOIRS").COMPOSERSF1.Form.Recordset = rs
     
    rs.Close
    cn.Close
     
    Set cn = Nothing
    Set rs = Nothing
    End Sub
    2. En utilisant l'instruction SQL comme recordsource 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
    15
    16
    17
    18
    19
    20
    21
    Private Sub Code_Cls_AfterUpdate()
     
    Dim strSQL As String
     
    Dim cls As Long, dv As Long
     
     
     
    cls = Form_DEVOIRS.Code_Cls
    End If
     
    dv = Me![Num_Dev]
    strSQL = "SELECT ELEVES.Mle_EL," & dv _
     & " FROM ELEVES INNER JOIN (CLASSES INNER JOIN INSCRIRE ON CLASSES.[Code_Cls] = INSCRIRE.[Code_Cls]) " & _
    "ON ELEVES.[Mle_EL] = INSCRIRE.[Mle_elv] WHERE (((INSCRIRE.Code_Cls)= " & cls & "));"
     
     
    Form_DEVOIRS.COMPOSERSF1.Form.RecordSource = strSQL
     
     
    End Sub
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    Si tu souhaites remplir une table il faut utiliser une requête INSERT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO TableARemplir (ID, Nom, Note) VALUES (3, 'Washington', 10.5);"
    L'utilisation d'ADO Est-ce volontaire ?

    Une fois la table rempli il suffit de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forms.MonForm.SfMonform.Form.Requery
    pour qu'il affiche les nouveaux records.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci pour la réponse.
    J'ai utilisé un recordset parce que je pensais que ceci pouvait résoudre mon problème, mais bon ce n'est pas le cas. Voulez-vous dire que je ne devais pas utilisé un recordset dans ce cas ?

    Comme je suis dans un formulaire, je ne sais pas comment procéder concrètement. J'ai besoin de votre aide.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Il te faut créer une requête Insert basée sur la liste des élèves, ce que tu as commencé à faire, mais en y ajoutant des informations de ton formulaire. Suivant cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO tableDestination (champ1, champ2, ...)
     SELECT champ1, champ2, ... FROM tableSource;
    Ce qui donnerait cela, bien sûr c'est à toi d'ajuster tout ça pour que ça corresponde à ton environnement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strSQL = "INSERT INTO Composer (Mle_Elv, Num_dev, Note)  SELECT ELEVES.Mle_EL, " & me.Num_dev & " FROM ELEVES "
    'la partie jointure est à vérifier
    strSQL = strSQL & " INNER JOIN (CLASSES INNER JOIN INSCRIRE ON CLASSES.[Code_Cls] = INSCRIRE.[Code_Cls]) ON ELEVES.[Mle_EL] = INSCRIRE.[Mle_elv] 
    ' la partie Where aussi
    strSQL = strSQL & " WHERE (((INSCRIRE.Code_Cls)= " & cls & "));"
     
    currentdb.execute strSql, dbfailonerror
    forms.MonForm.SfMonform.Form.Requery
    Tu peux t'aider de ceci :
    http://cafeine.developpez.com/access...el/debugprint/

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci infiniment. ça marche. mais j’aimerais comprendre la syntaxe suivante: currentdb.execute strSql, dbfailonerror

  6. #6
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Toutes mes excuses. en faite ça marche mais des que je passe à nouveau enregistrement il m’envoie l’erreur suivante Erreur d’exécution '3201': Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table "DEVOIRS")

    J'ai parcouru l'aide d'ACCESS et je me rend compte que c'est parceque Num_Dev qui est numauto se rempli en même temps que je valide le champ Cls.
    comment valider Num_Dev avant la validation de Cls ?

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    num_dev doit exister pour que ça fonctionne.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup.
    En fait Num_DEv existe. Le problème est que le formulaire principal n'est pas enregistré avant le remplissage du sous-formulaire.
    quant j'enregistre manuellement avant de passer au champ Cls ça marche.
    Mais ne peut-on pas le faire avec le code ?
    Merci d'avance et merci pour tout.

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Pour qu'il existe il faut qu'il soit enregistré, donc enregistre avant de faire le Execute. Il n'y a pas d'autre solution.

    Pour enregistrer par le code tu peux faire :

    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Candidat au Club
    Homme Profil pro
    ingenieur statisticien
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : ingenieur statisticien
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci infiniment Loufab. Vous êtes un expert.
    Mon problème est résolu.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2008, 01h01
  2. problème de remplissage automatique de champs
    Par nunien22 dans le forum Général VBA
    Réponses: 4
    Dernier message: 02/05/2007, 14h13
  3. Remplissage automatique de champs
    Par Gali dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 23h07
  4. Réponses: 4
    Dernier message: 22/05/2006, 15h41
  5. [MySQL] Remplissage automatique des champs d'un formulaire
    Par dodji05 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/04/2006, 16h11

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