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

Access Discussion :

Parcourir un jeu d'enregistrements


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 69
    Points : 53
    Points
    53
    Par défaut Parcourir un jeu d'enregistrements
    Bonjour,

    Je dois faire un algorithme pour mettre a jour le budget a partir des factures deja rentré.

    Je veux faire quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for each facture in tableFacture
                   docmd.runsql...
     
              next facture
    Mais je sais pas comment exprimer en VB l'expression facture in tableFacture.

    Merci de me donner une piste

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Deux possibilités

    • Une requête SQL Action qui modifie les données (UPDATE)
    • Si les calculs sont complexes, alors il faut envisager le parcours de la table avec un recordset cf : http://warin.developpez.com/access/dao

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Salut, très beau code orienté objet mais, mauvaise nouvelle, Access n'est pas vraiment orienté objet :-). C'est de la programmation procédurale avec des objets.

    La solution est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim db as database:set db=currentdb
    dim rFacture as recordset
    set rFacture=db.openrecordset("TableFacture",dbOpenDynaset)
    do while not rFacture.eof
       'Faire ici le traitement
       rFacture.movenext
    loop
    rFacture.close:set rFacture=nothing
    db.close:set db=nothing
    Ton code pourrait marché si tu faisais tu utilisais une 'Collection' de 'modules de classe' l'équivalent d'Objets en Access mais de toute façon il faudrait que tu charge les données dans tes modules de classe.

    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.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    La mise à jour du budget correspond-t'elle a une mise à jour d'une table ou bien d'un champ d'une table ?

    En gros, ton budget correspond-t'il simplement à la somme des montants de X factures répondants à N critères ? Si oui, il te suffirait de faire quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim lngBudget as Long
    lngBudget = DSum("[MontantFacture]","[tableFacture]")
    (mince pas assez rapide sur ce coup)

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    en fait j'ai une table budget avec plusieurs champs

    Je recupere le montant de la facture je fais une requete update pour mettre a jour un champ de la table budget grace a un calcul puis a partir de ce champ mis a jour je fais une autre requete update qui met a jour par un calcul un autre champ de la table budget

    Je voudrais executer c'est 2 mise a jour dans la boucle for each ou do until je verrais apres lequel est le plus rapide

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    J'ai crée une fonction comme indiqué dans le message plus haut avec do while et je veut executer une requete update dans le traitement.

    J'ai un probleme dans ma requete de mise a jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Factures reçues selon contrat] = budget2.[Factures reçues selon contrat] + [facture]![montan]  WHERE (((budget2.Idbudget)=[facture]![recupidbudget]));")
    Access me demande la valeur du parametre [facture]![montan] qui est un champ de ma table facture

    Est ce que dans le recordset y faudrait que je lui dise que j'ai besoin du champs montan?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    J'ai crée une fonction comme indiqué dans le message plus haut avec do while et je veut executer une requete update dans le traitement.

    J'ai un probleme dans ma requete de mise a jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Facturesreçuesseloncontrat] = budget2.[Factures reçues selon contrat] + [facture]![montan]  WHERE (((budget2.Idbudget)=[facture]![recupidbudget]));")
    Access me demande la valeur du parametre [facture]![montan] qui est un champ de ma table facture

    Est ce que dans le recordset y faudrait que je lui dise que j'ai besoin du champs montan?

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    il ne manquerait pas un t à la fin de montan ?

    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.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/05/2007, 21h46
  2. Réponses: 3
    Dernier message: 19/01/2007, 17h30
  3. taille d'un jeu d'enregistrement
    Par azopei dans le forum Access
    Réponses: 2
    Dernier message: 03/04/2006, 18h03
  4. [VBA] Pourquoi mon jeu d'enregistrement est vide ?
    Par gyzmo5 dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2006, 14h15
  5. Parcourir l'ensemble des enregistrements d'une table
    Par Aurèl90 dans le forum Access
    Réponses: 17
    Dernier message: 22/09/2005, 14h51

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