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

VBA Access Discussion :

Remplir les informations d'un enregistrement de formulaire à partir de l'information d'un enregistrement


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Par défaut Remplir les informations d'un enregistrement de formulaire à partir de l'information d'un enregistrement
    Bonjour à tous!!!!

    j'aimerais : Remplir les informations d'un enregistrement de formulaire à partir de l'information d'un enregistrement d'un autre formulaire.

    Je m'explique...

    Prenons la Table 1 qui contient les colonnes ID, Nom, Prénom, Date, Équipe, Position, ....(D'autres colonnes bidons)

    Et prenons la Table 2 Qui contient les colonnes ID, Nom, Prénom, Date, Équipe, Position

    La table 1 est la source du formulaire 1 et la table 2 est la source du formulaire 2.


    Alors, comment faire la chose suivante :

    L'utilisateur est dans le formulaire 1, le formulaire 1 est de type tabulaire continus, chaque enregistrement dispose d'un bouton. Ce bouton ouvre le formulaire 2 et va appliquer la "Condition Where" et faire Matcher les ID. Donc, ici pour le ID "12345" du formulaire 1, on affiche le formulaire 2 contenant l'historique (plusieurs lignes) du même ID. Jusqu'ici c'est facile, ça fonctionne ! Par contre, j'aimerais que l'utilisateur puisse appuyer sur un bouton du formulaire 2 (formulaire tabulaire continus également) en sélectionnant un enregistrement (une ligne) et cette information irait se mettre à jour dans l'enregistrement du formulaire 1 (Table 1).

    Si je ne suis pas assez clair, faites moi des questions précises et je rajouter le plus d'information possible!!

    Merci beaucoup!

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Une façon intuitive, mais certaine:

    • Après sélection d'un enregistrement suivi du click sur un bouton du formulaire 2
    • Enregistrer dans des variables, toutes les données à utiliser
    • Ouvrir un "recordset" représentant la table1 pour la mettre à jour, ou y ajouter les données mémorisées dans ces variables



    En principe, si les 2 tables ont été bien définies de façon relationnelle, cette opération eut été superflue.

  3. #3
    Membre averti
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Par défaut
    Donc, ça fonctionne presque parfaitement!

    Merci pour ta réponse.

    Il me reste juste un petit "plus" que je veux ajouter au code...Mais ma fonction If ne semble pas fonctionner correctement.

    Les fonctions sont appelées lors de sélection via un bouton dans chaque formulaire...1 et 2. Donc, les valeurs d'enregistrement sont passées en paramètre via un execute code.

    Ce qui ne fonctionne pas c'est la section if .... <> Null.... Else...End if.

    En gros, je veux pouvoir sélectionner une fois de l'information. La première fois fonctionne le champs est bel et bien égal à null, donc il exécute le Else et écrit l'information. Par contre, lorsque le champs contient la première information et que je veux en ajouter un autre... Il ne semble pas détecter le <> Null, il fait comme si le champs = Null encore une autre fois et va écrire par dessus l'information.

    Voici le code.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    Public ID_temp1 As String
    Public Nom_temp1 As String
    Public Prenom_temp1 As String
    Public ID_temp2 As String
    Public Position_temp2 As String
    Public Equipe_temp2 As String
    Public Points_temp2 As String
    Public Date_temp2 As String
     
    Function UploadFromDonnees_Fct1(ByVal ID As String, ByVal Nom As String, Prenom  As String)
     
    On Error GoTo ErrorHandler
     
    ID_temp1 = ID
    Nom_temp1 = Nom
    Prenom_temp1 = Prenom
     
    ErrorHandler:
     
    End Function
     
    Function UploadFromDonnees_Fct2(ByVal ID As String, ByVal Position As String, ByVal Equipe As String, ByVal Points As String, ByVal Date1 As String)
     
    On Error GoTo ErrorHandler
     
    ID_temp2 = ID
    Position_temp2 = Position
    Equipe_temp2 = Equipe
    Points_temp2 = Points
    Date_temp2 = Date1
     
    ErrorHandler:
     
     
    End Function
     
    Function UploadFromDonnees_FctXC()
     
    On Error GoTo ErrorHandler
     
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("Table1", dbOpenDynaset)
     
    rst.movefirst
     
    Do While rst.Fields("ID") <> ID_temp1 And rst.Fields("Nom") <> Nom_temp1 And rst.Fields("Prenom") <> Prenom_temp1
    rst.MoveNext
    Loop
     
     
    If rst.Fields("Position") <> Null Then
     
        rst.Edit
     
        rst.Fields("Position") = rst.Fields("Position") & " & " & Position_temp2
        rst.Fields("Equipe") = rst.Fields("Equipe") & " & " & Equipe_temp2
        rst.Fields("Points") = rst.Fields("Points") & " & " & Points_temp2
        rst.Fields("Date") = rst.Fields("Date") & " & " & Date_temp2
     
        rst.Update
     
    Else
     
        rst.Edit
     
        rst.Fields("Position") = Position_temp2
        rst.Fields("Equipe") = Equipe_temp2
        rst.Fields("Points") = rst.Fields("Points") & " & " & Points_temp2
        rst.Fields("Date") = rst.Fields("Date") & " & " & Date_temp2
     
        rst.Update
     
    End If
     
    ErrorHandler:
     
    rst.Close
    dbs.Close
     
    Set rst = Nothing
    Set dbs = Nothing
     
    End Function

  4. #4
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Difficile de voir le problème de loin, mais essayez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rst.Fields("Position")<>"" Or Not IsNull(rst.Fields("Position")) Then

  5. #5
    Membre averti
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Par défaut
    Lorsque je fais la commande rst.fields(""). Est-ce qu'il regarde la table globalement, sois la colonne au complet? où il regarde vraiment le champs unique de l'enregistrement en cours...?

    Le If que tu me proposes ne semble pas fonctionner également, donc je crois que la problématique n'est pas là.

  6. #6
    Membre averti
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Par défaut
    J'ai trouvé l'erreur, c'était dans la fonction If un des champs Fields("") était un numérique et j'étais sur que c'était un string, bref ça fonctionne maintenant.

    Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/05/2016, 20h04
  2. Réponses: 4
    Dernier message: 29/03/2015, 23h11
  3. Réponses: 2
    Dernier message: 26/08/2009, 08h51
  4. Remplir les bases de données via un formulaire
    Par gangsterus dans le forum VB.NET
    Réponses: 36
    Dernier message: 27/12/2007, 11h43
  5. Réponses: 1
    Dernier message: 28/09/2007, 21h05

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