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 :

probleme d'exécution d'une requete


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Par défaut probleme d'exécution d'une requete
    Bonjour
    J'ai un probleme d'exécution ma requete Sql est identique a celle généré par Access et mon dbCourante.Execute (Sql) ne fonctionne pas il me met impossible d'effectuer une requete sélection. Je ne comprends pas pourquoi
    Si quelqu'un peut me l'expliquer je le remercie d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim dbCourante As DAO.Database
     
    'Définir la base de travail comme la base actuelle
    Set dbCourante = CurrentDb
     
    'Définir la requête
    Sql = " SELECT PJPF2006_T3.OPPO, PJPF2006_T3.MPE, PJPF2006_T3.MPF, PJPF2006_T3.MRE, PJPF2006_T3.MRF, PJPF2006_T3.M__, '2006_T3' AS année FROM PJPF2006_T3 WHERE (((PJPF2006_T3.CBQD)='total') AND ((PJPF2006_T3.MOIS)='total') AND ((PJPF2006_T3.CMOP)='total'));"
     
    'Exécuter la requête
    dbCourante.Execute (Sql)
     
    Set dbCourante = Nothing

  2. #2
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Utilise un RecordSet, ce que tu utilises sert pour les requêtes d'action (INSERT, UPDATE,...)

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,

    Dans DAO, la méthode Execute est utilisée seulement pour les requêtes "action": UPDATE, DELETE, CREATE TABLE...

    Une requête SELECT n'a de sens que si on peut ensuite utiliser les données que la requête retourne.
    C'est là qu'intervient le Recordset (un jeu d'enregistrement) qui est rempli à partir de ta requête, grâce à la méthode OpenRecordset.

    Ensuite tu passes par le Recordset pour manipuler les données.

    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
     
    Dim dbCourante As DAO.Database
    Dim oRS As DAO.Recordset
     
    'Définir la base de travail comme la base actuelle
    Set dbCourante = CurrentDb
     
    'Définir la requête
    Sql = " SELECT PJPF2006_T3.OPPO, PJPF2006_T3.MPE, PJPF2006_T3.MPF, PJPF2006_T3.MRE, PJPF2006_T3.MRF, PJPF2006_T3.M__, '2006_T3' AS année FROM PJPF2006_T3 WHERE (((PJPF2006_T3.CBQD)='total') AND ((PJPF2006_T3.MOIS)='total') AND ((PJPF2006_T3.CMOP)='total'));"
     
    'Ouvrir un Recordset à partir de la requête
    Set oRS = dbCourante.OpenRecordset(Sql)
     
    ' ici on peut intervenir sur les données contenues dans oRS
     
    ' une fois le travail terminé...
    oRS.Close
    Set oRS = Nothing
    Set dbCourante = Nothing
    _

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Par défaut
    Merci beaucoup et comment je pourais utiliser le résultat de ma requete select pour l'ajouter dans une table j'ai le code sql mais je vois pas comment je peux utiliser le résultat
    je fais kom ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sql="INSERT INTO Test ( année, OPPO, MPE, MPF, MRE, MRF, M__ )
    SELECT ResultatDeLaRequete.année, ResultatDeLaRequete.OPPO, ResultatDeLaRequete.MPE, ResultatDeLaRequete.MPF, ResultatDeLaRequete.MRE, ResultatDeLaRequete.MRF, ResultatDeLaRequete.M__
    FROM ResultatDeLaRequete;"
    DoCmd.RunSQL Sql
    et j'ai un probleme d'exécution avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim oRS As DAO.Recorset
    il me le reconnait pas

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    si c'est un copier coller il me manque le d de recordset

    sinon si tu veux faire un insert avec les résultats d'une autre requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO tblClients2 ( NumCli, NomCli, PreCli )
    SELECT [Numéro Client], [Nom Client], [Prénom Client]
    FROM tblClients;
    et si tu veux faire un insert avec le résultat d'un recordset:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO tblClients ( [Numéro Client], [Nom Client], [Prénom Client], Remise )
    VALUES (recordset1![NumClient],recordset1![NomClient],recordset1![PrenomClient]);
    C'est comme ça que je le vois

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Hello darkspoilt !

    Maintenant, on sait ce que tu voulais faire !

    C'est bien une requête action que tu dois utiliser, donc la méthode Execute est bien la bonne (cf. ton 1er post).

    Code VBA : 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
     
    Dim dbCourante As DAO.Database
    Dim Sql As String
     
    'Définir la base de travail comme la base actuelle
    Set dbCourante = CurrentDb
     
    'Définir la requête
    Sql = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
        "SELECT OPPO, MPE, MPF, MRE, MRF, M__, ""2006_T3"" AS année " & _
        "FROM PJPF2006_T3 " & _
        "WHERE CBQD=""total"" AND MOIS=""total"" AND CMOP=""total"";"
     
    'Exécuter la requête
    dbCourante.Execute Sql
     
    Set dbCourante = Nothing
    Bonne continuation !
    _

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Par défaut
    Merci Merci Merci ca m'avance énormément merci encore
    MAis j'ai encore une toute ptite question qui sera plus facile a répondre je pense

    j'aimerais mettre une variable a la place de PFPF2006_T3 et aussi a la place 2006_T3
    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
     
     
    Dim m As String
    Dim a As String
    Dim name As String
     
        m = Me!mois
        a = Me!année
    name = "TableTest" & a & m
     
    DoCmd.SetWarnings False
     
    'Affectation du lieu de récupération  des fichiers
     
    Dim NomDir As String
     
    NomDir = "D:\Test\"
     
    'On atteint le répertoire concerné où se trouvent les fichiers
     
    ChDir (NomDir)
     
    Dim XL As Excel.Application
    Dim nomClasseur1 As String
     
     
    Set XL = CreateObject("Excel.Application")
    nomClasseur1 = "PJPF2007-" & a & m & ".xls"
     
    DoCmd.TransferSpreadsheet acImport, , "TableTest" & a & m, "D:\Test\" & nomClasseur1, 0
     
    Dim dbCourante As DAO.Database
    Dim Sql As String
     
    'Définir la base de travail comme la base actuelle
    Set dbCourante = CurrentDb
     
    'Définir la requête
    Sql = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
        "SELECT OPPO, MPE, MPF, MRE, MRF, M__, ""2006_T3"" AS année " & _
        "FROM PJPF2006_T3 " & _
        "WHERE CBQD=""total"" AND MOIS=""total"" AND CMOP=""total"";"
     
    'Exécuter la requête
    dbCourante.Execute Sql
     
    Set dbCourante = Nothing
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sql = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
        "SELECT OPPO, MPE, MPF, MRE, MRF, M__, " & a & m & " AS année " & _
        "FROM " & _
        "WHERE CBQD=""total"" AND MOIS=""total"" AND CMOP=""total"";"
    J'importe bien la table mais il me la reconnait pas lors de la requete
    il me met la requete doit etre construite au moins a partir d'une table ou une requete source

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Par défaut probleme une boucle ki se cree involontairement
    J'exécute une requete SQL mais il s'avère qu'elle s'éxécute plusisuer fois alors que je demande se se faire une fois la premiere fois ca marche mais j'ai l'impression qu'elle me garde l'enregistrement des resultas del a requete précédente.
    Voila mon code
    Merci d'avance

    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
    Private Sub Commande13_Click()
        On Error GoTo Err_Commande13_Click
     
        Dim m As String
        Dim a As String
        Dim nomTable As String
        Dim nomClasseur As String
        Dim SQL As String
        Dim d As String
     
        m = Me!mois
        a = Me!année
        d = a & m
     
        DoCmd.SetWarnings False
     
        nomClasseur = "D:\Eric\dossier_projets\TDB\PJPF\PJPF2007-" & a & m & ".xls"
        nomTable = "TableTest" & a & m
     
        DoCmd.TransferSpreadsheet acImport, , nomTable, nomClasseur, -1
     
        'd = "2006_T3"
        'nomTable = "PJPF2006_T3"
     
        'Définir la requête
    SQL = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, [année]) " & _
        "SELECT OPPO, MPE, MPF, MRE, MRF, M__, """ & d & """ AS [année] " & _
        "FROM " & nomTable & _
        " WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"
     
        'Exécuter la requête
        CurrentDb.Execute SQL
     
     
    Exit_Commande13_Click:
        Exit Sub
    Err_Commande13_Click:
        MsgBox Err.Description
        Resume Exit_Commande13_Click
    End Sub

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 226
    Par défaut
    J'ai trouvé lors de mon import il s'ajoute a l'ancienne table et il ne l'écrase pas

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

Discussions similaires

  1. Probleme d'exécution d'une requete
    Par malek_IET dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/05/2011, 19h14
  2. [MySQL] Probleme lors de l'excution d'une requete
    Par JmL40 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/06/2007, 13h21
  3. Réponses: 9
    Dernier message: 20/06/2005, 12h17
  4. Probleme de logique dans une requete
    Par linou dans le forum Langage SQL
    Réponses: 11
    Dernier message: 18/03/2005, 19h52
  5. Probleme d'execution d'une requete avec un Count
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 23/06/2004, 10h33

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