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

Requêtes et SQL. Discussion :

[2000] Erreur dans requêtes successives


Sujet :

Requêtes et SQL.

  1. #1
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut [2000] Erreur dans requêtes successives
    Bonjour,

    Dans le cadre la mise à jour d'une base de données avec un fichier Excel, j'exécute toute une série de requêtes qui extraient des données du fichier Excel pour créer différentes tables temporaires. Ces tables temporaires servent pour mettre à jour des tables existantes.

    Ces requêtes font partie d'une procédure qui les exécute à la suite avec la commande currentDb.execute.

    Lorsque j'exécute la procédure, certaines informations ne sont pas mises à jour. Par contre, pour essayer de débugger, j'exécute toutes les requêtes manuellement... et dans ce cas, cela fonctionne.

    Faut-il placer un DoEvents entre chaque requête ?
    Gabout

  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 595
    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 595
    Points : 34 271
    Points
    34 271
    Par défaut
    salut gabout,
    peux-tu nous indiquer ton code d'exécution de requête stp ?
    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
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par Gabout Voir le message

    Faut-il placer un DoEvents entre chaque requête ?
    Tu poses une question, pourquoi ne testes-tu pas ?

    DoEvents, est schématiquement comme une pause, on attend que le processus soit fini pour passer au suivant.

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour jpcheck, bonjour Starec,

    Je viens de tester (de retour du boulot) le DoEvents... mais sans résultat.
    Je joins à ce message ce que j'ai écrit (j'y ai laissé les DoEvents).

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Public Function BM_Gestion_application_Import_Gesper()
        'Import des données issues de Gesper (Matricule, nom, prenom, etc.)
        'On Error GoTo Gestion_erreur
     
        'PROCEDURE D'IMPORT DES DONNEES
        Dim sSQL As String              'Commande SQL
        Dim sFichierImport As String    'Nom complet du fichier Excel d'import
        Dim lEnreg As Long              'Nombre d'enregistrements
        Dim sMsg As String              'Message
        Dim sTitre As String            'Titre
        Dim lStyle As Long              'Paramètres de la boite de message
     
        'Vérification du niveau de l'utilisateur
        If VarAdmin = False Then
            sMsg = "L'application est en mode utilisateur. " & vbNewLine & _
                   "Vous n'êtes pas habilité(e) à effectuer cette opération."
            sTitre = "Opération non autorisée"
            lStyle = vbCritical + vbOKOnly
            MsgBox sMsg, lStyle, sTitre
            Exit Function
        End If
     
        'DoCmd.SetWarnings False         'Supprimer les messages
     
        'Localisation du fichier d'importation
        sFichierImport = OuvrirUnFichier(0, "Localisation du fichier d'import (*.XLS)", 1, "Fichier Excel", "xls")
        DoEvents
     
        'Suppression de la table DATA si elle existe
        If ExistenceTable("DATA") = True Then DoCmd.DeleteObject acTable, "DATA"
        DoEvents
     
        'Importer les données du fichier Excel dans la table temporaire DATA
        DoCmd.TransferSpreadsheet acImport, 8, "DATA", sFichierImport, True, ""
        DoEvents
     
        'Suppression de la table temporaire UNITES si elle existe
        If ExisteTable("UNITES") = True Then DoCmd.DeleteObject acTable, "UNITES"
        DoEvents
     
        'Création de la table temporaire UNITES
        sSQL = "SELECT DATA.CAffectation AS CUnite, DATA.Affectation AS Unite, Date() AS MaJ INTO UNITES " & _
               "FROM DATA " & _
               "GROUP BY DATA.CAffectation, DATA.Affectation, Date() " & _
               "HAVING (((DATA.CAffectation) Like '*00'));"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Mise à jour de la table tbl_UNITES avec la table temporaire UNITES
        sSQL = "UPDATE tbl_UNITES RIGHT JOIN UNITES ON tbl_UNITES.CUnite_ID = UNITES.CUnite " & _
               "SET tbl_UNITES.CUnite_ID = [UNITES]![CUnite], tbl_UNITES.Unite = [UNITES]![Unite], " & _
               "tbl_UNITES.MaJ = [UNITES]![MaJ];"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Suppression de la table temporaire UNITES
        DoCmd.DeleteObject acTable, "UNITES"
        DoEvents
     
        'Suppression de la table temporaire AFFECTATIONS si elle existe
        If ExisteTable("AFFECTATIONS") = True Then DoCmd.DeleteObject acTable, "AFFECTATIONS"
        DoEvents
     
        'Création de la table temporaire AFFECTATIONS
        sSQL = "SELECT DATA.CAffectation, DATA.Affectation, Left([CAffectation],6) & '00' AS CUnite, Date() AS MaJ INTO AFFECTATIONS " & _
               "FROM DATA " & _
               "GROUP BY DATA.CAffectation, DATA.Affectation, Left([CAffectation],6) & '00', Date() " & _
               "ORDER BY DATA.CAffectation;"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Mise à jour de la table tbl_AFFECTATIONS avec la table temporaire AFFECTATIONS
        sSQL = "UPDATE tbl_AFFECTATIONS RIGHT JOIN AFFECTATIONS ON tbl_AFFECTATIONS.CAffectation_ID = AFFECTATIONS.CAffectation " & _
               "SET tbl_AFFECTATIONS.CAffectation_ID = [AFFECTATIONS]![CAffectation], " & _
               "tbl_AFFECTATIONS.Affectation = [AFFECTATIONS]![Affectation], " & _
               "tbl_AFFECTATIONS.CUnite = [AFFECTATIONS]![CUnite], tbl_AFFECTATIONS.MaJ = [AFFECTATIONS]![MaJ];"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Suppression de la table temporaire AFFECTATIONS
        DoCmd.DeleteObject acTable, "AFFECTATIONS"
        DoEvents
     
        'Mise à jour de la table tbl_AGENTS avec la table temporaire DATA
        sSQL = "UPDATE tbl_AGENTS RIGHT JOIN DATA ON tbl_AGENTS.Matricule_ID = DATA.Matricule " & _
               "SET tbl_AGENTS.Matricule_ID = [DATA]![Matricule], tbl_AGENTS.Qualite = [DATA]![Qualite], " & _
               "tbl_AGENTS.Nom = [DATA]![Nom], tbl_AGENTS.Prenom = [DATA]![Prenom], " & _
               "tbl_AGENTS.Naissance = [DATA]![Naissance], tbl_AGENTS.CAffectation = [DATA]![CAffectation], " & _
               "tbl_AGENTS.CGrade = [DATA]![CGrade], " & _
               "tbl_AGENTS.Sortie = [DATA]![Sortie], tbl_AGENTS.MaJ = Date();"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Suppression de la table temporaire GRADES si elle existe
        If ExisteTable("GRADES") = True Then DoCmd.DeleteObject acTable, "GRADES"
        DoEvents
     
        'Création de la table temporaire GRADES
        sSQL = "SELECT DATA.CGrade, DATA.Grade, Date() AS MaJ INTO GRADES " & _
               "FROM DATA " & _
               "GROUP BY DATA.CGrade, DATA.Grade, Date();"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Mise à jour de la table tbl_GRADES avec la table temporaire GRADES
        sSQL = "UPDATE tbl_GRADES RIGHT JOIN GRADES ON tbl_GRADES.CGrade_ID = GRADES.CGrade SET " & _
               "tbl_GRADES.CGrade_ID = [GRADES]![CGrade], tbl_GRADES.Grade = [GRADES]![Grade], tbl_GRADES.MAJ = [GRADES]![MaJ];"
        CurrentDb.Execute sSQL
        DoEvents
     
        'Suppression de la table temporaire GRADES
        DoCmd.DeleteObject acTable, "GRADES"
        DoEvents
     
        'Décompte des enregistrements
        lEnreg = DCount("*", "DATA")
        DoEvents
     
        'Information de la procédure
        sMsg = "Mise à jour de la table des agents :" & vbNewLine _
            & lEnreg & " enregistrements mis à jour." & vbNewLine & vbNewLine _
            & "L'importation des données GESPER est terminée !"
        MsgBox sMsg, vbInformation + vbOKOnly, "Import des données GESPER"
     
        'Supprimer la table temporaire DATA et de la table des erreurs
        DoCmd.DeleteObject acTable, "DATA"
        If ExisteTable("Feuil1$_ImportErrors") = True Then DoCmd.DeleteObject acTable, "Feuil1$_ImportErrors"
     
        DoCmd.SetWarnings True 'Afficher les messages
    End Function
    Gabout

  5. #5
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Re,

    Je ne trouve pas mais je viens de m'apercevoir qu'en faisant deux fois l'import coup sur coup, je retrouve tous mes petits.

    Question que je me pose : mon application est fractionnée (frontale/dorsale), cela peut-il avoir une incidence ? J'ai testé le compactage de la base après l'import... rien, je sèche
    Gabout

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

Discussions similaires

  1. Erreur dans requête avec DISTINCT
    Par SOPSOU dans le forum InterBase
    Réponses: 0
    Dernier message: 12/04/2011, 12h45
  2. [MySQL] Erreur dans requête préparée
    Par skandaboy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/01/2011, 12h33
  3. [MySQL] Erreur dans requête Update
    Par kikoyo dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/04/2009, 14h21
  4. Erreur dans requête SQL
    Par Gaetch dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/11/2008, 07h20
  5. Erreur dans requête : blabla fonction d'agrégat
    Par The_Super_Steph dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/06/2007, 10h55

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