POO suppression dans une table
Bonjour .. et joyeux Noël :D
J'en suis toujours à me prendre la tête avec la POO et Windev, j'ai assez bien appréhendé sur sur des modèles simples : clients / produiuts / etc...
Je bloque par contre sur l'utilisation d'une fenêtre facture + lignes de factures
Pour l'affichage d'une facture (sur une base existante) , par de soucis :
- récupération de la facture
- récupération de ses lignes liées par l'ID de la facture
Dan la fenêtre j'ai une table TABLE_LignesFactures liée à mon tableau d'objet gclFactures_Lignes, la valeur de retour est l'élément courant.
le (les !) soucis :
- pour ajouter ou supprimer une ligne dans le tableau en mode "saisie en cascade". Dans la doc on peut lire
Citation:
Cas 2. Ajout d'un élément dans le champ Table (Saisie en cascade)
Pour gérer la saisie en cascade, les ajouts doivent être réalisés par programmation dans la source.
Il est conseillé de*:
Faire les ajouts au fur et à mesure dans le code de sortie de ligne.
Utiliser la fonction TableAffiche (avec la constante taInit) pour mettre à jour les "liaisons" entre les lignes du champ Table et les éléments de la source.
J'ai créer ce code en sortie de ligne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| clLigne est un MFactures_Lignes
// -- si c'est une nouvelle entrée manuellement = pas d'ID en provenance de la BDD --
SI COL_LIGNFAC_ID = "" ALORS
clLigne.m_sLIGNFAC_Produit = COL_LIGNFAC_Produit
clLigne.m_nLIGNFAC_Quantite = COL_LIGNFAC_Quantite
clLigne.m_moLIGNFAC_Prix = COL_LIGNFAC_Prix
clLigne.m_rLIGNFAC_Remise = COL_LIGNFAC_Remise
clLigne.m_rLIGNFAC_TauxTVA = COL_LIGNFAC_TauxTVA
TableauAjoute(gtabClLignesFacture,clLigne)
TableAffiche(TABLE_Lignes_Facture, taInit)
FIN |
Jusque là ... tout juste ?
J'ai bien une nouvelle entrée dans mon tableau d'objets, si je liste les objets, j'ai bien le nouvel objet dans mon tableau et je fais des modification manuelle dans la table celles-ci sont bien reportées dans mes objets.
Par contre pour supprimer ... je tourne en rond
Selon la doc :
Citation:
Cas 2. Suppression d'un élément à partir de son indice dans le champ Table
Il faut supprimer manuellement l'élément dans le champ Table et dans la source.
La fonction TableCherche permet de retrouver l'indice dans la source correspondant à l'élément supprimé dans le champ Table.
Mon problème est que, pour les lignes existantes j'ai bien un ID unique : le m_nLIGNFAC_Facture issu de la clé de ma BDD, mais pas pour les ajouts pas encore enregistrés et il est possible d'avoir deux lignes identiques.
Pour le faire il faudrait que je puisse "dire" a Windev de supprimer l'élément courant, celui retourné par la ligne sélectionnée dans ma table...
Du moment que la table me renvoie le Tableau[x] ... comment connaitre x pour faire un TableauSupprime(gtabClLignesFacture, x) ?
je suis certain de passer a côté d'un truc simple ...