IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Recherche sur Clé Composée [WD17]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut Recherche sur Clé Composée
    Bonjour,

    Je suis confronté à un problème de recherche sur une clé composée. Je recherche à filtrer 2 paramètres Numéro de Commercial et Numéro de Devis pour ne pas saisir 2 fois le même numéro de devis en fonction du numéro de commercial. J'ai écrit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    HConstruitValClé(Devis,NumComNumDevis,Devis.NumCommercial, Devis.NumDevisCom)
    HLitRecherchePremier(Devis, NumComNumDevis, Devis.NumComNumDevis)
     
    	TANTQUE HEnDehors(Devis)
    		SI HTrouve(Devis) = Vrai ALORS
    		Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    		RepriseSaisie(SAI_NumDevisCom)
    		SINON
                    .... (Traitement d'enregistrement)
                   FIN
    HLitSuivant(Devis,NumComNumDevis)
    FIN
    Cela me provoque un enregistrement en boucle et me remplit le fichier "Devis.FIC". Quelle paramètre ai-je oublié ou qu'elle erreur ai-je faite ?
    Merci par avance pour votre aide, cela fait 3 jours que je bute là-dessus et ne sais plus par quel bout l'attraper.

  2. #2
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    997
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 997
    Points : 2 520
    Points
    2 520
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TANTQUE HEnDehors(Devis) // Non !
    SI HTrouve(Devis) = Vrai ALORS //Devrait suffire

  3. #3
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton aide,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TANTQUE hendehors //Non vaut TANTQUE Hendehors=Faux ???
    J'ai déjà essayer avec = Faux, cela n'enregistre pas et sort directement de la boucle...

  4. #4
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    997
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 997
    Points : 2 520
    Points
    2 520
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI HTrouve(Devis) = Vrai ALORS
        Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
       RepriseSaisie(SAI_NumDevisCom)
    SINON
       .... (Traitement d'enregistrement)
    FIN

  5. #5
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    J'ai cru comprendre après coup que tu me disais de supprimer la boucle TANTQUE,
    Cela fait, il enregistre les doublons. Je me demandais si cela ne venait pas de la déclaration de la clé composée.
    J'ai fais cette modif pour ajouter un filtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sCleComp est une chaîne
    sCleComp = HConstruitValClé(Devis,NumComNumDevis,Devis.NumCommercial, Devis.NumDevisCom)
    HFiltre(Devis,NumComNumDevis,sCleComp)
    HLitRecherchePremier(Devis, NumComNumDevis, Devis.NumComNumDevis)
     
    	Tantque hendehors(Devis)
    		SI HTrouve(Devis) = Vrai ALORS
    		Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    		RepriseSaisie(SAI_NumDevisCom)
    		SINON
    		Trace(Devis.NumComNumDevis)
    Le trace me sort: L mais le résultat est le même: remplissage de "Devis.FIC"

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par Mophus Voir le message
    Je suis confronté à un problème de recherche sur une clé composée. Je recherche à filtrer 2 paramètres Numéro de Commercial et Numéro de Devis pour ne pas saisir 2 fois le même numéro de devis en fonction du numéro de commercial. J'ai écrit le code suivant:
    Bonsoir,

    Est-ce que le problème ne trouve pas sa source dans votre conception ?
    A vous lire, vous attribuez arbitrairement les numéros de devis, avec le risque potentiel d'un doublon, que vous ne gérez d'ailleurs que pour le même commercial.
    Cela laisse d'autres portes ouvertes : quid par exemple si un dossier ou un client est réaffecté à un autre commercial, qui a déjà un devis avec ce même code ?
    Etc ...
    Ce n'est pas la peine de répondre à mon objection, il y en aura d'autres auxquelles nous ne penserons pas.
    Retournez cela dans tous les sens que vous voudrez, la réalité se chargera de vous le rappeler douloureusement un jour ou l'autre, probablement quand vous serez passé à autre chose.

    Il faut utiliser un identifiant automatique, un point c'est tout.
    Et si votre numéro de devis est un fait un code plus ou moins signifiant, rien ne vous empêche de continuer à l'utiliser, sachant qu'il ne sera dorénavant plus qu'un index renvoyant à un Id automatique.

    Bon travail,

    Hemgé

  7. #7
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Les commerciaux ont chacun la gestion d'une région, liée au NumCommercial. Donc chaque commercial peut avoir le même numéro de devis étant des agents en freelance répartis par secteur.
    Ce n'est pas un problème si je trie à partir du NumCommercial, seulement je veux éviter deux fois la saisie du même numéro de devis pour un même commercial. La personne devant saisir le retour des devis (ou des commandes) n'est pas à l'abri d'une erreur.
    J'ai pensé à mettre la clé composée en "Clé unique, cela marche mais n'est pas très "propre" comme retour de doublon.
    Merci pour ton aide, je vais continuer à chercher une solution. Si je ne trouve pas je reviendrai à la solution "Clé unique".
    Il n'est pas interdit de me tutoyer, j'ai cru comprendre que cela se pratiquait sur ce site.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Une clé unique permet de poser une contrainte d'unicité sur une table. On parle donc ici d'une contrainte qui permet de s'assurer de l'intégrité de la base.
    Une application ne doit pas s'appuyer sur ces contraintes pour son fonctionnement. Il ne s'agit que d'un garde-fou, pour palier à un bug dans l'application.

    Ici le plus simple (à mon avis) est de chercher le dernier numéro, en fonction de critère que tu choisi, puis de l'incrémenter.
    Et tu as deux solutions:
    1. Une requête qui envoie le dernier numéro, en tapant directement dans la table
    2. Une table de compteur

    Les deux solutions ont chacune des avantages et inconvénients (vitesse, simplicité, accès concurrents...), à toi de voir ce qui te semble le plus adéquat avec ton application.

    Mais c'est toujours mieux que de boucler sur la table, ou de s'appuyer sur une contrainte d'unicité.

    Tatayo.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton aide,
    Ce n'est pas une table mais une combo (Région = NumCommercial) et d'un champ de saisie (Saisie numéro de devis = NumDevis)
    Ma clé composée est NumComNumDevis, en mettant un point d'arrêt sur le traitement La clé composée m'affiche <1>,<0>,<0>,<0>,<2015/01>
    <1> = Numéro du premier Commercial
    <2015/01> = Numéro de Devis
    Je ne sais pas d'où viennent les 3 <0>
    Cela me fait penser à une erreur de déclaration de la clé dans l'analyse, mais je ne vois pas laquelle.

    Code de déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HConstruitValClé(Devis, NumComNumDevis,Devis.NumCommercial, Devis.NumDevisCom)
    HLitRecherchePremier(Devis, NumComNumDevis, Devis.NumComNumDevis)
    J'ai essayé HLitRechercheDernier le fichier "Devis.FIC" se rempli de la même manière.
    Encore merci

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 049
    Points : 9 384
    Points
    9 384
    Par défaut
    Il faut déclarer la clé-composée comme clé unique.
    Tatayo dit que c'est comme un garde-fou. Oui, si on veut.

    Tu dis que la fenêtre 'système' est moche , et donc tu ne veux pas de contrôle d'unicité sur la base de données.
    Ok. Mais je te rappelle que cette fenêtre moche s'affiche parce que tu étais sur le point d'insérer de la daube dans ta base de données. La fenêtre moche ne se déclenche que quand on passe par un bug dans la conception du programme. Donc jamais si tu bosses correctement.

    La clé unique, c'est un peu comme l'air-bag dans une voiture. L'air-bag n'est pas très esthétique, mais en principe, il se déclenche uniquement quand tous les autres moyens ont failli. Là, tu es en train de dire que tu es très sûr de ta conduite, et donc tu démontes les air-bags.


    Dernier gadget qui peut être utile dans ton cas : la gestion des exceptions : tu peux remplacer la fenêtre moche par une procédure de ta conception, mais dans un premier temps, je ne suis pas totalement sûr que ce soit une bonne idée pour toi.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Pour la clé composée, le résultat retourné ne devrait-il pas être <1>,2015/01
    Je continu à croire que le problème vient de la construction de la clé en <1>,<0>,<0>,<0>,2015/01.
    Effectivement cela marche avec une clé unique, mais je continu à penser qu'il y a un moyen de la contourner.
    J'entends bien tout ce que vous me dite, c'est le bon sens même, mais je ne serai pas celui qui saisira les données et une info est préférable à toutes les manip. qu'engendre la détection d'une clé unique.
    Même si cela n'arrivera qu'une fois sur ...
    Merci de m'aider dans ce sens.

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Puisque vous voulez faire l’impasse et vous en tenir à votre code, …

    Premier point, vous devriez lire et essayer de comprendre la doc, en faisant le nombre d’exercices suffisants pour être sûr de vous.
    Quand je lis
    Citation Envoyé par Mophus Voir le message
    Merci pour ton aide,
    TANTQUE hendehors //Non vaut TANTQUE Hendehors=Faux ???
    J'ai déjà essayer avec = Faux, cela n'enregistre pas et sort directement de la boucle...
    je me demande en effet si vous avez lu la doc. En tout cas, je me pose des questions sur votre niveau de compréhension et je vous invite à lire calmement la doc qui est claire sur cette fonction.
    Dans votre situation, le comportement qui vous étonne est effectivement le comportement attendu.

    Vous testez TANTQUE HEnDehors(Devis).

    Ce code signifie : "tant que je ne trouve pas ce que je cherche", du fait qu’un problème a été détecté, parce que quand votre recherche renvoie "VRAI", cela revient, selon la doc, à une
    tentative de positionnement sur un enregistrement situé en dehors du fichier de données, du filtre, de la vue ou de la requête
    Donc quand la condition HEnDehors est réalisée, vous n’allez pas entrer dans la boucle et le test que vous enchaînez (SI HTrouve(Devis) = Vrai) ne sera pas effectué.

    Au minimum, il faut coder
    TANTQUE HEnDehors(Devis) = Faux, condition qui sera rencontrée, selon la doc,
    si aucun problème n'a été détecté : l'enregistrement en cours appartient au fichier de données, au filtre, à la vue ou à la requête.
    L’exemple donné dans la doc est limpide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HLitPremier(Client, Nom)
    TANTQUE HEnDehors() = Faux
           // Traitement de l'enregistrement
            HLitSuivant(Client, Nom)
    FIN

    Deuxième point, vous devriez essayer de lire strictement ce qu’on vous écrit et d'essayer de le comprendre au sens large au lieu d’être trop pressé, cela irait finalement plus vite (ceci sans agressivité).

    Serendib vous a invité à supprimer votre TANTQUE.

    Pourquoi ? est la question à vous poser avant de vous lancer bille en tête et de tomber non dans « le » panneau parce qu’il ne vous a pas piégé, mais sur un bec de gaz parce que vous n’avez pas (suffisamment) réfléchi et du coup pas compris.
    Ce n'était pas une simple correction de votre code, mais une modification de votre code résultant d'une révision de votre logique, ce qui est beaucoup plus large.

    La réponse est parce que vous n’avez pas besoin d’effectuer un parcours, mais de trouver un et un seul enregistrement comportant le code devis à tester (Devis.NumDevisCom) pour le rejeter.
    Peu importe qu’il y ait éventuellement plusieurs enregistrements avec ce code devis (ce qui est inimaginable si votre code fonctionne, mais leur détection n’est pas la préoccupation en jeu ici), un seul suffit pour savoir qu’il est déjà utilisé.
    Donc, vous ne faites pas de parcours et votre HLitRecherchePremier initial répond à merveille à votre besoin.

    Dans votre cas, selon l’exemple cité dans la doc sur la fonction HLitRecherchePremier :
    Recherche de l'enregistrement
    HLitRecherchePremier(CLIENT, NOM_PRENOM, ["MOULIN", "Françoise"])
    Que je reprends juste pour vous inciter à lire tout cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitRecherchePremier(NumComNumDevis, [Devis.NumCommercial, Devis.NumDevisCom])
    Enfin, troisième point (en bonus), dans la documentation
    - HConstruitValClé,
    - Les clés composées – méthode 2
    - POUR TOUT - 5e syntaxe : parcours avec filtre sur une clé composée
    - HLitRecherchePremier – Notes – Recherche sur une clé composée – 1. Utilisation d’une liste de valeurs
    il est conseillé remplacer HConstruitValClé par un tableau de valeurs et d’effectuer un parcours POUR TOUT avec donc la construction directe de la clé dans la syntaxe de la fonction de filtre ou de recherche (comme repris ci-dessus).

    Ce qui donnerait dans votre contexte,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POURTOUT Devis avec NumComNumDevis = [Devis.NumCommercial, Devis.NumDevisCom]
    Sans aller plus loin puisque hors de propos comme expliqué ci-dessus.


    Effectuez les tests en respectant strictement les indications de serendib et on verra ce qu’il en est, mais cela devrait fonctionner (sur ce plan-là, s'entend).

    Bon travail et si,si, j'insiste fermement (sinon à quoi bon tant d'explications), bonnes lectures aussi.

    Hemgé

  13. #13
    Membre à l'essai
    Homme Profil pro
    Agent d'étude
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent d'étude
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre aide,
    la solution était finalement simple, après pas mal de recherche:
    HLitRecherchePremier(Devis, NumComNumDevis, [COMBO_Commercial, SAI_NumDevisCom])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	SI HTrouve(Devis) = Vrai ALORS
    			Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    			RepriseSaisie(SAI_NumDevisCom)
    Encore merci pour vos conseils

  14. #14
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    997
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 997
    Points : 2 520
    Points
    2 520
    Par défaut
    Citation Envoyé par Mophus Voir le message
    Merci pour votre aide,
    la solution était finalement simple, après pas mal de recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HLitRecherchePremier(Devis, NumComNumDevis, [COMBO_Commercial, SAI_NumDevisCom])
    	SI HTrouve(Devis) = Vrai ALORS
    			Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    			RepriseSaisie(SAI_NumDevisCom)
    Encore merci pour vos conseils
    le 14/11/2015 à 14h07, j'écrivais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     SI HTrouve(Devis) = Vrai ALORS
    Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    RepriseSaisie(SAI_NumDevisCom)
    SINON
    .... (Traitement d'enregistrement)
    FIN
    et tu dis : "après pas mal de recherche" le 5 décembre !
    3 semaines de perdues, donc...

    Il faut tout de même apprendre à lire les réponses qui vous sont faites.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    HConstruitValClé(Devis,NumComNumDevis,Devis.NumCommercial, Devis.NumDevisCom)
    HLitRecherchePremier(Devis, NumComNumDevis, Devis.NumComNumDevis)
     
    	TANTQUE HEnDehors(Devis)
    		SI HTrouve(Devis) = Vrai ALORS
    		Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    		RepriseSaisie(SAI_NumDevisCom)
    		SINON
                    .... (Traitement d'enregistrement)
                   FIN
    HLitSuivant(Devis,NumComNumDevis)
    FIN
    Je te conseil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Si HLitRecherchePremier(Devis, NumComNumDevis, [Devis.NumCommercial, Devis.NumDevisCom]) Alors
    	Info("Le numéro de devis a déjà été saisi,choisissez un nouveau numéro de devis")
    	RepriseSaisie(SAI_NumDevisCom)
    Sinon
    	(Traitement d'enregistrement)
    Fin
    HLitRecherchePremier renvoie vrai s'il trouve un enregistrement correspondant.
    Tu peux faire une clé composé avec les crochets.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/12/2011, 11h18
  2. Réponses: 8
    Dernier message: 10/09/2004, 17h30
  3. [C#] OnPaint(PaintEventArgs e) sur création Composant
    Par pc152 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/08/2004, 16h13
  4. Recherche sur champ calculé
    Par srvremi dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 14h04
  5. Recherche d'un composant cadre
    Par Gwipi dans le forum Composants
    Réponses: 2
    Dernier message: 28/04/2004, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo