Discussion: Erreur de code inexpliquée [AC-2010]

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    juillet 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : juillet 2013
    Messages : 39
    Points : 28
    Points
    28

    Par défaut Erreur de code inexpliquée

    Bonjour à tous,

    Je suis en train de refaire une petite application de GMAO, dans laquelle la saisie d'un code d'intervention dans les champs "code" du formulaire "Interventions" remplit automatiquement les champs "intervention","Sous_Inst" pour la sous installation (localisation),"Type_Equip" pour le type d'équipement,"Equip"pour l'équipement concerné par l'intervention,"Lib_Mat" pour libellé du matériel utilisé,"Note" pour note et "PU" pour prix unitaire.
    Le code s'appuie sur la fonction DLookup, comme vous pouvez le voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Code_Interv_AfterUpdate()
     
        Me.Intervention = DLookup("Interventions", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.ID_Sous_Inst = DLookup("Sous_Installation", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.ID_Typ_Equip = DLookup("Typ_Equip", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.ID_Equip = DLookup("Equipement", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.Lib_Mat = DLookup("Description", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.Note = DLookup("Note", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
        Me.PU = DLookup("Unit cost", "T_Type_Interventions", "ID_Type_Interv=" & Me.Code_Interv & "")
     
    End Sub
    L'ensemble fonctionne, excepté pour la dernière ligne Me.PU

    A l'origine je souhaitai récupéré les informations de prix directement dans la table "T_Wincheck", en fonction de la description du matériel, mais en vain.

    Je joins une version très allégée de la BDD.

    Merci d'avance pour votre aide, car je sèche.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 760
    Points : 21 806
    Points
    21 806

    Par défaut

    Bonjour,

    Un truc m'interpelle dans ton code.

    Tout ces dlookup qui traite la même table et le même enregistrement.
    Dans un cas comme celui-là il vaut mieux utiliser un recordset DAO avec un Findfirst.

    mais bon, ça marche alors pourquoi se casser la tête.

    Pour ton problème :
    Les caractères spéciaux dans les noms doivent être traités par un séparateur. Dans le doute mets les partout ou évite-les (perso je les évite)
    Espace =>> undescore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Me.PU = DLookup("[Unit cost]", "[T_Type_Interventions@", "[ID_Type_Interv]=" & Me.Code_Interv)
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    juillet 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : juillet 2013
    Messages : 39
    Points : 28
    Points
    28

    Par défaut

    Merci Beaucoup LOUFAB,

    En effet, cela fonctionne même si je ne comprends pas pourquoi puisque les lignes de code précédentes fonctionnent sans accolades et avec la même typographie...

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 760
    Points : 21 806
    Points
    21 806

    Par défaut

    Voici pourquoi :

    Lorsque tu utilises dlookup() cette fonction fait un appel à la base de données en reproduisant une requête suivant les paramètres que tu lui as passé (voir mon tuto sur l'optimisations et plus particulièrement l'optimisation Rushmore : http://loufab.developpez.com/tutorie...tion/#LIII-D-1

    Donc ton appel à la fonction est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("Unit cost", "T_Type_Interventions@", "ID_Type_Interv=" & Me.Code_Interv)
    Cela est traduit comme cela en SQL via RUSHMORE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Unit cost  FROM T_Type_Interventions@ WHERE ID_Type_Interv=lecodetransmit
    Au niveau du SELECT tu vois bien l'erreur ?

    Maintenant la même chose avec ma correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Unit cost]  FROM [T_Type_Interventions@] WHERE  [ID_Type_Interv]=lecodetransmit
    Le problème est réglé en utilisant les règles SQL.

    As-tu compris ?

    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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    juillet 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : juillet 2013
    Messages : 39
    Points : 28
    Points
    28

    Par défaut

    Merci encore Loufab,

    Je pense avoir compris.
    Mais si je peux abuser, comment opèrerais-tu pour que ces informations de "Description" et de "PU", soient alimentées directement de la table [T_Wincheck] ?
    Je m'explique: je pense que pour éviter la redondance de ces informations, il faudrait les stocker dans une seule table, la table [T_Wincheck] puisque celle-ci est alimentée automatiquement par un rapport informatique généré par notre logiciel de gestion des stocks.
    Aussi, je pensais ne renseigner dans la table [T_Type_Interventions] uniquement le champs [Product code] qui sert de clef primaire dans la table et donc ne changera jamais contrairement à la description ou au prix.
    Seulement j'ai essayé vainement de remplir automatiquement les champs [Description] et [PU] de la table [T_Interventions] lors de la saisie du code intervention.
    Ma solution de repli, aussi délirante soit-elle a été de renseigner pour chaque type d'intervention les champs [Description] et [Unit cost].

    Comme j'essaie de faire les choses de manière "professionnelle, si tu avais une solution je suis preneur...

    Quoi qu'il en soit, merci encore.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 760
    Points : 21 806
    Points
    21 806

    Par défaut

    Bonjour,

    Si T_wincheck contient les vrais valeurs pourquoi s'embarrasser d'un transfert dans une autre table ?

    Utilises une clef unique pour faire la relation entre les 2 tables. Puis construis une requête retournant un tuple des 2 tables avec les bonnes infos pour alimenter ton application.

    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

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

Discussions similaires

  1. Erreur système . Code : 1410 ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/05/2006, 08h59
  2. [Debutant][XSL] Erreur de code programmation
    Par SkyDev dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/03/2006, 22h38
  3. Erreur : ce code n'est pas connu
    Par ruman dans le forum VBA Access
    Réponses: 17
    Dernier message: 13/02/2006, 11h37
  4. Erreur dans code php
    Par Badr3am dans le forum PHP & MySQL
    Réponses: 11
    Dernier message: 31/01/2006, 22h16
  5. Erreur de code
    Par petdelascar dans le forum C
    Réponses: 7
    Dernier message: 12/12/2005, 08h15

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