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 :

Tester des conditions sur une boucle d'insertion de champs [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut Tester des conditions sur une boucle d'insertion de champs
    Bonjour à tous !

    J'utilisais le code suivant pour insérer automatiquement des lignes dans une table en fonction d'un paramètre de date :

    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
    Private Sub Bt_Heure_Click()
     
        DtDeb = Me.Date_Deb
        DtFin = Me.Date_Fin
        Fk_contrat = Me.Co_id
     
        For Boucle = 0 To DateDiff("d", DtDeb, DtFin)
            MaDate = DtDeb + Boucle
            DoCmd.SetWarnings False
     
            DoCmd.RunSQL ("INSERT INTO Horaire ( fk_contrat, Ho_jourscontrat) SELECT " & Fk_contrat & " AS Co_id, #" & Format(MaDate, "mm/dd/yyyy") & " # AS Ho_jourscontrat;")
            DoCmd.SetWarnings True
     
        Next
     
        Me.Refresh
     
    End Sub
    Et pour m'affranchir de la création de doublons si les lignes existaient déjà j'avais créé dans ma table Horaire un Index sans doublon basé sur la fk_contrat et Ho_jourscontrat.

    Hors notre informaticien nous a migré sur SQL server qui ne prends pas en compte les possibilités d'index. Donc je dois adapter mon code pour tester l'existence d'une ligne contenant déjà la clé et le champs, si oui je n'insère rien, si non j'insère les infos correspondantes.

    Contraintes supplémentaires cette table est destinée à contenir un grand nombre de lignes (>80 000). Une recherche par ligne ne risque-t-elle pas d'allonger considérablement le temps de création ?

    Merci d'avance !

    Sardaucar

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,

    ca sera un poil plus long, mais si tu n'as pas la main sur les clés dans les tables, il faut faire un test avec un Dcount

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Dcount("fk_contrat","Horaire","fk_contrat="  & Fk_contrat) = 0 Then
    Sinon dans ta requête tu peux faire une jointure de non correspondance.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Inscrit en
    Mai 2012
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 219
    Points : 94
    Points
    94
    Par défaut
    Impeccable je pars sur le Dcount et si ça charge trop je l'intégrerais dans la requête !

    Merci encore !

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

Discussions similaires

  1. [PHP 5.3] Tester des conditions dans une boucle for
    Par coulane dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2010, 11h50
  2. Conditions sur la boucle lisant une table
    Par Bouga74 dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 17/07/2009, 13h26
  3. [E07] erreur sur une boucle avec condition
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/03/2009, 14h59
  4. insert des données sur une autre table
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 18/02/2009, 15h21

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