|
Accueil → WINDEV 2024 → [MODE débutant = ON] HFSQL et enregistrement avec liaison complexe |
[MODE débutant = ON] HFSQL et enregistrement avec liaison complexe |
Débuté par Ramirez22, 03 sep. 2017 11:30 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 60 messages |
|
Posté le 03 septembre 2017 - 11:30 |
Bonjour.
Petite présentation rapide : quelques connaissances dans la programmation de manière générale, je souhaite apprendre WinDev pour raisons professionnelles. Or, je ne connais pas ce langage et j'ai une expérience assez limitée sur les bases de données. J'ai les pieds sur terre, je sais que je ne deviendrai pas un programmateur expert en un weekend, et ma question va sans doute vous sembler naïve. De par ma faible expérience, je vous supplie de bien vouloir me répondre avec un langage compréhensible SVP
Mon application possède 2 fichiers avec liaison complexe :Fichier_document et Fichier_type. Un Document doit avoir un Type (ou plusieurs), et chaque type peut avoir (ou pas) un Document. Bref : Fichier de liaison complexe.
La question que je me pose est la suivante : comment enregistrer un nouveau Document en cliquant sur un bouton ? Existe t'il une fonction pour gérer le fichier de liaison ou dois-je le faire à la main ? Et dans ce cas, comme s'y prendre : - je peux commencer par faire un hAjoute sur le fichier Document, mais il me faut l'ID du nouvel enregistrement du fichier de liaison - je peux commencer par faire un hAjoute sur le fichier de liaison, mais il me faut l'ID du nouvel enregistrement du fichier Document. Bref, on se mord la queue A moins qu'il ne faille faire un hAjoute sur un fichier, puis sur l'autre et enfin modifier les enregistrements dès que je connais les ID : pas très optimum (il suffit qu'un autre enregistrement arrive à ce moment et c'est le boxon).
Voilà, j'espère avoir été assez clair. Désolé encore si cette question vous semble vraiment c***e, mais j'ai cherché et pas trouvé.
Merci aux bonnes âmes pouvant me guider dans les dédales de ce nouveau langage (du moins, pour moi).
Cordialement,
Ramirez22 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 094 messages |
|
Posté le 03 septembre 2017 - 13:32 |
Bonjour,
Les Types sont supposés connus en préalable. Il faut donc une fenêtre pour les enregistrer (table). Il faut ensuite une fenêtre pour enregistrer les Documents (fiche).
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
Posté le 03 septembre 2017 - 18:50 |
Bonjour Jean-Pierre et merci de ton aide.
En effet, les types sont connus au départ. Toute la partie de saisie des types est OK (fenêtre, Table etc...)
Mais je me suis rendu compte d'une erreur d'interprétation de ma part. En effet, je disais " je peux commencer par faire un hAjoute sur le fichier Document, mais il me faut l'ID du nouvel enregistrement du fichier de liaison"
Ce qui est faux et je viens de m'en rendre compte. Il n'y a pas besoin de l'ID du nouvel enregistrement du fichier de liaison.
De plus, j'ai trouvé dans les exemples (projet CRM) la réponse mes questions. Pour ceux qui arrivent sur ce post et qui se posent la même question, voici ce que j'ai fais:
- Création d'une liaison pour tous les champs de la fenêtre comportant des valeurs à enregistrer dans le FichierDocument - Au clic du bouton :
EcranVersFichier(FEN_NouveauPlan,FichierDocuments) HAjoute(FichierDocuments) - Puis récupération du dernier ID Document
nDernierPlan = FichierDocuments.ID_Documents - Et enfin, construction des enregistrement à mettre dans le fichier de liaison (issus d'une liste dans la fenêtre de saisie)
POUR TOUTE LIGNE SELECTIONNEE de LISTE_TableType Fichier_Type_Documents.ID_Type = LISTE_TableType..ValeurMémorisée Fichier_Type_Documents.ID_Documents = nDernierPlan HAjoute(Fichier_Type_Documents) FIN
Et voilà ! Ca marche maintenant.
Merci!Message modifié, 03 septembre 2017 - 18:50 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 139 messages |
|
Posté le 03 septembre 2017 - 18:55 |
Avant toute chose, la relation dont tu parle n'est pas complexe, c'est la base d'un SGBD relationnel tel HFSQL. Avant toute chose il faut lire la doc et suivi l'autoformation fournie.
[MODE AUTOFLAGELLATION] Mais nous sommes de bons français et la première chose que l'on jette après un achat, c'est la doc, sauf éventuellement lorsque l'on y a agrafé le bon de garantie. [/MODE AUTOFLAGELLATION]
Un autre livre de chevet à posséder c'est le GARDARIN sobrement intitulé "Les bases de données" ISBN 2-212-11281-5 chez Eyrolles, THE bible au niveau des SGBDR, dont voici un lien pour la version en ligne : http://georges.gardarin.free.fr/Livre_BD_Contenu/XX-TotalBD.pdf
Après ces lectures, tu verras que l'analyse correspondant à ton problème est de ce style :
Tu verras alors que le serpent ne se mord pas la queue. Tu peux alors ajouter tes TYPES des document sans problèmes via HAjoute, ils n'ont pas besoins de l'ID de document. Lors de la création d'un DOCUMENT via HAjoute, il suffit de passer l'ID du TYPE comme valeur de FK_IDTYPE (FK pour Forein Key.) C'est grâce à cette clé étrangère que tout se met en place.
Concernant les enregistrement qui peuvent se percuter, dans 99,99% c'est le système de gestion (SG de SGBD) qui, sauf ordre contraire (le 0,01%) qui s'en charge. Et dans ce 0,01% c'est quand même toi qui lui dit quoi faire.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 60 messages |
|
Posté le 03 septembre 2017 - 21:40 |
Primo, merci beaucoup pour ton intervention.
Deuzio, même pas jeté la doc, d'abord ! Juste posée délicatement sur le rebord de la poubelle, pas ma faute si elle est tombée dedans ... Nannn, blague à part, j'ai suivi (pas tous évidemment) les cours, et c'est vrai que c'est utile, mais on passe à côté de beaucoup (beaucoup, beaucoup ... ) de choses. Quand à l'aide, je la trouve assez fouillis (mais bon, il y en a une, on va pas se plaindre )
Troizio, merci tout plein pour ce lien vers ce bouquin. S'il ne m'endort pas, il devrait être bien utile
Quatrizio (ça ce dit pas mais moi si !) Je pense que tu n'a pas compris la relation entre mes bases, mais bon, pour être plus précis, je n'ai pas été très clair non plus . Comme j'ai vu qu'on pouvais mettre des petites images, voici mon application :
Chaque enregistrement de FichierDocument doit avoir au moins un FichierType, mais il peut en avoir plusieurs. D'ou la nécessité d'un fichier de liaison (ou alors j'ai vraiment rien compris aux bases de données et je retourne sous Excel... ).
Merci encore pour ces infos/bouquin/aide, je ne manquerai pas de re-polluer ce forum de mes questions de Newbie Pour l'instant, dodo.
Bonne soirée à tous. |
| |
| |
| | | |
|
| | |
| |
Posté le 05 septembre 2017 - 17:02 |
Bonjour,
Sans ce fichier il est impossible de faire ce type de relation
HRAZ(FichierType) FichierType.TypeDocument = "Facture" HAjoute(FichierType)
HRAZ(FichierType) FichierType.TypeDocument = "Devis" HAjoute(FichierType)
HRAZ(FichierType) FichierType.TypeDocument = "Important" HAjoute(FichierType)
HRAZ(FichierDocument) FichierDocument.titre = "Devis 101" HAjoute(FichierDocument)
HLitRecherchePremier(FichierType,TypeDocument,"Devis") HRAZ(fichier_Type_Documents) fichier_Type_Documents.ID_Document = FichierDocument.ID_Document fichier_Type_Documents.ID_Type = FichierType.ID_Type HAjoute(fichier_Type_Documents)
HRAZ(FichierDocument) FichierDocument.titre = "Facture 20170101" HAjoute(FichierDocument)
HLitRecherchePremier(FichierType,TypeDocument,"Facture") HRAZ(fichier_Type_Documents) fichier_Type_Documents.ID_Document = FichierDocument.ID_Document fichier_Type_Documents.ID_Type = FichierType.ID_Type HAjoute(fichier_Type_Documents)
HLitRecherchePremier(FichierType,TypeDocument,"Important") HRAZ(fichier_Type_Documents) fichier_Type_Documents.ID_Document = FichierDocument.ID_Document fichier_Type_Documents.ID_Type = FichierType.ID_Type HAjoute(fichier_Type_Documents)
|
| |
| |
| | | |
|
| | | | |
| | |
|