Valeur vide d'un attribut d'une entité prealablement créée

Product :4D - 4D Server
4D : v17 R2
OS : Windows

Bonjour,

J’ai un problème que je peux résoudre mais je trouve la façon de faire assez laborieuse, je suis peut-être passée à côté de quelque chose, ou alors c’est étrange que 4D n’ait pas géré le truc, je vous explique.
exemple :
J’ai une listbox qui affiche tous les enregistrements d’une table : Form.fruits
source de données de ma listebox :
Élément courant : Form.fruitSel
Éléments sélectionnés : Form.fruitsSel

méthode formulaire sur l’event on load pour charger tous les enregistrements
Form.fruits:=ds.Fruit.all()

Quand j’édite un de ces enregistrements j’ouvre une boîte de dialogue avec sa liste d’attributs à éditer.
$win:=Open form window([Fruit];“Saisie”;Movable form dialog box)
DIALOG([Fruit];“Saisie”;Form.fruitSel)

Le champ par exemple couleur s’efface quand je perds le focus,_ parce que_ Form.couleur vaut NULL (Form étant mon entité sélectionnée).

Ceci vaut pour les enregistrements importés dans ma base, je n’ai pas ce problème pour les nouveaux enregistrements pour lesquels je passe par une nouvelle méthode d’ajout, et dans laquelle_ j’assigne toutes mes valeurs une fois la création de mon entité._
ex sur l’event clic de mon bouton ajouter :
Form.fruit:=ds.Fruit.new()
Form.fruit.couleur:= “”

si j’édite ce fruit ajouté, comme j’ai assigné la valeur vide je pourrai l’éditer sans soucis.

Voici les solutions si 4D n’a pas géré ce cas (dans une future version ?):

  • dans la structure, cocher les champs “traduire les NULL en valeurs vides”, y’a peut-être une option dans les paramètres de la base putôt que de le faire pour chacun des champs (surtout quand on a une structure avec de nombreuses tables…)
    Mais quand je développe dans d’autres langages objet une valeur VIDE n’a rien à voir avec un objet pas encore défini, j’ai trouvé étrange de pouvoir appliquer ce genre de truc a une entité, m’enfin…
  • a l’édition si un de mes attributs vaut vides je le redéfinis à “” , mais c’est aussi laborieux, surtout si on doit faire ça pour bcp de champs.

Quelqu’un a t’il rencontré ce problème ? Merci :pray:

: Manon CHAUVIN
  • dans la structure, cocher les champs “traduire les NULL en valeurs
    vides”, y’a peut-être une option dans les paramètres de la base putôt
    que de le faire pour chacun des champs (surtout quand on a une
    structure avec de nombreuses tables…)
    Bonsoir Manon,
    autrefois 4D ne gérait pas la valeur Null (le champ jamais valorisé). Je pense que c’est une “surcouche” qui a été ajoutée en v11 pour être “conforme SQL”. Toujours est-il que j’ai bossé sur une base où tous les champs était avec cette valeur non cochée, c’est la panade assurée :
    <code 4D>
    chercher([maTable];[maTable]maDate=!00/00/00!)
    $a:=enregistrements trouves([maTable])
    chercher([maTable];[maTable]maDate=!00/00/00!)
    $b:=enregistrements trouves([maTable])
    </code 4D>
    avec le champ Null=valeur vide décoché, $a+$b ne donneront pas le nombre d’enregistrement dans la table. Donc, en ce qui me concerne, je coche toujours cette case, considérant que je fais du 4D avant de faire du SQL.

Pour ce qui est de cocher, ça se fait assez vite : sélectionner tous les champs de la table, cocher ; table suivante idem ; etc.

: Arnaud DE MONTARD

Pour ce qui est de cocher, ça se fait assez vite
PS : et pour savoir qui n’est pas coché dans le fatras (pardon, la structure), j’ai utilisé http://forums.4d.com/Post/FR/24944477/1/26339147#26339147ça>.

Bonjour Arnaud,
j’avais lu ton message il y a un moment maintenant, merci pour ces réponses.
Pour le moment j’ai laissé décoché et j’initialise mes variables au moment de l’ajout d’un nouvel enregistrement dans mes listbox, mais c’est bon à savoir.
J’ai un autre soucis maintenant, je m’en vais poster un nouveau message :slight_smile:
Bonne journée,