Bonjour,
J'ai un projet de CRM déjà bien avancé. Le problème de ce projet, c'est que le code métier et UI n'ont pas été séparés. J'aimerais donc séparer les codes en utilisant une architecture type 3-tiers avec des structures et procédures. Je ne maitrise pas encore les classes et la POO pour programmer en objet donc je ne souhaite pas m'aventurer dans de la POO surtout que le projet est déjà avancé, même si apparemment c'est le mieux à faire.
De ce fait, j'aurais besoin d'aide sur certains points qui me bloquent. J'ai bien compris le principe théorique de l'architecture 3 tiers, mais j'ai un peu de mal sur certains points pour l'appliquer dans Windev. Voici mes questions :
Q1) Dois-je créer une collection de procédure pour CHAQUE table de l'analyse et CHAQUE requête avec la structure et le mapping correspondant ? Exemple Table Contact => créer une collection COL_Contact et une structure globale STCOL_Contact mappé sur ma table Contact ? Pareil pour ma table Société, Civilité, mes requêtes fichiers etc ?
Q2) Pour une table possédant des clés étrangères. Comment les modéliser dans ma structure ?
Exemple : Table contact (IDcontact, nom, prénom, IDsociete (clé étrangère de la table Société))
Dois-je écrire pour ma Structure STCOL_Contact :OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part IDsociete est un entier? J'ai essayer de générer automatiquement mes procédures globales avec mes structures via windev "Modélisation UML > Générer code" et les clés étrangères dans mes structures ont été défini de la façon suivante : refIDsociete est STCOL_Societe dynamique pour reprendre l'exemple ci-dessus. Cependant, quand je fais un fichierversmemoire(), l'IDsociete ne se remplie donc pas automatiquement. Donc dois-je écrire IDCléEtrangères est un entier dans ma structure pour mes clés étrangères ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part refIDsociete est STCOL_Societe dynamique
Q3) Pour initialiser une variable tableau de structure STCOL_Contact (ID, Nom, Prénom ...) , dois-je utiliserou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part tabContact est un tableau de STCOL_Contact? Et que permet le "Dynamique" dans ce cas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part tabContact est un tableau de STCOL_Contact DYNAMIQUE
Q4) Lorsque j'initialise dans ma fenêtre ma table contact remplie par variable via databinding (sur ma variable tabContact donc), si j'ajoute ou modifie un élément de la table contact, dois-je rafraîchir simplement la table via TableAffiche() ou réexécuter la requête sur la BDD qui me permet de remplir ma variable tabContact et ensuite d'afficher de nouveau ? (Car si je rafraîchi uniquement ma table mémoire via tableaffiche(), les ajouts/modification/suppression entre temps des autres utilisateurs ne seront donc pas visibles sauf si je ferme puis reouvre la fenêtre, est-ce un fonctionnement normal ou faut-il rafraîchir toutes les données à partir de la BDD?)
Q5) Lorsque je veux modifier une ligne de ma table contact, je souhaite ouvrir une fenêtre pour modifier ma ligne (FEN_GestionContact). Je suppose qu'il faut que je fasse quelque chose de ce type :
Mais une fois dans ma FEN_GestionContact qui me permet de modifier ma ligne, dois-je faire une recherche sur la BDD à l'initialisation via le paramètre pstContactCourant.IDcontact afin de remplir les champs du contact à modifier ? (Dans le cas où ce contact aurait été modifié entre temps par un autre utilisateur). Ou j'affecte simplement mes champs par databinding via ma variable pstContactCourant passée dans la fenêtre, mais qui n'est donc peut-être plus à jour entre temps ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 pstContactCourant est un STCOL_Contact dynamique pstContactCourant = TABLE_Contact pstContactCourant = Ouvre(FEN_GestionContact,pstContactCourant ) TableAffiche(TABLE_Contact,taCourantBandeau)
J'ai un peu de mal à saisir quand est-ce que je dois réutiliser la couche données pour mettre à jour mes variables structures.
Q6) Dans le cas de suppression d'un contact dans ma table TABLE_Contact, est-il possible de supprimer à la fois l'élément dans la table TABLE_Contact ET dans la variable tableau tabContact (lié à la table pour le databinding) ? Car si je fais un TableSupprimeSelect(), l'élément disparaît bien de ma table TABLE_Contact, mais est toujours présent dans mon tableau tabContact. Donc si je fais de nouveau un TableAffiche(), il réapparaît dans la table TABLE_Contact.
Si certains d'entre-vous auraient des réponses à m'apporter sur les points ci-dessus afin de m'aider à y voir plus claire et me permettre d'avancer, ça serait sympa car là je bloque...
Merci d'avance,
Bonne soirée,
Esteban
Partager