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 :

variable champ date


Sujet :

4D

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut variable champ date
    bonjour,
    j'effectue des opérations la champs de type date, mais mon pb est que la variable passé en parametre et la champ de type date ne peut fonctionné ensemble.
    je fais une comparaison etre la variable et le champ, mais il ne fonctionne pas bien
    Date Ex:=Demander(" Veuillez saisir la Date des Examens ?";Chaine(Date du jour))
    ALERTE(Date Ex)
    Si (ok=1)
    ALERTE(Date Ex+" "+" 2F")

    TOUT SELECTIONNER([Externes])
    tai:=Chaine(Enregistrements trouves([Externes]))
    ALERTE(tai+"Nb Externe "+Date Ex+" "+"3F")
    ALERTE(Date ex+" "+"4F")
    Datee:=Date(Date Ex)

    CHERCHER([Externes];[Externes]Ext_Date=Date Ex)
    Si (Enregistrements trouves([Externes])#0)
    ALERTE(Date Ex+" "+"5F"+Chaine(Enregistrements trouves([Externes]))+" dont la date ="+Date Ex)
    SELECTION VERS TABLEAU([Externes]Ext_Num;text_num)
    TRIER TABLEAU(text_num;>)
    repo:=Taille tableau(text_num)
    ALERTE(Chaine(repo))
    TOUT SELECTIONNER([Externes_Actes])
    CHERCHER PAR TABLEAU([Externes_Actes]Ext_Num;text_num)

    Sinon

    Fin de si

    Fin de si

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Bonjour,

    Et la bonne année à tout le monde !

    J'ai un peu de mal à relire ce code : peux-tu être plus explicite sur la ligne quik ne marche pas ?

    Thibaud

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    Si la variable Date Ex est une chaîne et que le champ Ext_Date est une date, alors cette ligne :
    CHERCHER([Externes];[Externes]Ext_Date=Date Ex)
    renvoie probablement une erreur de type incompatible.

    Essaye :
    CHERCHER([Externes];[Externes]Ext_Date=Date(Date Ex))

    ou :
    CHERCHER([Externes];[Externes]Ext_Date=Datee)
    puisque tu as déjà la ligne
    Datee:=Date(Date Ex)
    dans ton code.
    --Steph4D

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut toujours, des 00/00/00 sauf si je transforme le date en caractere, bizare
    bonsoir,
    Malheureusement,
    qaund je confirme la chaine en date, il affiche toujours "00/00/00" alors il a fallu que je transforme le champ date de la table en chaine, en ce moment il marche, mais il n'est pas possible d'effectuer des opertions (-;+;etc) sur ce type). Bizar, il fallu que je procede comme tel.
    mon champ date est affiché en jj/mm/aaaa, et je sais pas si c'est cela le problème, ( date court et spécial forcé)
    J’ai créé d’abord un formulaire de recherche sur lequel je saisi la date de début de la semaine et fin de la semaine nommée respectivement dans 2 variables :
    Dsemaine:=Chaine(Date du jour)
    Et
    Fsemaine:=Chaine(Date du jour)

    Sur cette fenêtre j’ai créé un bouton de recherche dont le code est le suivant :
    `selection de la table
    TOUT SELECTIONNER([Externes])
    `recherche dans la table en transformant le champ Ext_Date en chaine de caractère
    CHERCHER PAR FORMULE([Externes];Chaine([Externes]Ext_Date)>=Dsemaine;*)
    CHERCHER PAR FORMULE([Externes];Chaine([Externes]Ext_Date)<=Fsemaine)
    `verification si il ya des enregistrements
    Si (Enregistrements trouves([Externes])#0)
    SELECTION VERS TABLEAU([Externes]Ext_Num;tnum)
    TRIER TABLEAU(tnum;>)
    ` une recherche par tableau
    TOUT SELECTIONNER([Externes_Actes])
    CHERCHER PAR TABLEAU([Externes_Actes]Ext_Num;tnum)
    Sinon
    `un beep s il ya pas d’enregistrements
    BEEP
    Fin de si

    NE PAS VALIDER
    Ce code se trouve sur le bouton du formulaire sortie dans lequel s’affiche les informations
    `créer une zone à l'écran destinée à afficher le formulaire
    NumFenetre:=Creer fenetre formulaire([INTERFACE];"RechercheSemaine";Fenêtre palette ;Centrée horizontalement ;Centrée verticalement )

    `afficher le contenu du formulaire recherche dans la fenêtre créée ci-dessus
    DIALOGUE([INTERFACE];"RechercheSemaine")

    `la recherche étant effectuée, on peut refermer la fenêtre
    FERMER FENETRE(NumFenetre))

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Bonjour la foule,

    Une recherche sur un champ date, ma foi, ça marche. En tout cas, dans toutes "mes" applications en cours, ça marche. Laisse le champ de ta table en date, il n'y a aucune raison de le changer.

    Avant tout, juste pour dire, évite les espaces dans les noms des objets. Par exemple, au lieu de Date ex, choisi Date_ex. Surtout si le nom inclus aussi un mot clef de 4D (ici, Date). Si vraiment tu aimes les espaces, alors ajoute un underscore dans le mot clef, genre _Date ex. (moi, j'aime pas les espaces surtout parce qu'on ne peut pas selectionner l'objet par double-clic).

    Ensuite, sur ton code, voici ce que je ferai.

    1/ Declaration explicite en date de tes champs et de tes deux variables (plutôt qu'en chaine)
    C_DATE(Dsemaine;Fsemaine), avec initialisaton à la date du jour (sans passer par Chaine, du coup :
    Dsemaine:=Date du jour
    Fsemaine:=Dsemaine

    2/ Le TOUT SELECTIONNER ne sert à rien du tout dans ton cas. Cf. la doc de cette commande : elle crée une sélection contenant tous les enregistrements de la table. Puisque tu vas faire des recherches dans cette table, c'est complètement inutile. Ca me rappelle un stagiaire qui écrivait gaiement...
    CHERCHER(...)
    TOUT SELECTIONNER
    SUPPRIMER SELECTION
    .. dans un code censé supprimer uniquement des anciens enregistrements. IL croyait qu'il fallait TOUT SELECTIONNER avant d'agir sur la table, ça doit être ton cas, mais c'est pas ça du tout.

    3/ Les choses étant typées correctement, inutile de CHERCHER PAR FORMULE. Écris donc simplement :
    CHERCHER ([Externes];[Externes]Ext_Date>=Dsemaine;*)
    CHERCHER ([Externes];& [Externes]Ext_Date<=Fsemaine)

    4/ Tu auras peut-être remarqué que j'ai utilisé un "&" dans la seconde ligne de recherche. C'est mieux de mettre un opérateur quand il y a plus d'une ligne de recherche

    5/ Il y a deux lignes en trop ici :
    TRIER TABLEAU(tnum;>)
    TOUT SELECTIONNER([Externes_Actes])
    CHERCHER PAR TABLEAU([Externes_Actes]Ext_Num;tnum)

    ce sont les deux premières. TOUT SELECTIONNER parce que cf. 2/, et TRIER TABLEAU parce que CHERCHER PAR TABLEAU ne renvoie pas une sélection triée. Cela étant dit, je n'ai jamais fait de test pour voir si un tableau pré-trié pouvait accélerer un peu la recherche.

    6/ Puisque ton champ [Externes]Ext_Date aura été typé, retypé et encore retypé, il est préférable de demander à 4D de recalculer toutes les valeurs pour être sur que l'index (si le champ est in dexé) et les valeurs stockées soient à jour au moment de la recherche :
    ` si besoin : LECTURE ECRITURE([Externes])
    TOUT SELECTIONNER([Externes]) ` ici, il le faut ce TOUT SELECTIONNER ;-)
    APPLIQUER A SELECTION([Externes];[Externes]Ext:=[Externes]Ext)

    ET là, ça doit marcher !

    Thibaud

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut Resolu
    Bjr, Mes excuse pour mon affolement et mon inattention.
    j'avais type depuis la création et le stockage des données.
    d'un autre coté, c'est une ancienne base recupere à partir de MS Access, et je suis entrain de changer au futur et à mesure les noms des champs.
    Merci
    Je vous remercie pleinement, j'étais perdu et c'est ma premiere base sous 4D.

    effectivement la recherche et l'extraction ont marché avec votre methode, merci,

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

Discussions similaires

  1. [AC-2013] Table variable en fonction d'un champ date
    Par choupi_oc dans le forum Access
    Réponses: 4
    Dernier message: 20/10/2014, 15h40
  2. Réponses: 2
    Dernier message: 08/07/2013, 14h39
  3. Affecter variable champs
    Par pete007 dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2004, 17h33
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 17h56
  5. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 10h47

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