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

HyperFileSQL Discussion :

Peut-on et comment récupérer le nom d'une rubrique d'un fichier de données?


Sujet :

HyperFileSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 121
    Points : 53
    Points
    53
    Par défaut Peut-on et comment récupérer le nom d'une rubrique d'un fichier de données?
    Bonjour à toutes et à tous,

    Je commence à m'essayer aux "Trigger serveur" en essayant de créer un fichier "LOG" qui enregistre toutes les modifications apportées au fichier de données "PRODUIT".

    J'ai déclaré HDécritTriggerServeur dans l'initialisation de mon projet.
    Dans l'analyse j'ai créé une procédure stockée et un trigger avant.
    J'arrive à enregistrer dans le fichier LOG la date, l'heure, l'ID du produit dès que j'effectue une modification ou pas d'ailleurs(juste tentative). Autre chose, la modification est enregistrée deux fois???
    Je pense qu'il faut que je récupère le nom de la rubrique modifié pour récupérer la valeur avant la modification pour les sauvegarder et pouvoir retrouver si besoin ses valeurs. Sachant que cette valeur peut être variable.

    C'est donc là que je ne sais pas si c'est possible (bien qu'avec la fonction HListeRubrique on puisse récupérer la liste des rubriques, il doit bien être possible de récupérer le nom de la rubrique modifiée) et comment procéder.

    J'ai quand même essayé des choses mais sans succès.

    Voici ou j'en suis pour l'instant.
    Code WINDEV : 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
    32
    33
     
    SELON H.FonctionTrigger
    	CAS "HModifie"
    		Trace("Modif")
     
    		//Variable identification du produit
    		nNumIDproduit est un entier
    		nNumIDproduit = produit.IDproduit
    		Trace("L'IDproduit est "+nNumIDproduit)
    		//Variable nom de la rubrique modifiée
    		sNomRubriqueModifiee est une chaîne
     
    		POUR TOUT produit AVEC IDproduit = nNumIDproduit
    			//Pour l'instant je récupère la valeur modifiée de la rubrique produit_ref_fournisseur, à rendre variable selon la rubrique
    			Trace(produit.produit_ref_fournisseur)
     
    		FIN
     
    		LOG_FICHIER.LOG_FICHIER_Date = DateSys()
    		LOG_FICHIER.LOG_FICHIER_Heure = HeureSys()
    		//LOG_FICHIER.LOG_FICHIER__Rubrique = sNomRubriqueModifiee
     
     
    		HAjoute(LOG_FICHIER)		
     
     
    	CAS "HAjoute" 
     
    	CAS "HSupprime"
     
    	AUTRE CAS
    		// Rien à faire
    FIN
    Merci pour vos bons conseils et votre aide pour m'accompagner vers la solution.

    Bonne journée

    Gregus

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 121
    Points : 53
    Points
    53
    Par défaut
    J'ai essayé
    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		NomRubrique est une chaîne
    		NomRubrique = HRécupèreRubrique(produit, 6, RC)
    		Trace(NomRubrique)
    cela me donne la modification du texte que j'effectue

    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		NomRubrique est une chaîne
    		NomRubrique = ExtraitChaîne(HListeRubrique(produit),6,RC)
    		Trace(NomRubrique)
    cela me donne le nom de la rubrique "6". En l'occurence "produit_nom_produit". je pense que ce qu'il faut que j'arrive à faire c'est une variable pour récupérer l'indice de la rubrique dans le fichier de donnée en fonction de la rubrique modifié.

    Mais je ne sais pas comment. Est-ce que l'on récupérer l'indice d'une rubrique comme on récupère l'indice d'une ligne?

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour Gregus,

    Avec le hlisterubrique, tu va avoir la liste des rubriques. Il faut que tu prennes ensuite les types de données associés (2ème élément lorsque tu utilises hLstDétailPlus) pour effectuer les conversions si besoin (numeriqueverschaine).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 121
    Points : 53
    Points
    53
    Par défaut
    Bonjour frenchsting,
    Merci pour ta réponse.
    Il m'a fallu un peu de temps avant de faire un retour pour essayer de comprendre. J'ai pas encore compris.

    Si, un peu quand même. HListeRubrique donne la liste des rubriques du fichier de données avec d'autres informations. J'ai fini par comprendre que le 6ème élément est le libellé en toutes lettres, et le 1er aussi. J'avais sauté la partie de l'aide où il parle de l'utilisation notamment de la constante hLstDétailPlus.

    Pourquoi me conseils-tu de prendre le 2ème élément? J'aurai soit "N" soit "T" alors qu'avec le 6ème j'ai le nom complet?

    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ListeRubrique est une chaîne
    ListeRubrique = HListeRubrique(produit, hLstDétailPlus)
    Trace(ListeRubrique)

    Le résultat du trace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IDtva<TAB>N<TAB>19<TAB>8<TAB>1<TAB>IDtva<TAB>18<TAB>0<\r><\n>
    IDmarque<TAB>N<TAB>19<TAB>8<TAB>1<TAB>IDmarque<TAB>18<TAB>0<\r><\n>
    IDcouleur<TAB>N<TAB>19<TAB>8<TAB>1<TAB>IDcouleur<TAB>18<TAB>0<\r><\n>
    ...
    Ce que je souhaiterais pouvoir faire c'est récupérer uniquement le nom de la rubrique qui a subit une modification.
    Un truc qui en toute simplicité pourrait s’interpréter :

    POUR IDproduit DE produit AVEC ListeRubrique(produit, hLstDétailPlus) ayant subit une modification
    SAI_Rubrique = Rubrique
    FIN

    Mes trois lignes du dessus vous font bien marrer.

    J'arrive pour l'instant à extraire le nom d'une rubrique en précisant son rang avec la fonction ExtraitChaîne

    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NomRubrique est une chaîne
    		NomRubrique = ExtraitChaîne(HListeRubrique(produit),6,RC)

    S'il est possible d'arriver au résultat que je souhaite, toutes les idées sont les bien venues.
    Merci

    Grégus

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    le conseil était pour la gestion des types, pas des noms.

    Le truc, c'est qu'il va falloir que tu compares les valeurs de toutes tes rubriques avec celles présentes dans l'enregistrement concerné de la bdd.
    La notion de "a été modifiée" n'existe pas (ou je ne sais pas que ça existe).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 121
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    le conseil était pour la gestion des types, pas des noms.
    Ok, ceci étant ton conseil m'a permis de comprendre un peu mieux HListeRubrique.

    Citation Envoyé par frenchsting Voir le message
    Le truc, c'est qu'il va falloir que tu compares les valeurs de toutes tes rubriques avec celles présentes dans l'enregistrement concerné de la bdd.
    La notion de "a été modifiée" n'existe pas (ou je ne sais pas que ça existe).
    En écrivant mon Post#4, c'est ce que je pensais. Un truc du genre "valeur avant modification <> valeur après modification". Je ne connais pas pour les rubriques d'un fichier de données, de propriété "valeurmodifiée" comme pour certain champ.

    Je ne sais pas comment faire. Cependant fort de mes recherches j'ai lu une discussion qui traitait de comparaison de données et dans laquelle un participant suggérait de créer un fichier de donnée temporaire qui allait enregistrer les valeurs modifiées et les comparer au fichier de données "officiel" pour en faire ressortir la modification qui allait enclencher toute un process derrière.

    Je voudrais, si possible, pouvoir faire plus simple. D'autant que dans mon fichier de donnée il y a 54 rubriques.

    J'aimerai bien que quelqu'un me suggère une technique différente et plus simple (de mon niveau) que je puisse mettre en oeuvre.

    Merci pour vos retours et vos participations.

    Grégus

  7. #7
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Plutôt qu'un fichier de données, je passerais plutôt par un tableau associatif. A voir pour gérer les types de données.

    Lister les 54 rubriques n'est pas un souci car tu l'as avec hlisterubrique. Il te faut ensuite utiliser les indirections.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

Discussions similaires

  1. Réponses: 22
    Dernier message: 19/01/2011, 10h00
  2. Comment récupérer le nom d'une DIV dynamiquement ?
    Par Cvbdev dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/06/2010, 23h42
  3. Comment récupérer le nom d'une balise XML avec DOM ?
    Par Predatorus26 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 28/05/2010, 15h54
  4. comment récupérer le nom d'une combobox dans une servlet
    Par phenix1988 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 09/05/2010, 13h20
  5. Comment récupérer le nom d'une contrainte
    Par equilibrium dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/05/2008, 14h38

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