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 :

Requête sélection - choix des champs nécessaires - erreur 3959


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2019
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 93
    Points : 70
    Points
    70
    Par défaut Requête sélection - choix des champs nécessaires - erreur 3959
    Bonjour,

    Je tourne en rond stupidement sur une demande élémentaire (selon moi).
    Je dispose d'une table comprenant dans une cinquantaine de champs, les totalisations d'opérations comptables mensuelles (12*4 champs par mois plus nom et solde de départ)
    Chaque mois comprend 4 champs, à savoir (par exemple pour le mois de février 02, pour mars 03, pour décembre 12)
    - la situation financière au 1er du mois (champs calculé sur base de la valeur disponible au dernier jour du mois précédent) : nom = OPS_02_IN
    - le total des recettes du mois (champ numérique classique) : nom = RECETTES_02
    - le total des dépenses du mois (champ numérique classique) : nom = DEPENSES_02
    - la situation financière au dernier jour du mois (champ calculé par situation au 1er du mois + recettes du mois - dépenses du mois) : nom = OPS_02_OUT
    Cette table permet d'avoir aisément un suivi de l'activité financière par mois, trimestre, semestre ou année sans avoir à intervenir sur la table comprenant les opérations quotidiennes

    Il me faut en fait régulièrement imprimer les situations récapitulatives périodiques (le plus souvent par mois).
    Pour ce faire, pour ne pas avoir à créer une requête par période (mois, trimestre, semestre, années), j'ai créé une requête SELECTION dont j'ai récupéré le code SQL pour l'introduire en VBA afin de pouvoir varier aisément le nom des mois nécessaires en modifiant le chiffre du mois.
    1er problème : en vba, j'ai un refus systématique car la commande docmd.runsql ne peut s'appliquer qu'à une requête action et pas sélection
    2ème problème : si je transforme ma requête sélection en une requête de création de table (insert into), il me rejette mon code car elle comprend des champs calculés (ops_99_IN/OUT)

    A titre informatif, voici le code sql généré par l'éditeur de requête et modifié pour devenir le code dans la procédure vba pour le mois de janvier de l'exercice en cours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      Dim newTable As String
      newTable = "[TableTest]"
     
      Dim sql As String, sql1 As String, sql2 As String, sql3 As String, sql4 As String, sql5 As String
      sql1 = "SELECT tblc_02_Banques_soldes.Solde_31décembre, tblc_02_Banques_soldes.Solde_depart, "
      sql2 = "tblc_02_Banques_soldes.Recettes_01, tblc_02_Banques_soldes.Depenses_01, [ops_01_out] AS Sortie, [ops_01_in] AS Entree "
      sql3 = "INTO " & newTable & " "
      sql4 = "FROM tblc_02_Banques_soldes "
      sql5 = "WHERE (((tblc_02_Banques_soldes.CompteBanque)<'ZZ'));"
      sql = sql1 & sql2 & sql3 & sql4 & sql5
     
      CurrentDb.Execute sql
    Si j'ai besoin du mois de mars, par exemple, je remplace dans la ligne sql2 les valeurs "_01" par "_03" et exécute la requête avec l'erreur de champs calculé (ne peut être copié dans la nouvelle table) = 3959, les colonnes calculées ne sont pas autorisées dans les instructions SELECT INTO

    Help please.

    Guy

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    es tu essayé d'utiliser le passage de paramètres dans un Query?

    pour ce qui est de [Select Into], tu peux essayer en 2 étapes au lieu d'une: supression et Add

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2019
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 93
    Points : 70
    Points
    70
    Par défaut Requête - champs calculés
    Bonjour,

    Merci pour la réponse.
    Non je n'ai encore jamais passé de paramètres dans une requête et j'avoue ne pas voir immédiatement comment faire ni comment exploiter cela.
    Pourrais-je ainsi avoir dans ma requête les données de 12 mois de l'exercice et par ce ou ces paramètres définir les champs du mois dont j'ai besoin ?

    Quant au second point, j'ai fait différentes tentatives : insert into n'étant qu'une manière de quitter la requête sélection vers une requête action, peut-être aurais-je dû utiliser plutôt update afin d'éviter la manipulation des champs calculés.

    Je vais tester çà pour la fin de week-end.

    Encore merci.

    Guy

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Citation Envoyé par Gardener68 Voir le message
    ...
    Non je n'ai encore jamais passé de paramètres dans une requête et j'avoue ne pas voir immédiatement comment faire ni comment exploiter cela.
    Pourrais-je ainsi avoir dans ma requête les données de 12 mois de l'exercice et par ce ou ces paramètres définir les champs du mois dont j'ai besoin ?
    ...
    Plusieurs méthodes :
    A l'ouverture d'un formulaire/report utiliser la clause Where de la commande docmd.OpenForm /OpenReport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.openform "nomduform",,,condition
    où condition est une expression compatible SQL WHERE. Exemple : "[colonne]=valeur AND ..."

    Dans un formulaire ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.filter = "Condition"
    Me.filterOn = True
    En VBA par concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim rst as dao.recordset
    set rst = currentdb.openrecodset("SELECT * FROM table WHERE " & condition & ";")
    Avec DAO.Parameters :
    Il faut que la requête contienne des PARAMETERS déclaré. Soit la requête "requete1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS nomObjet Text ( 255 );
    SELECT MSysObjects.Name
    FROM MSysObjects
    WHERE (((MSysObjects.Name) Like [nomObjet]));
    Alors :
    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
     
    Dim qry As DAO.QueryDef
    Dim rst As DAO.Recordset
     
    Set qry = CurrentDb.QueryDefs("requete1")
    qry.Parameters(0).Value = "Module1"
     
    Set rst = qry.OpenRecordset()
     
    Debug.Print rst.RecordCount
     
    rst.Close
    qry.Close
     
    Set rst = Nothing
    Set qry = Nothing
    Cette méthode a son équivalent ADO.

    Peut-être que j'en oubli ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/02/2010, 14h11
  2. [AC-2000] Etat Dynamique - Choix des champs
    Par snoop974R dans le forum IHM
    Réponses: 9
    Dernier message: 18/12/2009, 15h19
  3. [AC-2003] Requête SQL retournant des champs différents selon une condition
    Par lucmorin dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/10/2009, 16h13
  4. export requête avec choix des champs à exporter
    Par NATOU2 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/12/2008, 18h18
  5. Choix des champs pour une importation XLS
    Par menguygw dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/06/2007, 13h09

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