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

Access Discussion :

Gestion champs vides dans un état


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Gestion champs vides dans un état
    Bonjour à tous,

    Je coince devant un sujet qui à la base me paraissait simple.
    J'ai une requête analyse croisée qui m'indique le nombre d'incidents et de demandes dans le mois en cours (2 colonnes avec Incidents et Demandes).
    Lorsqu'il n'y a pas d'incident, je n'ai plus que la colonne Demandes qui apparaît, ou l'inverse si je n'ai pas de Demandes (jusque là tout va bien ...)
    J'ai un état qui a été construit à partir de cette requête et qui fait appel aux 2 champs (Incidents et Demandes).
    Tout va bien tant que j'ai des Demandes et des Incidents, mais si l'un des 2 champs est vide (n’apparaît donc pas dans la requête), je me retrouve avec une erreur dans l'état puisque j'appelle un champs qui n'existe pas à l'instant T.
    Je tourne en rond et je ne vois pas comment abordé "proprement" ce sujet, auriez vous une nouvelle idée à me soumettre ?

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    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 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Bonjour,

    Tu peux avoir des colonnes fixes dans une RAC. Il faut utiliser la clause IN. Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TRANSFORMATION aggfunction
    instructionselect
    PIVOT pivotfield [IN (valeur1[, valeur2[,...]])]
    Ou Valeur1 sera Demande et Valeur2 Intervention ou vice versa...


    Cordialement,

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Fabrice


    Une fonction pour remplacer Null ou quelque chose qui n'existe pas par autre chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function CeciOuCela(Ceci As Variant, Cela As Variant) As Variant
    On Error GoTo GestionErreur
        If IsNull(Ceci) Then
            CeciOuCela = Cela
        Else
            CeciOuCela = Ceci
        End If
    Exit Function
    GestionErreur:
    CeciOuCela = Cela
    End Function

    Dans ton cas, comme source du contrôle, au lieu de :
    LeNomDeLaColonne 
    écris plutôt :
    =CeciOuCela([LeNomDeLaColonne];"-") 

    Tu imprimeras ainsi un tiret si la colonne n'existe pas.

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Hello,

    Merci à vous, j'ai oublié de préciser que je débutais un peu

    L'option de Fabrice me semble plus à ma portée, aussi pour essayé j'ai créé un nouveau Module et pour essayer, j'ai fait un copier-coller du code fourni.
    J'ai enregistré ce module avec le nom CeciOuCela et j'ai mise le code indiqué dans la source du champs de mon état, soit => =CeciOuCela([INCIDENT];"-")
    Lorsque j'exécute l'état, j'ai l'erreur suivante : Le moteur de la base de données ne reconnait pas "CeciOuCela" en tant que nom de champs ou expression correcte

    Je me plante ou ?

    Merci d'avance

    Claude

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    J'ai enregistré ce module avec le nom CeciOuCela
    C'est là qu'est l'os !

    Le module et la fonction ne peuvent porter le même nom.

    Renomme ton module en par exemple : mFonctions.

    Et dis-nous la suite...

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour la réactivité
    En effet, l'erreur n'est plus sur le nom du module mais sur le nom du champs
    Le moteur de la base de données ne reconnait pas "INCIDENT" en tant que nom de champs ou expression correcte
    Claude

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Dans ton premier billet, tu parlais de « Incidents ».

    J'ai un état qui a été construit à partir de cette requête et qui fait appel aux 2 champs (Incidents et Demandes).

  8. #8
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    C'était une erreur de frappe, j'ai tellement l'habitude d'avoir pleins d'incidents :-)
    Le champs s'appelle bien INCIDENT sans S et je ne pige pas l'erreur ....

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    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 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Parce que s'il n'y a pas de contenu il n'y a pas de champ.

    Je pense que tu vas être dans l'obligation d'utiliser la solution à base de SQL.

    Cordialement,

  10. #10
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    C'est bien çà, pas de contenu donc je ne vois pas le champ alors que je l'appelle dans mon état ....
    Je vais voir si je m'en sors avec le SQL :-)
    Merci pour votre aide

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Effectivement, ma proposition ne tient pas la route !

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    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 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Les RAC sont vraiment particulières.

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Effectivement, ma proposition ne tient pas la route !
    Errare humanum est…


    …perseverare finalement trouvam !


    Dans mon exemple, la colonne « Appellation » est susceptible d’être absente. En d’autres termes, la source de l’état sera

    [/CENTER]

    Une fonction qui permet de déterminer si une colonne est présente dans une source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
    Option Explicit
     
     
    Public Function ColExiste(NomColonne As String, NomSource As String) As Boolean
      On Error GoTo GestionErreurs
      Dim sCol As String
      sCol = DLookup(NomColonne, NomSource)
      If Not IsNull(sCol) Then ColExiste = True
    GestionErreurs:
      Select Case Err.Number
          Case 2471 ' la colonne n'existe pas
      End Select
    End Function
    Elle renvoie True si la colonne existe, False sinon.

    J’ai deux requêtes



    Respectivement :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT tVins.* FROM tVins;
    et
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT tVins.*, "-" AS Appellation FROM tVins;

    Dans l’état, ces contrôles



    Mais pas de source, celle-ci est aménagée à l’ouverture de l’état :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Compare Database
    Option Explicit
     
     
    Private Sub Report_Open(Cancel As Integer)
      If ColExiste("Appellation", "tVins") = True Then
          Me.RecordSource = "rSiAvec"
        Else
          Me.RecordSource = "rSiSans"
      End If
    End Sub

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Citation Envoyé par tintin2016 Voir le message
    Je vais voir si je m'en sors avec le SQL :-)
    Pour appliquer la solution de Fabrice, tu trouveras tout (et encore plus) ici : https://support.office.com/fr-fr/art...1-f08cae458310

Discussions similaires

  1. [ODBC] Gestion des espaces et champs vides dans un formulaire de modification PhP Odbc
    Par kernel57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2014, 16h49
  2. gerer champ vide dans etat access
    Par shaka17 dans le forum IHM
    Réponses: 6
    Dernier message: 01/04/2009, 16h00
  3. Total de champs vide dans un formulaire
    Par gretch dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 11h53
  4. champ vide dans BD
    Par MANU_2 dans le forum Bases de données
    Réponses: 4
    Dernier message: 06/10/2005, 11h28

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