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 :

parcourir un recordset, modifier enreg et ajout de données


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 28
    Points : 17
    Points
    17
    Par défaut parcourir un recordset, modifier enreg et ajout de données
    Voici ci-après le détail des actions que je voudrais faire faire à un bouton dans mon formulaire :
    Les données :
    sql = jeu d’enregistrement créé sur deux tables liées tbl1 et tbl2 par un champ commun champN
    rs = recordset construit sur sql
    l’action à faire :
    tant que rs n’est pas à la fin du jeu d’enregistrement, je lui demande de rechercher les enregistrements qui correspondent à un critère.
    i) Si trouvé alors modifier la valeur du champ Champ2, champ2 est une case à cochée définie par défaut à vraie dans la table tbl1.
    Par un me.requery, je fais la mise à jour du Champ2 et calcule la nouvelle valeur du textBox NbResultat qui fait la somme de (Champ2.Value).
    ii) Si pas trouvé, alors je lui demande d’ajouter des enregistrements aux deux tables uniquement pour les enregistrements de mon jeu où champ2. value = vrai (condition1) et si l’utilisateur a accepté de continuer par msgbox (message) =vbyes (condition 2).
    Si condition 1 et 2 = faux alors sortir et ré-initialiser le formulaire.

    Il manque une condition à vérifier et je ne sais pas où la mettre dans mon code :
    Toute la boucle while… wend n’est possible que si la valeur initiale du textbox NbResultat est >1.
    Voici mon code, merci de m’indiquer ce que je peux améliorer.

    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
    Private Sub bt_valider_Click()
    Dim DB As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String
     
    sql = " SELECT tblENVOI.*, tblFAX.* " _
        & " FROM tblENVOI INNER JOIN tblFAX ON " _
        & " tblENVOI.num_envoi = tblFAX.num_envoi;"
     
    Set DB = Application.CurrentDb
    Set rs = DB.OpenRecordset(sql)
     
    While Not rs.EOF
    'verifie si le fax à envoyer existe déja
    rs.FindFirst ("code_client=" & Me.SF_ResultatCircul.Form!txtClient & " AND code_fnr=" & _
                    Me.SF_ResultatCircul.Form!txtFnr & _
                  " AND date_arrete=#" & CDate(Me.SF_ResultatCircul.Form!txtDateArrete) & "#")
     
        If Not rs.NoMatch Then
    'si le fax à envoyer existe déjà alors modifier case à cocher "circulariser" = 0
            With rs
                .Edit
                !circulariser.Value = 0
                .Update
                .Close
                Set rs = Nothing
            End With
     
            Me.SF_ResultatCircul.Requery
            'calcul de la nouvelle valeur du nombre de lignes trouvées
            Me.txtNbResultat.Value = -DSum(Me.SF_ResultatCircul.Form!circulariser.Value)
            ' mise à jour instantanée
            Me.txtNbResultat.Requery
     
        Else
        'si aucun fax trouvé alors ajouter à condition que case à cocher "circulariser" = -1 et utilisateur ok pour continuer
             If (Me.SF_ResultatCircul.Form!circulariser.Value = -1) And (MsgBox(" Plusieurs fax de votre sélection " _
           & " ont déja été envoyés ! " & vbCrLf & " Souhaitez-vous continuer? ", vbYesNo + vbQuestion) = vbYes) Then
             With rs
                .AddNew
                !date_envoi = Me.txtDateEnvoi
                !nb_envoi = Me.txtNbResultat
                !type_envoi = 1
                !code_client = Me.SF_ResultatCircul.Form!txtClient
                !code_fnr = Me.SF_ResultatCircul.Form!txtFnr
                !num_collab = Me.txtUser
                !circulariser = True
                !reponse = False
                !date_arrete = Me.SF_ResultatCircul.Form!txtDateArrete
                .Update
                .Close
                Set rs = Nothing
             End With
     
             'confirmation de la créaton des fax
             MsgBox " Vous avez généré " & Me.txtNbResultat & " fax." & vbCrLf & "" _
             & " Envoi n° " & Me.txtNumEnvoi & " du " & Format(Me.txtDateEnvoi, "dd/mm/yyyy"), vbInformation
     
             'ré-initialisation du formulaire par appel de la sub Initialisation()
             Initialisation
     
           Else
           'si l'utilisateur ne souhaite pas continuer
             DoCmd.Quit
             MsgBox "Action annulée", vbInformation
             Initialisation
           End If
        End If
    Wend

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonsoir,
    dans un pemier temps il faut changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " AND date_arrete=#" & CDate(Me.SF_ResultatCircul.Form!txtDateArrete) & "#")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " AND date_arrete=#" & Format(CDate(Me.SF_ResultatCircul.Form!txtDateArrete),"mm/dd/yyyy") & "#")
    J'ai oublié le format US dans les requêtes.

Discussions similaires

  1. modifier formatage chapitre - ajout bandot
    Par banzai killer dans le forum Mise en forme
    Réponses: 1
    Dernier message: 08/08/2008, 08h02
  2. [MySQL] Modifier, supprimer ou ajouter des champs
    Par dudu134 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/10/2007, 14h35
  3. Parcourir un recordset pour un select-Case
    Par Pascal87 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/09/2007, 21h16
  4. Réponses: 3
    Dernier message: 29/03/2006, 13h21

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