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

4D Discussion :

Aide pour un novice


Sujet :

4D

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 36
    Points
    36
    Par défaut Aide pour un novice
    Bonjour,

    j'ai un formulaire avec un champ alphanumérique "x" lorsque que je rentre des caractères dans ce champs je voudrais aller vérifier dans l'enssemble de la base si un dossier avec les même caractères n'est pas déjà existant.

    Pouvez vous m'éclairer?

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Bonjour,

    je pense qu'il n'y a pas de réponses car il y a risque de confusion avec la terminologie utilisée dans le message.
    Donc, si j'ai bien compris, l'objectif est de rechercher si dans la base, dans toutes les tables, tous les champs, l'information qui vient d'être saisie existe déjà ou pas. Est-ce la bonne question.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Pour résumé a chaque fois que l'utilisateur rentre une lettre tu voudrai donc recupérer le contenu du champ et verifier l'existance ou non de cette chaine dans le nom des dossiers contenu dans ton .4dbase?

    Si c'est le cas dans la methode objet de ta zone de saisie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $evt:=evenement formulaire
    au cas ou
       :($evt=sur données modifiées)
          $valeur=lire texte edite
          liste des dossiers(Dossier 4D(Dossier base);$tabDossier)
          $pos:=chercher dans tableau($tabDossier;"@"+$valeur+"@")
          si($pos#-1)
             alerte($tabDossier{$pos})
          fin de si
    fin de cas
    Bonne continuation

  4. #4
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Juste un détail, chercher dans tableau retourne -1 si non trouvé donc il faut changer dans la méthode de #0 par #-1

    A +

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    hop voila corrigé désolé mais on ne peu pas tout retenir non plus

  6. #6
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Voilà un bout de code pour t'aider.
    1- Code a mettre dans le champ initial
    C_ENTIER LONG($evt)

    $evt:=Evenement formulaire
    Au cas ou
    : ($evt=Sur données modifiées )
    Si (P_ControleUnicite (Lire texte edite;Table du formulaire courant;Self))

    ALERTE("cela existe déjà quelque part")

    Fin de si

    Fin de cas
    Voici le code correspondant à la méthode P_ControleUnicite.

    **` reception en parametre
    **` $1 le texte a rechercher
    **` $2 un pointeur sur la table d'origine
    **` $3 un pointeur sur le champ d'origine
    **` on renvoi vrai si on trouve ce texte quelque part
    C_TEXTE($1)
    C_POINTEUR($2;$3)
    C_BOOLEEN($0)
    C_ENTIER LONG($NumTable;$NumChamp;$i;$j;$k;$pos;$type)
    $0:=Faux
    $NumTable:=Table($2)
    $NumChamp:=Champ($3)
    ` on bboucle sur toutes les tables
    Boucle ($i;1;Nombre de tables)
    TOUT SELECTIONNER($2->)
    ` on boucle sur tout les enreg
    Boucle ($j;1;Enregistrements trouves($2->))
    ` on boucle pour chaque enreg sur tous les champs
    Boucle ($k;1;Nombre de champs($i))

    Si (($i=$NumTable)*&*($k=$NumChamp))
    **` si table / champ d'origine, je ne fais rien (je suis sur de trouver la même chose

    Sinon
    ` on prend le type car pas la peine de chercher du texte dans champ de type Entier, date, image.....
    LIRE PROPRIETES CHAMP($i;$k;$Type)
    Si (($type=Est un champ alpha )*|*($Type=Est un texte ))
    ` on regarde si on trouve le texte
    $pos:=Position($1;Champ($i;$k)->)
    Si ($pos#0)**` on en a trouvé (postion renvoi 0 si pas trouvé
    ` on mets tous les compteurs de boucle au maxi pour stopper le traitement
    $i:=Nombre de tables
    $j:=Enregistrements trouves($2->)
    $k:=Nombre de champs($i)
    ` on libere les enreg
    REDUIRE SELECTION($2->;0)
    ` on retourne vrai
    $0:=Vrai
    Fin de si
    Fin de si
    Fin de si
    Fin de boucle
    LIBERER ENREGISTREMENT($2->)
    ENREGISTREMENT SUIVANT($2->)

    Fin de boucle

    Fin de boucle
    Bien que cela fonctionne, je ne mettrais pas cela en place car chaque que le gars change la donnée et tabule, tu vas lancer le Ctrl. De plus, en client/serveur si beaucoup de tables, de champ et d'enregistrements cela va être relativement gourmand.

    A +

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 36
    Points
    36
    Par défaut je n'arrive pas
    >En fait je gères des numéro de série dans un champs alphanumérique.

    Par exemple champs S/N: W45xxxxxxxxxx

    Je voudrais lors de la création d'une nouvelle fiche faire vérifier après avoir rentré un numéro de série, qu'il n'existe pas déjà dans une autre fiche.

    Si quelqu'un à une manière simple de le faire.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 63
    Points : 62
    Points
    62
    Par défaut
    Methode que tu peux mettre danston bouton valider qui par défaut ne doit plus avoir d'action (propriétés de bouton).


    Est ce que tu gères un identifiant unique pour chaque fiche ?
    Je suppose que oui.

    `Sauvegarde des données de la fiche encours pour recherche
    $NumIdentFich:=[Table]NumIdentifiant
    $NumVersion:=[Table]NumVersion `-> Champ de ton formulaire de saisie

    `Pour ne par perdre la saisie de l'enregistrement en cours
    empiler enregistrement([Table])

    chercher([Table];[Table]NumVersion=$NumVersion;*)
    chercher([Table];&;[Table]NumIdentifiant#$NumIdentFich)
    si (enregistrements trouves([Table])>0)
    alerte("Numéro de version "+$NumVersion+" déja existant")
    depiler enregistrement([Table])
    sinon
    depiler enregistrement([Table])
    valider
    fin de si

    Essayes déjà ça et regarde si ça te va.

Discussions similaires

  1. Aide pour un novice
    Par bbjodel83 dans le forum Bibliothèques
    Réponses: 8
    Dernier message: 06/06/2012, 19h03
  2. Réponses: 9
    Dernier message: 01/12/2010, 06h24
  3. Réponses: 3
    Dernier message: 01/11/2008, 18h35
  4. Réponses: 3
    Dernier message: 24/05/2007, 16h46
  5. Novice cherche de l'aide pour diaporama
    Par john38 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/07/2006, 19h16

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