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

SAGE Discussion :

Enregistrement d'un champ spé dans la base [X3-V5]


Sujet :

SAGE

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Enregistrement d'un champ spé dans la base
    Bonjour,

    Je m'essaye à de petites personnalisations dans X3 et je ne suis pas encore très familiarisé avec les techniques qui y sont propres. Ma question peut donc être stupide, mais je n'ai pas trouvé de solution en creusant par moi même ou sur ce forum.

    Explications :

    J'ai créé le champ ZNOFAC (de type M 1, c'est à dire un oui/non) dans la table BPADDRESS. J'ai ensuite ajouté ce champ dans l'écran BPABPC (adresses client). Jusque là pas de soucis.
    La case à cocher était donc accessible mais n'enregistrait jamais sa donnée dans la base. Quand je cliquais la case et que j'enregistrais la fiche, la case revenait à son état d'origine et la donnée n'était pas modifiée dans la base.

    J'ai donc ajouté une action SPE de type Après_modif et dans le traitement spécifique SPEBPA, j'ai ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Subprog AM_ZNOFAC(VALEUR)
    Variable Integer VALEUR
    [F:BPA]ZNOFAC = VALEUR
    Rewrite [F:BPA]
    End
    Après compilation du traitement et validation de l'écran, je rencontre maintenant un comportement étrange... Quand j'arrive dans l'écran, que je modifie la case à cocher, que je passe à un autre champ (pour que le bouton Enregistrer s'active) et que j'enregistre, la case à cocher revient à son état d'origine et l'info n'est pas écrite dans la base. Si je refais la manip sans sortir de l'écran, la case à cocher conserve bien la nouvelle valeur et l'info est écrite dans la base. En gros, ça fonctionne pour toutes les modifs (tant que je reste dans l'écran) sauf pour la première.

    Pour info, j'ai placé une instruction infbox pour voir si je passe bien dans le traitement à chaque fois, et c'est bien le cas (à la première modif et au suivante).

    Auriez-vous une idée ?
    Merci par avance.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Essai d'enlever ta fonction AM_ZNOFAC(VALEUR)

    Ça donne quoi ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur réponsable Sage X3
    Inscrit en
    Avril 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur réponsable Sage X3

    Informations forums :
    Inscription : Avril 2008
    Messages : 338
    Points : 427
    Points
    427
    Par défaut
    L'écran qui gère BPADDRESS est un cas particulier.

    Il faut gérer un champ caché et un champ affiché.

    Il faut gérer un champ ZNOFAC en invisible dans l'écran en bloc 1
    Il faut ensuite gérer un autre champ ZZNOFAC en saisie dans le bloc voulu.

    Il faut ensuite sur le champ BNADR définir 2 actions SPE INIT et AVANT_SAISIE
    Il faut également mettre une action SPE INIT sur le champ NUMLIG

    subprog AN_NBADR
    gosub INIT_ZONE_SPE
    end

    subprog D_NBADR
    gosub INIT_ZONE_SPE
    end

    Subprog D_NUMLIG
    variable decimal valeur
    gosub INIT_ZONE_SPE
    end

    $INIT_ZONE_SPE
    if nolign>0
    [M]ZZNOFAC = [M]ZNOFAC([M]NUMLIG)
    affzo [M]ZZNOFAC
    endif
    return

    Il faut ensuite gérer le APRES_MIDIF sur votre champ ZZNOFAC
    subprog AM_ZZNOFAC(VALEUR)
    variable char VALEUR()
    [M]ZZNOFAC([M]numlig)=VALEUR
    end

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour vos réponses.

    BF0509, je n'ai pas réussi à faire ce que tu indiquais... Ça ne fonctionne pas mais il n'est pas impossible (il est même probable) que ça vienne de moi et d'un truc qui m'échappe.

    Ceci dit, j'ai résolu mon problème en me servant quand même de ce que tu m'as dit... Puisque le problème vient du fait que je suis dans BPAADRESS, et puisque, finalement, l'info que je souhaite ajoutée peut être rattachée au client et pas à une de ses adresses, j'ai créé mon champs dans la table BPCUSTOMER et je l'ai ajouté dans l'écran BPC1. Et là, comme par miracle, ça fonctionne sans rien faire d'autre...

    Je suis un peu frustré de ne pas avoir réussi avec l'adresse, mais je ne peux pas y passer trop de temps.

    En tous cas, merci encore pour l'aide apportée !!

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur réponsable Sage X3
    Inscrit en
    Avril 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur réponsable Sage X3

    Informations forums :
    Inscription : Avril 2008
    Messages : 338
    Points : 427
    Points
    427
    Par défaut
    Oui c'est normal que dans BPCUSTOMER cela fonctionne.

    C'est un principe de transclasse, à savoir que la gestion objet fonctionne ainsi dans X3.

    Par contre, les tables et objets avec des tableaux fonctionnent différemment d'où le petit code spécifique.

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

Discussions similaires

  1. Comment déterminer les champs modifiés dans une base
    Par Casual dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2007, 08h33
  2. quelle est le type d'un champ image dans une base de MySQL
    Par aimad_maroc dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 11/04/2007, 10h15
  3. Sauver un champ RTF dans une base C/S
    Par LeGugusse dans le forum WinDev
    Réponses: 5
    Dernier message: 06/02/2007, 17h35
  4. est ce que un champs existe dans la base?
    Par cha_cha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 03/10/2005, 11h25
  5. Champs numériques dans une base de données à exporter
    Par ulukahio dans le forum Autres langages
    Réponses: 18
    Dernier message: 16/03/2005, 10h50

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