|
| Ajout d'une ligne dans table |
| Iniciado por GB, 06,sep. 2020 15:49 - 6 respuestas |
| |
| | | |
|
| |
Miembro registrado 371 mensajes |
|
| Publicado el 06,septiembre 2020 - 15:49 |
Bonjour,
J'ai une table fichier chargée en mémoire (pas de saisie en cascade) dans laquelle j'ajoute une ligne avec la fonction tableajouteligne
Ma table contient des colonnes liées à une partie des champs de mon fichier (mon fichier a 44 champs, ma table a 30 colonnes).
Lors du tableajouteligne puis tableenregistre, seuls les champs liés à ma table sont réinitialisés. Les autres champs gardent la valeur de l'enregistrement précédent !!!
est ce un bug de windev ? quel est l’intérêt puisque je dois du coup ajouter les champs manquants dans ma table et les masquer, afin qu'ils soient initialisés correctement.
un hraz(mon fichier) doit il être placé entre le tableajouteligne et le premier tableenregistre pour pouvoir avoir les champs vide ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 06,septiembre 2020 - 16:27 |
GB,
La description de la fonction HEnregistre donne une partie de la réponse à ta question. https://doc.pcsoft.fr/fr-FR/?1000021375
Modifie l'enregistrement courant s'il existe, sinon ajoute un nouvel enregistrement. On parle ici de l'enregistrement en mémoire.
Ensuite, il faut comprendre ce que tu fais pour la "clé" de l'enregistrement, ce qui le distingue des autres. Si tu ne modifies pas la clé, alors tu "modifies" l'enregistrement en cours.
HRAZ force en quelque sorte la réinitialisation de la clé.
Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 06,septiembre 2020 - 19:09 |
Lorsque tu fais un tableajouteligne tu ajoute une ligne vierge, donc dans mon cas, la clé est bien vierge dans la table.
Lorsque je fais le tableenregistre, je suis positionné sur la nouvelle ligne de table, celle ci est bien crée dans le fichier, avec une nouvelle clé, et les données que j'ai pu ajouter dans la table (en saisie ou programmation).
C'est quand meme curieux que lorsqu'une table contient partiellement les champs d'un fichier, qu'il faille bricoler l'enregistrement en mémoire pour que le nouvel enregistrement dans le fichier soit réellement totalement mis a 0. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 06,septiembre 2020 - 20:36 |
GB,
Ton champ table contient 30 des 44 rubriques de de l'enregistrement du fichier de données. Serais-tu à dire que Windev devrait décider que faire des 14 autres rubriques ?
Peut-être me diras-tu que tu aimerais qu'il les réinitialise et je peux comprendre ta logique. Peut-être te dirai-je que je préfère qu'il conserve les valeurs actuelles. Un autre te dira...
Bref, il y en a pour tous les besoins.

Personnellement, je n'ai pas de difficulté à accepter la logique de Windev. 1) Il y a le champ table (ou les champs de saisie) de la fenêtre 2) Il y a l'enregistrement en mémoire 3) Il y a un lien entre les colonnes/champs de la fenêtre et les rubriques de l'enregistrement en mémoire 4) Il y a un lien entre l'enregistrement en mémoire et le fichier de données
Tu veux ajouter un nouvel enregistrement qui soit "aux valeurs par défaut" ? Alors utilise HRAZ.
Tu veux modifier l'enregistrement existant ? Tu modifies celles de tes 44 rubriques qui doivent être modifiées. Sans modifier la clé...
Tu veux créer une copie de l'enregistrement en cours ? Tu modifies celles de tes 44 rubriques qui doivent être modifiées. En modifiant la clé...
Bref, la logique est flexible.
-------------------------------------------------- Personnellement, je crois que HEnregistre est une "paresse" de logique. Après tout, je devrais être en contrôle du cheminement.
Je lui préfère HAjoute et HModifie. - Erreur sur HModifie si la clé n'existe pas. - Erreur sur HAjoute si la clé existe déjà.
-------------------------------------------------- Selon ma méthode de fonctionnement le champ table affiche la liste des enregistrements Suivant ton exemple, 30 des 44 rubriques
1) Double-clic sur une lignes existante ouvre un onglet avec toutes les rubriques renseignées 2) L'utilisateur fait ses modifications 3) HModifie pour la sauvegarde
1) Double-clic sur une ligne vide ouvre un onglet avec les rubriques à blanc (HRAZ) 2) L'utilisateur fait son ajout 3) HAjoute pour la sauvegarde
Avec les validations appropriées dans les deux cas...
-------------------------------------------------- HEnregistre, HAjoute, HModifie, HSupprime. Dans tous les cas, l'enregistrement en mémoire prévaut.
-------------------------------------------------- Finalement, il y a les gestions des erreurs. Gestion des doublons, de l'intégrité, etc.
Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 06,septiembre 2020 - 22:33 |
Je te rejoins tout a fait sur la gestion des modifications et des ajouts, et l'importance d'avoir un retour d'information sur ce qui peut poser probleme. J'ai maintenant compris la logique du fonctionnement d'un champ table : Met à blanc que les champs associés dans le champs table lors d'un ajout.
Dans mon cas je réalise une copie d'une ligne de table qui présente les 30 champs, car les 14 autres ne sont pas nécessaires dans cette table.
Dans le cas présent cela me génère des erreurs de donnée puisque mon nouvel enregistrement possédera tous les champs identiques a l'enregistrement copié, hors l’intérêt était de copier uniquement les champs présents dans la table (pas ceux présent aussi en mémoire).
Bref, le diable se cache dans les détails  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.365 mensajes |
|
| Publicado el 06,septiembre 2020 - 22:44 |
Bonjour, GB a écrit :
Dans mon cas je réalise une copie d'une ligne de table qui présente les 30 champs, car les 14 autres ne sont pas nécessaires dans cette table.
Pourquoi les y inclure dans ce cas ?
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 371 mensajes |
|
| Publicado el 06,septiembre 2020 - 23:49 |
Je les ai inclu pour que les ajouts dans mes tables soient bien initialisés avec les valeurs a 0. Et puis si je dois modifier les valeurs je le fais au sein de la table, m evitant ainsi de manipuler le fichier (du moins l enregistrement en memoire).
A vrai dire j ai plutot agis en systeme D ... |
| |
| |
| | | |
|
| | | | |
| | |
|