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 :

Filtre avec requête calculée


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut Filtre avec requête calculée
    Bonjour,

    J'ai un formulaire principal (F_Vue_Emploi) avec comme source une requête (R_Select_Emploi) qui fait le lien entre plusieurs Tables
    Dans ce formulaire, j'ai des champs calculé.( issues de la requête R_Select_Recrutement_En_Cours)
    Lors je lance ce formulaire, je peux modifier le jeu de donnée et les champs calculés fonctionne bien

    J'ai un formulaire de recherches avancés qui permet de filtrer les données de mon formulaire principal.(F_Vue_Emploi)
    Si je fais une jointure dans mon formulaire de recherche, je ne peux plus modifier le jeu de donnée de mon formulaire principal
    J'ai l'erreur classique "Impossible de mettre à jour le RecordSet"


    Est-ce possible de faire un filtre sur un formulaire sans réaliser de jointure dans la requête de base (R_Select_Emploi)?

    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
     
        sSQL = "SELECT * FROM R_Select_Emploi"
        sSQL = sSQL & vbCrLf & "LEFT JOIN R_Select_Recrutement_En_Cours ON R_Select_Emploi.EMPLOI_identifiant = R_Select_Recrutement_En_Cours.EMPLOI_RECRUTEMENT_emploi_identifiant"
        sSQL = sSQL & vbCrLf & "WHERE (EMPLOI_entreprise_id) =1"
     
        'On créé la requête SQL avec les différents champs de recherche
     
    '///////////////////////////////////////////////////Ici tous les champs de recherche de la requête principale//////////////////////////////////////
        If Not IsNull(comboBassin) Then
            sSQL = sSQL & vbCrLf & "And (EMPLOI_bassin_id) =" & Me.comboBassin.Column(1)
        End If
    'le reste des critères
     
    '///////////////////////////////////////////////////Ici tous les champs de recherche de la requête calculé//////////////////////////////////////
     
        If Not IsNull(comboRecrutement) And comboRecrutement.Column(0) Like "*recrutements*" Then
            sSQL = sSQL & vbCrLf & "And ([Recrut?]) =True"
        End If
    'le reste des critères
     
        'On termine la requête SQL
        sSQL = sSQL & ";"
     
        Debug.Print sSQL
     
           'On ouvre la vue emploi avec les données de la recherche
           DoCmd.OpenForm "F_Vue_Emploi"
           With Forms("F_Vue_Emploi")
               .RecordSource = sSQL
               .Requery
           End With

    D'avance merci pour vos éclaircissements

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 430
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Bonsoir,

    La 1ère idée qui me vient serait de tout regrouper dans la requête R_Select_Emploi, y compris les champs calculés, en ajoutant au besoin des tables pour les champs calculés.

  3. #3
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    J'y ai pensé et j'ai même essayé mais j'ai le message "Impossible de mettre à jour le RecordSet" que j'utilise ou non mon formulaire de recherche ou non

    Pour info, le champ calculés sont issues une requête... j'ai pensé créé une table avec mes chap calculés mais je pense que c'est un peu lourd à chaque modification de mon formulaire d'écrire dans une table

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 430
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    ça dépend vraiment de vos tables/requêtes et des liaisons entre elles.

    Pour simplifier, si vous avez une table1(Identifiant1,...) en liaison avec une table2(identifiant2, identifiant1,..) sur le champ Identifiant1.

    Si la colonne Identifiant1 de la table1 est une clé primaire alors Access permet la mise à jour des données de la requête issue de la liaison entre les 2 tables.
    Par contre si ce n'est pas une clé primaire ou s'il n'a pas le moyen de le savoir, alors il n'autorise pas la mise à jour.

    Il ne faut pas non plus qu'il y ai de regroupements dans la requête.

  5. #5
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Bonjour,
    merci beaucoup pour ton aide

    Malheureusement, ma requête calculée comporte des regroupements... j'ai beau reprendre mes tables, requêtes en retravaillant les clés primaires extérieurs, je retombe systématiquement sur le même dysfonctionnement au final

    j'ai une petite idée mais je ne sais pas si c'est possible et propre...
    Est-ce possible de créer un "Clone" du résultat de ma requête initiale R_Select_Emploi avec les jointures.. et d'envoyer dans le formulaire que le résultat équivalent à R_Select_Emploi ?
    je ne sais pas si c'est clair

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 430
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Si je comprends bien, vous souhaitez pouvoir visualiser les résultats de vos champs calculés, tout en ayant la possibilité de modifier les données.

    Si c'est le cas, alors il faudrait remplacer les opérations avec regroupements dans la requête calculée, par des fonctions de domaine, comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champCalcule : dsum("champvaleur";"table1";"Champ1="  & [Champ1])
    Mais cela va ralentir la requête.

    Autrement, prévoir un formulaire pour la mise à jour des données, et un autre pour les recherches mais en lecture seule.

  7. #7
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Bonjour,

    Un grand Merci ! ça fonctionne !!!

    J'utilise une recherche dans une fonction de domaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mouvement?: RechDom("[Mvt?]";"R_Select_Mouvement_En_Cours";"ACTION_identifiant_emploi='" & [EMPLOI_identifiant] & "'")
    Comme vous l'avez annoncé les performances ne sont pas au rendez-vous
    En affichage direct du résultat dans un formulaire F_Vue_Emploi, ça s'affiche un peu plus lentement mais ça va...
    Par contre quand j'utilise mon formulaire de recherche avancé, ça met entre 1min30 à 2 min pour afficher le résultat

    Ma table comporte 4000 enregistrements et 20 champs dont 4 fonctions de domaine comme ci-dessus

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 430
    Points : 20 014
    Points
    20 014
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    J'imagine que le champ [Emploi_identifiant] identifie chaque ligne de la requête R_Select_emploi ?

    Pouvez-vous donner le code sql des requêtes R_Select_Emploi et R_Select_Mouvement_En_Cours ?

Discussions similaires

  1. Problème avec requête calcul des âges
    Par BP EST dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 02/08/2012, 19h29
  2. Recordset d'une requête avec champ calculé
    Par gbzmt dans le forum VBA Access
    Réponses: 6
    Dernier message: 13/02/2008, 21h22
  3. Recordset d'une requête avec champ calculé
    Par gbzmt dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/02/2008, 08h37
  4. Requête calculée avec si
    Par JenniferP dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/02/2008, 16h59
  5. Filtre ou Requête multicritère avec case coché
    Par StelproJoe dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/02/2007, 22h16

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