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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut diminuer la sollicitation de l'utilisateur pour une meme date dans des requetes simultanées
    Bonjour

    J'ai une macro qui purge une table de certaines donnée, préalablement, je demande l'impression de deux états basés sur cette table pour conserver une trace "papier" des données avant leur suppression.
    Pour créer cette effet, j'ai confectionné des requètes sur lesquelles les états imprimés sont basés, et comme je dois travailler pour des jours donnés, il y a une interrogation sur un critère de date au moment du lancement de la macro.

    Mon probleme vient de la multiple demande faite au niveau de la date; en effet, la date est demandée pour l'impression de l'état n°1, puis une nouvelle fois pour le n°2 et enfin pour selectionner la date à puger...

    existe t il un moyen pour que la date ne soit demandée qu'une seule fois à l'utilisateur et que les 3 actions aient lieu ?


    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    octobre 2004
    Messages
    3 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 649
    Points : 7 999
    Points
    7 999
    Par défaut


    Comment lances-tu tes requêtes ? l'une après l'autre ?

    Un moyen : Lancer la procédure à partir d'un formulaire. La date à purger est saisie dans une Zone Texte et toutes les requêtes font référence à cette zone

    Bonne continuation
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Jeannot45 Voir le message


    Comment lances-tu tes requêtes ? l'une après l'autre ?
    Tout d'abord, merci de ta réponse

    Oui, en fait le bouton sur lequel on clic lance une macro, la macro contient 3 lignes, les deux premières sont des demandes d'ouverture d'etat basé sur une requete (où la date est demandée) et la dernière ligne est une requete de remplacement où là aussi la date est demandée.

    Donc en cliquant on a 3 demandes de dates consécutives....


    Citation Envoyé par Jeannot45 Voir le message
    Un moyen : Lancer la procédure à partir d'un formulaire. La date à purger est saisie dans une Zone Texte et toutes les requêtes font référence à cette zone

    Bonne continuation
    Techniquement pour des raisons de travail, je ne peu pas passer par un formulaire....l'idéal serai que le clic ouvre une seule et meme zone (formulaire réduit au minimum...) et effectivement que les requetes s'y référent, mais je ne vois pas comment:
    - faire que les 3 requetes s'y referent
    - ne pas garder cette date (donc qu'elle soit remise a 0 à chaque fois)
    - fermer cette zone (formulaire?) une fois la dernière requete exécutée...


    Je vais faire quelques essais basés sur ton idée, mais si quelqu'un peut me guider plus avant dans cette construction ou si quelqu'un a une autre idée, je suis preneur

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Bon....

    Rien à faire....

    je n'arrive pas a aller recuperer une date dans une table que j'aurai rempli précédement apres l'avoir ouvert sur clic....en plus la table s'ouvre bien mais aussitot apres la suite de la macro se lance et cela n'attends pas que je rentre la date dans la table

    Donc deux problemes:

    - Comment, grace à une macro, aller recuperrer la date dans une table et s'en servir comme date de départ pour une selection avec la ligne suivante de la macro (ouverture d'etat) ?

    - Comment faire pour que la macro attende au moins le temps nécessaire a la saisie de la date pour continuer à s'exécuter ?

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    Bonjour,

    Tu peux utiliser une inputbox pour la saisie des dates

    • saisie de la date
    • ouverture du report
    • Attente de la fermeture du report
    • suppression des données de la table concernant la date


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim vDate As String
    vDate = InputBox("Entrez la date :")
    DoCmd.OpenReport "Monreport", acViewPreview, , "ChampDate=" & vDate
    While CurrentProject.AllReports("MonReport").IsLoaded
       DoEvents
    Wend
    DoCmd.RunSQL "Delete * From matable where ChampDate=" & vDate
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Commande77_Click()
    Dim dateselection As String
    dateselection = InputBox("Entrez la date :")
    DoCmd.OpenReport "Etat des projets", acViewPreview, , "Date=" & dateselection
    While CurrentProject.AllReports("Etat des projets").IsLoaded
       DoEvents
    Wend
    DoCmd.RunSQL "Delete * From TableTempoDateImpression where DateTemp=" & dateselection
    End Sub
    Le probleme est que le rapport s'affichant corresponds a une date vide

    Où ai je commis l'erreur ?

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    Oups les dates dans VBA... une longue histoire d'amour !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim dateselection As Date
    dateselection = InputBox("Entrez la date :")
    DoCmd.OpenReport "test", acViewPreview, , "cdbl(DernierReval)=" & CDbl(dateselection)
    On caste en double (format natif des dates dans les bases de données) pour éviter les problèmes du changement de format en VBA (les dates sont automatiquement passées en UK mm/jj/aaaa).

    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    on me demande d'entrer une valeur pour :

    et toujours pas de date dans le resultat

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    Le code transmis est à adapter à ton cas. Donc mettre le bon nom de champ date présent dans ton état.

    Important ! En relisant ton code précédent je m'aperçois que tu emplois des mots clefs pour tes noms. C'est TRES FORTEMENT DECONSEILLE, à moins que tu sois de nature masochiste et que tu aimes te faire souffrir inutilement en plaçant des [] partout dans ton code et tes expressions.

    Regarde les mots clefs dans l'aide.
    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
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par loufab Voir le message
    Le code transmis est à adapter à ton cas. Donc mettre le bon nom de champ date présent dans ton état.
    A priori j'ai tout vérifié et j'ai mis le bon nom
    l'etat s'ouvre mais ne renvoie aucune donnée....



    Citation Envoyé par loufab Voir le message
    Important ! En relisant ton code précédent je m'aperçois que tu emplois des mots clefs pour tes noms. C'est TRES FORTEMENT DECONSEILLE, à moins que tu sois de nature masochiste et que tu aimes te faire souffrir inutilement en plaçant des [] partout dans ton code et tes expressions.

    Regarde les mots clefs dans l'aide.
    Tu veux parler des noms des tables et des objets ?
    Je sais bien, mais une des contraintes de travail que l'on m'a donné est de rendre cela explicite a ceux qui, apres moi, devront reprendre la tâche ou la maintenance (ou en mon absence) il me faut donc donner des noms explicites

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    On peut donner des noms explicites sans pour cela utiliser les mots réservés. Il suffit souvent d'un caractère supplémentaire.

    Je faisais référence à ton champ nommé Date.

    Idem pour les espaces dans les noms d'objets il faut mettre des crochets partout, en SQL et plus génant dans VBA.

    ça devrait donner ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Etat des projets", acViewPreview, , "cdbl([Date])=" & CDbl(dateselection)
    [Date] est bien un champ date ?
    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

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Ah oui c'est clair que ça marche vachement mieux comme ça !!!

    Je m'en suis mis une claque (véridique!) tellement faire une boulette pareille est inadmissible...et le pire c'est que cela m'a rappellé que j'avais déjà fait la même erreur d'emploi de mot réservé à une autre occasion ....

    Ce coup là j'espère que je vais m'en souvenir !!!

    En tous cas un grand merci, ca me permets d'avancer
    je teste le reste de la procédure et si c'est Ok je manque "résolut"

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    Bon c'est pas une raison pour se menotter au radiateur non plus !
    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

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    alors ca marche tres bien
    La seule chose, c'est qu'avant quand j'utilisait des macro qui sollicitaient l'utilisateur de façon multiple, ça imprimait automatiquement les pages meme si j'avais un affichage des données en prévisualisation, là je n'ai que la prévisualisation sans impression automatique

    est ce qu'il y a un moyen pour imposer l'impression ?


    Il faut aussi que je vois comment lancer une macro depuis cette partie de code car la macro de purge se fait tres bien et simplement par une requete de suppression de données nominatives et de remplacement par des données du type "purgé" pour les champs texte et "0000000000" pour les champs numériques...

    Je test le lancement de macro pour le moment ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Je croyais me simplifier la vien en lancant une requete au lieu d'une macro, mais a priori il me manque un argument....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenQuery (Requête Purge2)
    Car là, au lieu de faire appel a la date, il me propose de supprimer tous mes enregistrement

    Je n'ai pas trouvé l'argumentaire qui correspondait au code de l'envoie de l'etat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenReport "Etat des projets", acViewPreview, , "cdbl([Date])=" & CDbl(dateselection)

  16. #16
    Membre chevronné
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    février 2008
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2008
    Messages : 898
    Points : 2 200
    Points
    2 200
    Par défaut
    Bonjour.

    Pour imprimer un état directement la syntaxe est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Etat des projets", acViewNormal, , "cdbl([Date])=" & CDbl(dateselection)
    Pierre

    PS ; utiliser l'aide F1 dans l'éditeur de code, cela donne de précieux renseignements

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par pier.antoine Voir le message
    Bonjour.

    Pour imprimer un état directement la syntaxe est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Etat des projets", acViewNormal, , "cdbl([Date])=" & CDbl(dateselection)
    Pierre

    PS ; utiliser l'aide F1 dans l'éditeur de code, cela donne de précieux renseignements



    Bonjour

    Oui pour imprimer un etat, quelqu'un m'avait fort aimablement dépanné (je n'aurai pas trouvé seul... )

    Mais maintenant il s'agit de lancer une requete....et je ne trouve pas comment inclure le meme argument de date...

  18. #18
    Expert confirmé

    Profil pro
    Inscrit en
    mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 3 419
    Points : 4 219
    Points
    4 219
    Par défaut
    si tu utilises la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function memorise(Optional x As Variant) As Variant
    Static y As Variant
    If Not IsMissing(x) Then y = x
    memorise = y
    End Function
    il te suffit à la première requête d'entrer

    select memorise(ladate paramètre entré par l'utilisateur)

    les requêtes suivantes utiliseront memorise() sans paramètre
    Elle est pas belle la vie ?

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    il doit me manquer quelque chose, le debugger me demande un "case"....

  20. #20
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 973
    Points : 22 205
    Points
    22 205
    Par défaut
    bizarre !

    Peux-tu poster ton code ?
    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

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 23/10/2009, 09h24
  2. créer une table utilisateurs pour une BD ?
    Par DBA_OCP dans le forum Administration
    Réponses: 12
    Dernier message: 03/06/2009, 15h18
  3. gettime 2 résultats différents pour une meme date
    Par krolineeee dans le forum java.util
    Réponses: 5
    Dernier message: 05/03/2007, 14h36
  4. Nombre max d'utilisateurs pour une base de données
    Par romrai dans le forum Access
    Réponses: 18
    Dernier message: 10/07/2006, 16h28

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