1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut Comment récupérer les données d'un formulaire tabulaire ?

    Bonjour,

    Je viens de créer un formulaire modifiable sous forme tabulaire. Lorsque je valide les données, je dois vérifier que tous les champs d'une colonne sont au bon format. J'ai basé ma requête sur le balayage de ma requête en sql.

    Lorsque je saisi mon formulaire, que je valide un mauvais format et que je modifie ma donnée, la nouvelle donnée n'est pas prise en compte. Comment faire pour récupérer les données du formulaire tabulaire et non de ma requête provenant de l'écran ?

    Merci d'avance.
    Julien.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    Désolé mais je ne comprends absolument pas ce que tu fais et veux faire.

    Pourrais-tu poster une copie d'écran et expliquer en fonction de l'exemple ce que fait quand tu dis :

    Lorsque je saisi mon formulaire, que je valide un mauvais format et que je modifie ma donnée
    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 averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    Je saisi dans la zone n° de compte12305
    puis je valide
    12305 n'est pas autorisé, j'ai un message d'erreur lié à un contrôle que j'ai effectué,
    je saisi 2 à la place

    Mon query (R_ouv_cpte_en_attente) n'est pas mis à jour, lorsque je met un msgbox derrière le bouton valide, j'ai mon ancienne valeur 12305.

    J'ai codé derrière le bouton valide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rstnumcpte.Open "select num_compte from R_ouv_cpte_en_attente", cnx, , adLockOptimistic
     
            With rstnumcpte
                .MoveFirst
                Do Until .EOF Or TEST = "KO"
     
                        MsgBox rstnumcpte("num_compte").Value

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Même question, posée un peu différemment.

    Bonjour,

    Je cherche à récupérer les données d'un formulaire tabulaire modifiable. Lorsque je modifie quelque chose à l'écran, mes données issues de ma requête sont récupérées et non les données de l'écran.

    Comment faire pour récupérer les données du formulaire tabulaire et non de ma requête ?

    Merci d'avance.
    Julien.
    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 averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut Comment récupérer l'ensemble des valeurs d'un formulaire tabulaire modifiable ?

    Bonjour,

    Je souhaite récupérer l'ensemble des valeurs d'un formulaire tabulaire modifiable pour réaliser des contrôles à l'activation d'un bouton.

    Je sais récupérer le dernier saisi par l'intermédiaire de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Forms]![mon_form]![mon_champ]
    mais pas l'ensemble.

    Merci d'avance.
    Julien.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    Je ne comprends

    Je souhaite récupérer l'ensemble des valeurs d'un formulaire tabulaire modifiable pour réaliser des contrôles à l'activation d'un bouton.
    Tu as un formulaire relié à une source données, c'est ce que signifie "modifiable", pas que tu peux changer la structure même du formulaire (ajouter des contrôles, en enlever, en déplacer), est-ce bien cela ?
    Ensuite tu veux faire ces vérifications sur le contenu d'un ou plusieurs champs avant que ces données se rendent dans la BD, Est-ce bien cela ?
    Bref si tu pouvais détailler en français (pas en code VBA), ce que tu veux faire, il sera sans doute plus facile de t'aider.

    Quelque chose comme :
    1. Le système affiche un nouvel enregistrement
    2. L'utilisateur entre ses données et signale qu'il a fini.
    3. Le système parcourt les champs de saisie et vérifie certaines information.
    4. Si tout est beau, le système enregistre les données.
      Sinon, le système informe l'utilisateur des problèmes.
      Les données ne sont pas enregistrées tant et aussi longtemps qu'il y a des problèmes.

    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.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    Oui c'est exactement cela:

    1. Le système affiche un nouvel enregistrement
    2. L'utilisateur entre ses données et signale qu'il a fini.
    3. Le système parcourt les champs de saisie et vérifie certaines information.
      Si tout est beau, le système enregistre les données.
      Sinon, le système informe l'utilisateur des problèmes.
    4. L'utilisateur modifie sa donnée,
    5. Le système me prend l'ancienne donnée lorsque je la contrôle et non la nouvelle.


    Je prends les données de la requête alors que je devrais les recevoir du formulaire.

    Je ne sais pas comment faire.

    Merci d'avance.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    C'est normal, tant que tes données ne sont pas enregistrées, elles ne sont pas dans la BD. Elles sont seulement dans la copie mémoire faite dans le formulaire.

    Le plus simple est de vérifier les champs du formulaire dans ton code, il te faut mettre quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if me.num_compte is null then
       msgbox "Vous n'avez pas saisi le numéro de compte"
    end if
    Dans L'événement Avant MAJ du formulaire.

    À répéter pour chacun des champs qui t'intéressent.

    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.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    J'ai codé l'affichage da valeur de mon champ dans le beforeupdate du formulaire.

    Malheureusement, l'événement n'est pas déclenché quand je veux (soit quand je quitte ma ligne, soit quand j'active le bouton valider).

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Étrange.

    Je vais faire un test dés que j'ai un moment.

    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.

  11. #11
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    2 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 039
    Points : 3 459
    Points
    3 459

    Par défaut

    J'ai codé l'affichage da valeur de mon champ dans le beforeupdate du formulaire.
    bonsoir,
    il faut utiliser le beforeupdate du champ num_compte

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    Je n'ai pas accès aux événements des champs de mon formulaire tabulaire.

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    C'est vraiment bizarre. Je viens de faire un essais (en Access 2010) avec un formulaire tout bête et un simple table et l'événement se déclenche bien quand je quitte l'enregistrement ou quand je ferme le formulaire.
    Ici le code que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        MsgBox "Form_BeforeUpdate"
    End Sub
    soit quand j'active le bouton valider
    Pour ça, cela dépend peut-être de ce que tu fais dans ce bouton et où ce bouton est placé.

    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.

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    J'ai utilisé une requête.

    Mon bouton est en bas du formulaire.

  15. #15
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    Mon bouton est en bas du formulaire.
    Certe mais est-il dans la zone détail de ton formulaire ? Dans le pied de formulaire ? Dans un autre formulaire qui contient celui qui affiche tes données ?
    Quel est le code associé ?

    Aussi crée comme moi un petit formulaire avec 1 bête table et ajoute mon code.
    Est-ce que cela marche ?

    Si oui sur le formulaire de test, et pas sur le tien alors il doit y avoir quelque chose de spécial dans ce formulaire mais je n'ai aucune idée quoi.
    Tu pourrais, après voir testé les autres options poster une copie d'écran des propriétés de ton formulaire qui ne marche pas.

    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.

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    J'ai positionné mon bouton dans la zone "pied de formulaire".

    Voici le code que j'ai positionné derrière le bouton mais cela ne fonctionne pas, je récupère les données de ma requête et non de mon 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
    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
    Private Sub valider_Click()
         ' On Error GoTo valider_Click_Err
     
         Dim test As String
         Dim cnx As New ADODB.Connection
         Set cnx = CurrentProject.Connection
         Dim rstnumcpte As New ADODB.Recordset
         Dim source As String
     
         test = "OK"    
     
     
         rstnumcpte.Open "select num_compte from R_ouv_cpte_en_attente", cnx, , adLockOptimistic
     
                 With rstnumcpte
     
                Do Until .EOF Or test = "KO"
     
                        'MsgBox num_compte.value
     
                        ' Pas de compte dans la plage 45.xxx.30000.x à 45.xxx.39999.x
                        If Left(num_compte.Value, 2) = "45" And Mid(num_compte.Value, 6, 5) >= 30000 And Mid(num_compte.Value, 6, 5) < 40000 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 46.xxx.90000.x à 46.xxx.99999.x
                        If Left(num_compte.Value, 2) = "46" And Mid(num_compte.Value, 6, 5) >= 90000 And Mid(num_compte.Value, 6, 5) <= 99999 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 48.xxx.50000.x à 48.xxx.59999.x
                        If Left(num_compte.Value, 2) = "48" And Mid(num_compte.Value, 6, 5) >= 50000 And Mid(num_compte.Value, 6, 5) <= 59999 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 07.xxx.80000.x à 07.xxx.99999.x
                        If Left(num_compte.Value, 2) = "07" And Mid(num_compte.Value, 6, 5) >= 80000 And Mid(num_compte.Value, 6, 5) <= 99999 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 08.xxx.60000.x à 08.xxx.69999.x
                        If Left(rstnumcpte("num_compte"), 2) = "08" And Mid(rstnumcpte("num_compte"), 6, 5) >= 60000 And Mid(rstnumcpte("num_compte"), 6, 5) <= 69999 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 28.xxx.87000.x à 28.xxx.99999.x
                        If Left(num_compte.Value, 2) = "28" And Mid(num_compte.Value, 6, 5) >= 87000 And Mid(num_compte.Value, 6, 5) <= 69999 Then
                           test = "KO"
                        End If
     
                        ' Pas de compte dans la plage 49.xxx.86000.x à 49.xxx.89999.x
                        If Left(num_compte.Value, 2) = "49" And Mid(num_compte.Value, 6, 5) >= 86000 And Mid(num_compte.Value, 6, 5) <= 89999 Then
                           test = "KO"
                        End If
     
                        .MoveNext
     
                Loop
            End With
     
          rstnumcpte.Close
          Set rstnumcpte = Nothing
          cnx.Close
     
          If test = "KO" Then
             MsgBox " Les n° de comptes saisis ne doivent pas être dans les plages suivantes : " & Chr(10) & _
            "        45.xxx.30000.x à 45.xxx.39999.x" & Chr(10) & _
            "        46.xxx.90000.x à 46.xxx.99999.x" & Chr(10) & _
            "        48.xxx.50000.x à 48.xxx.59999.x" & Chr(10) & _
            "        07.xxx.80000.x à 07.xxx.99999.x" & Chr(10) & _
            "        08.xxx.60000.x à 08.xxx.69999.x" & Chr(10) & _
            "        28.xxx.87000.x à 28.xxx.99999.x" & Chr(10) & _
            "        49.xxx.86000.x à 49.xxx.89999.x", , "Validation du numéro de compte"
            Exit Sub
          End If
     
    valider_Click_Err_Exit:
        Exit Sub
     
    valider_Click_Err:
        MsgBox "ERREUR 020 - FAIRE MESSAGE A L'ADMINISTRATEUR AVEC CODE ERREUR"
        Resume valider_Click_Err_Exit
    End Sub

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Bonjour.

    Cela parait normal.

    Tant que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rstnumcpte.Open "select num_compte from R_ouv_cpte_en_attente", cnx, , adLockOptimistic
    Tu récupères les informations qui sont actuellement dans la BD mais comme l'enregistrement n'a pas encore eu lieu, pas celles qui sont dans le formulaire.
    C'est pour cela qu'il faut faire les contrôles sur les contrôle du formulaire.

    Ici un exemple de code faisant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if me.num_compte is null then
       msgbox "Vous n'avez pas saisi le numéro de compte"
    end if
    Le me. représente le formulaire actuel et pointe automatiquement sur l'enregistrement sélectionné.

    À part cela, qu'ont donné les tests de déclenchement d'événement ?

    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.

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    Cela fonctionne à part un problème de repositionnement pour lequel je viens de mettre un nouveau post.

    Il faut aussi que je contrôle la saisie derrière le bouton Valider. Pour cela, je dois savoir comment récupérer des données du formulaire tabulaire.

    Malheureusement, je ne sais pas comment faire

  19. #19
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 510
    Points : 15 687
    Points
    15 687

    Par défaut

    Je reposte pour rester cohérent avec la discussion courante.

    Ici un exemple de code faisant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if me.num_compte is null then
       msgbox "Vous n'avez pas saisi le numéro de compte"
    end if
    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.

  20. #20
    Membre averti
    Homme Profil pro
    Inscrit en
    novembre 2008
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : novembre 2008
    Messages : 596
    Points : 322
    Points
    322

    Par défaut

    Cela me donne le contrôle à effectuer derrière l'exit du champ et non derrière le bouton valide.

    Comment balayer tout ce qu'a saisi un utilisateur ?

Discussions similaires

  1. comment récupérer les données supprimés
    Par ouadie99 dans le forum Windows XP
    Réponses: 1
    Dernier message: 02/03/2007, 18h59
  2. Réponses: 6
    Dernier message: 24/01/2007, 10h29
  3. Comment récupérer les données ?
    Par carlosdz dans le forum JavaScript
    Réponses: 2
    Dernier message: 20/07/2006, 00h05
  4. Réponses: 3
    Dernier message: 06/07/2006, 18h49
  5. [VB6] MySQL Comment récupérer les données ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/02/2006, 14h58

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