WinDev

Bonjour,

Dites, est-ce que quelqu'un sait comment enlever l'intégrité référentielle d'une liaison dans un mcd sous windev?

Merci,
@+
Yulie

Toi, Toi mon Toit...

75 réponses

Résumé de la discussion

La problématique centrale est de savoir comment enlever l'intégrité référentielle d'une liaison dans un MCD sous Windev et des difficultés liées à la gestion des contraintes d'intégrité. Des solutions essentielles indiquent d'utiliser la fonction HGèreIntégrité pour activer ou désactiver la gestion d'intégrité sur une liaison, en précisant le nom de la liaison et le fichier et en choisissant les contraintes à modifier. En cas de conversion de type entre numérique et chaîne, il peut être nécessaire d'ajuster les types de champs ou d'implémenter des conversions explicites, car cela peut empêcher l'application des contraintes. Des conseils pratiques recommandent aussi d'ouvrir les fichiers liés avant d'effectuer des opérations et d'explorer les options HyperFile plutôt que des requêtes externes.

Bobot (l’IA à votre service)
  1. Ah, ben je croyais qu'elle y était...
    Désolée...
    Maintenant c'est sûr,elle y est!!!
    :-D

    Pourquoi faire compliqué quand on peut faire simple...
    1. heu ben non, je ne vois rien.

      ta photo est pas mal, c'est un auto-portrait ?
      1. pas de soucis.
        mais bon si on conversait directement par email, se serait encore plus simple ne crois tu pas ? donc si tu as un email, envoie...
        1. Dans mon profil... il y a mon email normalement

          Pourquoi faire compliqué quand on peut faire simple...
      2. et s'il te plait ne craque pas !
        1. C'est promis...
          J'ai juste tendance à m'embrouiller un peu... (j'ai bien dormi pourtant cette fois-ci...)
          Enfin, bref, merci de ta patience envers moi, ça fait plaisir de voir que je ne suis pas seule au monde face à ce logiciel!!!
          :-)

          Pourquoi faire compliqué quand on peut faire simple...
      3. j'ai oublié une chose :
        EcranVersFichier() t'envoie les infos dans ton fichier,

        mais si tu veux importer des données du fichier vers ta fenetre, il faut utiliser la fonction inverse : FichierVersEcran()
        1. dans ton cas précis, il vaudrait mieux faire ton enregistrement directement par programmation. Je te donne un exemple :

          // Ajout d'un enregistrement dans un fichier (enregistrement décrit par programmation)
          Client.Nom = "Moulin"
          Client.Prenom = "François"
          Client.Adresse = "Impasse de la belle"
          Client.Ville = "Montpellier"
          Client.CodeP = "34000"
          Client.Pays = "France"
          HAjoute(Client)
          SI HErreurDoublon() ALORS
          Erreur("Ce client existe déjà !")
          FIN
          1. D'accord...
            Pour ça en tout cas...
            Mais en ce qui concerne le traitement en lui même:
            pour récupérer les infos que je rentre dans la fenêtre, il faut utiliser EcranVersFichier. Là je suis d'accord aussi, mais EcranVersFichier( ne me propose pas le fichier Service de ma BD, il me propose les tables et fiches que j'ai créées à partir du fichier Service (Table_Service et Fiche_Service).
            Or, je ne veux pas ouvrir ces tables et fiches (ce ne sont d'ailleurs pas elles qui sont ouvertes), je veux mettre les infos dans la BD.
            Est-ce que je dois ouvrir quand même la table Table_Service ou alors puis-je utiliser une fonction qui me permet de faire ce que je veux sans ouvrir cette table?

            Pourquoi faire compliqué quand on peut faire simple...
            1. bon, je crois qu'il y a un truc que tu n'as pas compris.
              Ouvre(...), ouvre une fenetre que tu as crée, et uniquement une fenetre.
              HOuvre(...), t'ouvre un fichier, c'est à dire une table. Il faut bien que tu fasses la différence, donc dans l'ordre :

              - ouverture de la fenetre avec Ouvre(..)
              - dans le code d'initialisation de ta fenetre, HOuvre(...) pour ouvrir ton fichier table
              - tu fais ton traitement ...
              - dans le code de fermeture de la fenetre, HFerme(...) pour fermer ton fichier table
              -fermeture de la fenetre avec Ferme(..)

              ok ?
              1. Alors à quoi ça sert d'ouvrir Service?
                Et pour ouvrir Fiche_Service, j'utilise Ouvre() ou HOuvre()?

                Pourquoi faire compliqué quand on peut faire simple...
                1. oui bien mangé merci, en fait resto avec mon patron : pizza calzone ...je craque !

                  bon revenons à nos moutons, oui chaque fichier lié à un champ de ta fenetre doit etre ouvert sinon comment veux-tu faire une opération sur le dit fichier ? et d'autant plus un enregistrement.
                  Windev ne peut même pas lire une info dans ton fichier si celui-ci est fermé.
                  1. Alors: voilà où j'en suis:
                    Dans mon initialisation de ma fenêtre j'ouvre le fichier Service.
                    Ensuite, dans le code d'un bouton (validation), je demande d'enregistrer en tapant EcranVersFichier(Table_Service).
                    Là, lorsque j'exécute, il y a un bug: Table_Service n'est pas ouvert (oui, normal, je ne l'ai pas ouvert... J'ai ouvert Service...)
                    Dois-je ouvrir aussi Table_Service?
                    Est-ce utile d'ouvrir Service?
                    Y a-t'il une étape que j'ai loupée?

                    Merci
                    J'espère que tu as bien mangé...

                    Pourquoi faire compliqué quand on peut faire simple...
                    1. Encore une petite question: j'ouvre mon fichier Service, et pour écrire dedans je tape EcranVersFichier( et là il ne me propose que les tables et les fiches...
                      Normal?

                      Pourquoi faire compliqué quand on peut faire simple...
                      1. oui c'est normal,

                        EcranVersFichier() te permet de transférer des infos que tu as saisies dans des champs liés à des tables, donc il te demande quelle table tu veux mettre à jour. C'est tout à fait normal.

                        Bon alors cela fonctionne maintenant ton ouverture de fichier ?
                        (je vais manger, je serais de retour vers 14h00, bon app)
                    2. Héhé !! ben non puce !
                      sache que les fonctions qui traitent les fichiers hyperfile commencent toutes par 'H', donc :

                      HOuvre(mon_fichier)
                      ou
                      HCreationSiInexistant(mon_fichier)
                      la seconde ouvre ton fichier s'il est existant, sinon elle le crée puis l'ouvre ensuite...
                      si je peux te donner un conseil, met un peu le nez dans l'aide de windev, il est tres bien fait...
                      mais si tu as besoin, pas de soucis je suis là...
                      1. mais dans le code d'initialisation de ta fenetre, tu ouvres ton fichier avec quelle fonction ? pas avec Ouvre(...) ?
                        1. Ben, si... Pourquoi, c'est pas cette fonction qu'il faut utiliser?
                          Peut-être que c'est fouvre?

                          Pourquoi faire compliqué quand on peut faire simple...
                      2. Eh bien j'ai essayé d'ouvrir le fichier en même temps que la fenêtre, celle-ci s'ouvre à l'aide d'un bouton sur une précédente fenêtre (oui, il y a plein de fenêtres dans mon projet...).
                        J'ai juste écrit:
                        Ouvre(Fiche_Service)
                        Ouvre(Ma_Fenêtre)

                        Ca va ou il t'en faut plus?
                        Merci...

                        Pourquoi faire compliqué quand on peut faire simple...
                        1. Bonjour!!
                          J'ai encore une question concernant windev (comme d'hab...)
                          En ce qui concerne EcranVers Fichier, il faut absolument que le fichier en question soit ouvert? c'est pas très pratique: ça veut dire qu'à chaque fois que je veux écrire dans ma base de données il faut que tous les fichiers concernés soient ouverts... C'est pareil pour utiliser une fenêtre depuis une autre: il faut que les 2 soient ouvertes...
                          N'y aurait-il pas une solution?

                          Merci,

                          Yulie

                          C'est un beau jour pour travailler...
                          1. Bonjour vous,

                            ben oui effectivement, si tu enregistres ou lis des données à partir d'une base ou d'un fichier, tu es obligé de l'ouvrir. Et ce, que ce soit avec des champs liés, ou par programmation.
                            Tu n'as pas le choix
                          2. @MarcusSnif... c'est triste...
                            Donc, il faut que j'ouvre le fichier que je veux, que j'enregistre dedans et après je le referme... Pas cool...
                            Remarque, je peux ouvrir mon fichier (ou ma fenêtre) sans qu'on la voit à l'écran, non? Ca au moins, ça serait plus beau et plus transparent à l'utilisateur...

                            Pourquoi faire compliqué quand on peut faire simple...
                          3. @yulieben tu n'as pas le choix. Mais il y a un truc que je comprends pas. Tu travailles avec une analyse, donc théoriquement, tu devrais ouvrir tes fichiers à l'ouverture de l'application et les fermer à la fermeture, sauf, si ton appli travaille en réseau genre client serveur, et encore, tu peux biaiser en utilisant HBloque(). Donc ma question, pourquoi t'ennuyer à les ouvrir et les fermer ?
                          4. @yulieEuh... Ben je ne sais pas...
                            Quand je teste mes fenêtres, les fichiers ne s'ouvrent pas...
                            Et puis de toute façon, cette base sera accessible par réseau...
                            Je suis perdue...
                            Tu sais, windev je suis pas une spécialiste... Mais là, ça s'embrouille de plus en plus...

                            Pourquoi faire compliqué quand on peut faire simple...
                          5. @yulieC'est normal dans le sens ou tes fichiers ne s'ouvrent pas tout seul.
                            Il faut les ouvrir par programmation.
                            Pourquoi n'ouvres tu pas ton fichier à l'ouverture de ta fenetre, cela te permet de pouvoir consulter des infos. Par contre, quand tu fais une modif dedans, utilise :
                            HBloqueFichier()
                            ou
                            HBloqueNumEnr()
                            et ensuite HDebloqueFichier(). Ce qui fait que le temps de la modif, personne ne pourra y toucher, mais on parle de millième de seconde donc cela n'est pas génant.
                        2. pas de prob.
                          Bonne soirée à toi, et pense à dormir la nuit, de temps en temps c utile, lol
                          1. EcranVersFichier() transfert tes infos si tu as des champs liés à une table sur ta fenêtre. Il faut ensuite faire un HAjoute("NomTable") et tes infos sont strockés dans ta table.

                            C pas tout simple ça ?
                            1. Si, ça a l'air... Je pense que j'aurais pu m'en rendre compte toute seule...
                              Désolée de t'avoir dérangé pour ça, je suis un peu fatiguée aujourd'hui...
                              :-))

                              Bonne fin de journée!!

                              Yulie

                              Pourquoi faire compliqué quand on peut faire simple...
                          2. Bonjour!!!

                            Je voulais savoir: (encore une question idiote...) pour enregistrer des données que j'écris dans une fenêtre et les mettre dans ma base de données, faut-il que je crée une nouvelle table, ou quelque chose comme ça?

                            Merci d'avance,

                            Yulie

                            Pourquoi faire compliqué quand on peut faire simple...
                            1. Bonjour toi,

                              je ne comprends pas bien ta question, mais d'une façon generale, non tu n'as pas besoin de créer une nouvelle table si tu en a déjà une existante.
                              Maintenant si ta fiche est reliée à une table, tu peux utiliser la fonction EcranVersFichier(), exemple :

                              EcranVersFichier()
                              HAjoute(Prix)
                              SI HErreurDoublon() ALORS
                              Erreur("Ce prix existe déjà !")
                              FIN

                              si je n'ai pas tout compris explique moi un peu mieux
                            2. EcranVersFichier permet de sauvegarder les infos qu'on rentre dans sa fenêtre?

                              Pourquoi faire compliqué quand on peut faire simple...
                          3. Salut,
                            regarde la fonction ListeAjoute, ensuite il suffit d'adapter le OnChange de la combo.

                            Kalamit,
                            Vol au dessus d'un nid de Pika-baffe. :)
                            • 1
                            • 2
                            • 3
                            • 4