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 :

Exécuter une requete ajout paramétrée


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut Exécuter une requete ajout paramétrée
    Bonjour

    Je cherche à remplacer le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CurrentDb.Execute "INSERT INTO FILM ([Titre Film],[Titre VO Film],[Durée Film],[Année Film],[Résumé Film])" & _
                                  '"VALUES(" & "'" & Replace(MonFilm.FTitre, "'", "''") & "'" & " ," & _
                                   '       "'" & MonFilm.FTitreVO & " '" & "," & _
                                   '       "'" & Replace(MonFilm.FDurée, "H", ":") & "'" & "," & _
                                    '      "'" & MonFilm.FAnnée & "'" & "," & _
                                     '     "'" & Replace(MonFilm.FRésumé, "'", "''") & "'" & ")"
    par une requête ajout paramétrée

    Je sais exécuté une requête paramétrée de sélection mais je sêche pour une requête ajout paramétrée !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set oQdf = CurrentDb.QueryDefs("qryFilmExiste")
        oQdf.Parameters("parmTitre").Value = strTitreFilm
        Set rst = oQdf.OpenRecordset()
    Merci d'avance pour l'aide

    @++

    Bestall666

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Utilise la méthode Execute de l'objet QueryDef, après avoir fourni les valeurs de tes paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oQdf.Execute
    ' Nombre d'enregistrements ajoutés : oQdf.RecordsAffected
    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonsoir,

    Utilise la méthode Execute de l'objet QueryDef, après avoir fourni les valeurs de tes paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oQdf.Execute
    ' Nombre d'enregistrements ajoutés : oQdf.RecordsAffected
    A+
    Merci d'avoir pris le temps de me répondre !!

    Je teste dès que possible

    @++

    Bestall666

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Hello

    Cela fonctionne mais j'ai un problème dû au cham résumé qui contient des ' ainsi que des espaces et des points donc je ne modifie rien !!

    Merci beaucoup !!

    @++

    Bestall666

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Chez moi ça fonctionne.
    Ma requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PARAMETERS prmTitre Text (255), prmTitreVO Text (255), prmDurée Long, prmAnnée Long, prmRésumé Text (4096);
    INSERT INTO FILM ( [Titre Film], [Titre VO Film], [Durée Film], [Année Film], [Résumé Film] )
    SELECT [prmTitre] AS Chp1, [prmTitreVO] AS Chp2, [prmDurée] AS Chp3, [prmAnnée] AS Chp4, [prmRésumé] AS Chp5;
    Mon code
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim db As DAO.Database, qdef As DAO.QueryDef, lngRecAff As Long
     
    Set db = CurrentDb
    Set qdef = db.QueryDefs("qAppend")
    qdef.Parameters("prmTitre") = "Titre du film"
    qdef.Parameters("prmTitreVO") = ""
    qdef.Parameters("prmDurée") = 118
    qdef.Parameters("prmAnnée") = 20052
    qdef.Parameters("prmRésumé") = "Résumé:" & vbCrLf & _
                                   "C'est l'histoire d'un gars ..."
     
    qdef.Execute dbFailOnError
     
    Debug.Print qdef.RecordsAffected
    Mon résumé a deux apostrophes et un retour chariot.

    Autrement tu peux essayer d'ouvrir un recordset sur la table, ajouter un enregistrement avec .AddNew, remplir les champs, puis enregistrer avec .Update

    A+

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonsoir,

    Chez moi ça fonctionne.
    Ma requête
    Code sql :
    PARAMETERS prmTitre Text (255), prmTitreVO Text (255), prmDurée Long, prmAnnée Long, prmRésumé Text (4096);
    INSERT INTO FILM ( [Titre Film], [Titre VO Film], [Durée Film], [Année Film], [Résumé Film] ) SELECT [prmTitre] AS Chp1, [prmTitreVO] AS Chp2, [prmDurée] AS Chp3, [prmAnnée] AS Chp4, [prmRésumé] AS Chp5;

    Mon code
    Code vb :
    Dim db As DAO.Database, qdef As DAO.QueryDef, lngRecAff As Long Set db = CurrentDb
    Set qdef = db.QueryDefs("qAppend") qdef.Parameters("prmTitre") = "Titre du film" qdef.Parameters("prmTitreVO") = "" qdef.Parameters("prmDurée") = 118 qdef.Parameters("prmAnnée") = 20052 qdef.Parameters("prmRésumé") = "Résumé:" & vbCrLf & _
    "C'est l'histoire d'un gars ..." qdef.Execute dbFailOnError

    Debug.Print qdef.RecordsAffected
    Mon résumé a deux apostrophes et un retour chariot.

    Autrement tu peux essayer d'ouvrir un recordset sur la table, ajouter un enregistrement avec .AddNew, remplir les champs, puis enregistrer avec .Update

    A+
    Merci pour la réponse!!

    En fait je voulais faire une requête car on m'a dit que c'était plus rapide que les recordset !!!

    @++

    Bestall666

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    je voulais faire une requête car on m'a dit que c'était plus rapide que les recordset !!!
    C'est peut-être vrai sur un très grand nombre d'enregistrements.
    Ma là, vu que tu n'insères qu'un enregistrement ...

    A+

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

Discussions similaires

  1. mysql - problème avec une requete ajout
    Par mekongboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 18h17
  2. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 15h20
  3. Réponses: 10
    Dernier message: 20/02/2006, 16h04
  4. Passage d'une requete en paramètre dans un delete
    Par jlamazou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/08/2005, 17h58
  5. Exécuter une requete enregistrée dans un champ
    Par pascalT dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 10/03/2005, 10h46

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