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

IHM Discussion :

Problème conception sous-formulaire


Sujet :

IHM

  1. #1
    Membre à l'essai
    Femme Profil pro
    AUTRE
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Problème conception sous-formulaire
    Bonjour,
    J'ai un problème pour la conception de mon sous formulaire, le vrai problème étant mes connaissance accèss ...
    En espérant que vous pourrez m'aider.

    Mon formulaire principal composé de plusieurs objet permettant à l’utilisateur de remplir certains critères. Je voulais que le résultat de cette recherche apparaisse dans un sous-formulaire.
    Pour cela, j'ai créé une requête de sélection (associé à une table "TAMPON") qui est devenu la source de mon sous formulaire ... jusque là pas de soucis.

    Mon problème est que je souhaiterais que l'utilisateur puisse écrire dans ce sous-formulaire dans une colonne "Commentaire".

    Access refusant que j'écrive dans ce formulaire je suppose que cela n'est pas possible ... Avez vous une astuce ???




    J'ai tenté une autre solution, en remplacent la source de mon sous-formulaire directement par la table TAMPON (où l'utilisateur pourra écrire son commentaire).
    Et maintenant mon problème se situe au niveau du filtre de ce formulaire (des différents critères) via VBA :

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TABLE_TAMPON_sous_formulaire.Form.Filter = " ''([TABLE_TAMPON].[Colonne]=" & " ' ' " & Me.critère1 & " ' ')' ' "
    Le message d'erreur est le suivant :
    Erreur de syntaxe opérateur absent dans l'expression.


    Nom : Image1.JPG
Affichages : 80
Taille : 62,2 Ko

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Si Access refuse, il y a généralement 2 raisons.

    1. La source de données est en mode "lecture seule".
      Dans certaines circonstance (parfois obscures :-) ), Access bascule en mode "lecture seule".
      Cela se voit quand on ouvre la requête directement (sans passer par un formulaire) et qu'on a pas en bas, à côté de flèches de déplacement, le [*>] activé … ou qu'on essaye de saisir quelque chose.
      Ça vient habituellement de ce qu'on a dans la requête une relation 1 à N et que Access ne sait pas où il devrait écrire.
      Pas grand chose à faire dans ce cas que de repenser la source de données pour qu'on n'est plus cette jointure 1 à N.
      On peut par exemple remplacer la jointure par un DFirst() moins performant mais qui ne bloque pas. Ou alors carrément supprimer la jointure et utiliser une liste déroulante dans le formulaire pour afficher les données voulues.
    2. Le formulaire interdit la modification.
      Là c'est une propriété du formulaire qui a été mise à non. Il y en a 3 : Modification autorisée, Ajout autorisé et Suppression autorisée. Dans ton cas se serait "Modification autorisée".


    A+

  3. #3
    Membre à l'essai
    Femme Profil pro
    AUTRE
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci marot_r pour ta réponse,

    Après vérification, je confirme que mon formulaire/sous-formulaire autorise bien les modifications, je peux donc exclure cette hypothèse.

    Je pense que ton hypothèse de la base de donnée de en lecture seule est exacte vu que lorsque j'ouvre ma requête (sans passé par le formulaire), je ne peux rien modifié dedans.
    Après avoir supprimé mes jointures, mon sous-formulaire était bien disponible en écriture... et après ajout d'une jointure le problème est réapparu..

    Je penses que tu as raison et que je ne pourrais pas utiliser de jointure ..
    Je vais me renseigner sur DFirst() que je ne connais pas beaucoup.

    Merci de m'avoir aidé en tout cas (une fois de plus).

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Dfirst est assez facile à utiliser ses paramètres sont DFirst("[UnChamp]";"[UneSource]";"UnCritere").
    Donc pour
    • UnChamp tu mets le nom du champ qui t'intéresse dans ta table (ou requête) de référence.
    • UneSource tu mets le nom de la table ou requête qui t'intéresse.
    • unCritere tu mets une chaîne de caractère qui décrit ce que tu cherches. ici ça va être ce qui te servait pour la jointure et ça peut ressembler à "[TaClef]=" & [TaRequeteActuelle].[TaClef].
      C'est la partie un peu délicate car la syntaxe n'est pas intuitive.
      Il ne faut pas mettre le nom de la source dans la spécification des champs. Access ne cherche que dans la source indiquée en 2ième paramètre.
      Et il faut faire attention aux délimiteurs. L'exemple que je t'ai mis suppose que TaClef est nunérique donc il n'y a pas de délimiteurs.
      Si TaClef est du texte alors il faut mettre "[TaClef]=""" & [TaRequeteActuelle].[TaClef] & """".
      Si tu as besoin d'une fonction ou d'un opérateur logique il FAUT utiliser les noms anglais.
      Par exemple "[TonChamp1]=""" & [TaRequeteActuelle].[TonChamp1] & """ and IsDate([TonCHamp2)".
      Cela va chercher un enregistrement dont TonChamp1 est égal et pour lequel TonChamp2 est une date.

      Attention DFisrt(), le Fisrt (Premier) est trompeur. C'est le 1er que Access trouve mais si tu en as plusieurs enregistrements qui répondent aux critères, il n'y a pas de garantie que ce soit le 1er que tu vois quand tu affiches les données, ça peut bien être le 100ième dans ta table. Il n'y a aucun moyen de contrer cela si ce n'est que de donner des critères plus précis qui n'identifient qu'un est un seul enregistrement.


    A+

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

Discussions similaires

  1. conception : sous formulaire
    Par noua59 dans le forum IHM
    Réponses: 1
    Dernier message: 30/11/2007, 15h10
  2. Problème de sous formulaire
    Par benoit13 dans le forum IHM
    Réponses: 3
    Dernier message: 27/07/2007, 11h19
  3. Problème de Sous Formulaire
    Par EGSway dans le forum IHM
    Réponses: 6
    Dernier message: 20/06/2007, 17h43
  4. Problème ouverture sous-formulaire
    Par Fishes83 dans le forum Access
    Réponses: 8
    Dernier message: 10/10/2006, 02h54
  5. Problème de sous-formulaire
    Par Deubeul_iou_Bouch dans le forum Access
    Réponses: 4
    Dernier message: 12/05/2006, 16h53

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