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 :

En utilisant VBA, insérer dans une table Access les résultats d'une requête [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut En utilisant VBA, insérer dans une table Access les résultats d'une requête
    Salut à tous !

    Je possède une base de données, où j'ai créé une table PARTENARIAT. Dans cette table, il y a un champ (un seul champ) "DATE_DBT_CONTRAT"
    Dans cette table, je souhaite récupérer l'année scolaire par rapport à cette date de début de contrat . J'ai créé une requête SQL (R_Annee_Scolaire) pour extraire l'année de cette date de début de contrat et l'année N+1.
    Il me faut alors intégrer les résultats de ma requête "R_Annee_Scolaire".
    Voici ma requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT YEAR([DATE_DBT_CONTRAT]) AS annee, ((YEAR([DATE_DBT_CONTRAT]))+1) AS fin
    FROM partenariat;

    Dans VBA j'ai exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strSql as string
    strSql = "insert into partenariat (debut,fin) select debut, fin from R_Annee_Scolaire;"
    CurrentDb.Execute strSql, dbFailOnError
    J'avais inséré préalablement dans ma table Access les champs debut et fin mais il me met un décalage entre la DATE_DBT_CONTRAT et debut et fin
    C'est à dire que sur la ligne 1 j'ai ma "DATE_DBT_CONTRAT" et sur la ligne 2 mes champs debut et fin sont renseignés (par rapport à la DATE_DBT_CONTRAT de la ligne 1).

    Comment puis-je faire pour que les infos soient mises sur la même ligne
    ou peut être y a-t-il un code + simple pour récupérer directement l'année scolaire depuis la date DATE_DBT_CONTRAT ?

    Merci par avance de votre aide !!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    D'après ce que tu dis, tu veux "METTRE A JOUR" tes nouveaux champs début et fin par rapport à l'année du début de contrat. Donc il faut utiliser plutôt une requête mise à jour (UPDATE) qu'une requête insertion (INSERT). C'ets pour cela que tu as un nouvel enregistrement avec ta requête actuelle.
    Le code ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE partenariat SET partenariat.debut = Year([DATE_DBT_CONTRAT]), partenariat.fin = Year([DATE_DBT_CONTRAT])+1;
    Note : Vu que ce sont des valeurs calculées, en général on ne garde pas des valeurs "calculées" dans une table. Pour y référence, on se contente de la requête qui permet de les calculer. Ta requête "R_Annee_Scolaire" devrait faire l'affaire je pense.

    Cordialement.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chargée d'Etudes Statistiques (étudiante)
    Inscrit en
    Mai 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargée d'Etudes Statistiques (étudiante)

    Informations forums :
    Inscription : Mai 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour madefemere,

    Je te remercie pour ta réponse.
    Le bout de code que tu m'as donné fonctionne très bien, et j'obtiens enfin le résultat souhaité dans ma table.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2011, 11h13
  2. Réponses: 2
    Dernier message: 20/10/2007, 02h24
  3. Réponses: 4
    Dernier message: 22/05/2007, 14h42
  4. Grouper les résultats d'une table et les récupérer ?
    Par jimmu.teno dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/04/2007, 11h22
  5. Rechercher un mot dans les enregistrements d'une table access
    Par codial dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/11/2006, 21h35

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